Gizmo Daemon

Home News About Download Documentation Forums Bug Tracker Donations

July 04 2009 -- 3.5 Released!

This is mostly a bugfix / maintenance release for changes to gcc in versions 4.3 and 4.4. There are also a couple of minor bug fixes as well as some fixes for 64 bit compilation.

Ubuntu packages will likely be available in 9.10.


Jan 28 2008 -- 3.4 Ubuntu AMD64 Packages Available

Thanks to a kind user submission Ubuntu 7.10 AMD64 packages are now available!


November 13 2007 -- 3.4 Ubuntu Packages Available

Ubuntu 7.10 x86 packages are now available! Make sure to download both the gizmod and libgizmod debs.


November 07 2007 -- Gizmod 3.4

This is mostly a bug fix release for an issue that cropped up with recent versions of xorg where Gizmod would spike the CPU for long periods of time, however there are a number of other efficiency fixes as well meaning CPU usage has been decreased across the board. In addition to the fixes come a few new features including:

  • Better support for device matching by product and vendor ID codes. If you have one of those hard to identify devices that describes itself with some generic (or empty) device string, this should help.
  • initial support for the Logitech Momo racing wheel! Actually currently just the pedals -- you can now use the gas pedal to scroll down, and the brake to scroll up. And, of course, the scrolling speed is dependant on how much you depress the pedals.
  • New CMake based build system that should help alleviate some of the compilation issues that revolved around the old autotools based system, specifically with regards to 64 bit supporting library detection.

This release marks the end of official Gentoo support. I've created an updated ebuild for 3.4 that allows building with the new build system, so unless someone offers to take over maintainership of the ebuild consider this the last update to it. I also won't be submitting it to the Sunrise overlay, but if someone else wants to make that happen I'll be glad to assist in any way I can.

Ubuntu 7.10 packages should be available soon! I'll update both this page and the downloads page after the new version has been verified and packaged by the Ubuntu team.

If you're wanting to compile from source, the docs have been updated to reflect the change from autotools to CMake. Building from source is now easier (and faster) than ever! If you encounter any issues with the new build system please head over to the forum and let me know.


July 04 2007 -- Gizmod 3.3 Available in Ubuntu (Gutsy) Universe

Gizmod is now available in the official Ubuntu Universe repository (Gutsty Gibbon)! This means super easy installations for all you Ubuntu users. Install instructions can be found here.


June 30 2007 -- Gizmod 3.3 Available in Gentoo's Sunrise Overalay

The Gizmod 3.3 Ebuild has been reviewed and accepted into the official Gentoo Sunrise Overlay. Install instructions can be found here.


June 27 2007 -- Gizmod 3.3

This release is mostly in response to feature requests from users. There are a couple of minor bugfixes, but most of the new features are related to the Python scripting API, so if you're an end user you might not notice the difference between this release and the last (unless you use Beryl and have a Powermate). At any rate here's a list of what's new to play with:

  • New Powermate setRotateSensitivity command for changing the sensitivity of the dial. There's also a global variable in GizmoDeviceStrings.py for this.
  • Added a "ClickTime" property to the GizmoEventPowermate class. This means the duration of the click (how long the user pressed the Powermate's button) can be easily captured inside Python.
  • Added a new event for differentiating Powermate button "timeouts" from regular clicks. This allows the button to be used for more things simultaneously.
  • Added a new script for Beryl that makes use of the Powermate button timeout. If a "timeout" on the button is detected (ie, the user holds the dial for a short period without releasing it, and they don't turn it), then the Beryl desktop cube will "unfold".
  • Added a new GizmodTimer class to have nice timer support in the Python scripts. (Regular Python timers don't work so well in the embedded situation).
  • Added the ability for remotes to send "Alt-Tab" events to window managers with use of a single button. This may seem trivial at first, but it was only possible after the addition of GizmodTimer. Also added a new base script called GizmoScriptAltTabber that any script can inherit if it wants to sent Alt-Tab events.

June 8 2007 -- Gizmod 3.2 Available in Gentoo's Sunrise Overalay

The Gizmod 3.2 Ebuild has been reviewed and accepted into the official Gentoo Sunrise Overlay. Install instructions can be found here.


June 3 2007 -- Gizmod 3.2

This is largely a maintenance release, and is in response to some issues that have been discovered by the Ubuntu MOTU team when trying to produce and official package for Gutsy. As a result of this comes some 64-bit fixes and configure script updates.

Along with these minor changes I've also revamped the script API yet again. It's even more Pythonic, and it's now much easier to create custom device / application scripts. There are some base classes that scripts can inherit from to gain desired functionality. For example if a device script needs a particular application to be focused it can simply inherit the "GizmoScriptActiveApplication" class and that functionality is automatically included.

Also, you can now send keyboard events (with modifiers) in a single line. Ie, to send a CTRL-ALT-TAB: Device.createEvent(GizmoEventType.EV_KEY, GizmoKey.KEY_TAB, [GizmoKey.KEY_LEFTCTRL, GizmoKey.KEY_LEFTALT]).

And, as usual, there are a few bug fixes as well. This is definitely the most stable release of Gizmod yet!

Thanks go out to everyone for this release, but I'd like to send out shouts to Pricey from Ubuntu for his hard work in helping getting official Ubuntu packages for Gizmod.


May 17 2007 -- Gizmod 3.1

Close on the heels of the G3 release, comes Gizmo Daemon v3.1. This is primarily in response to some build and configure bugs that were present in 3.0, however there are some new features that made me want to push this out so quickly:

  • Keyboard LED visualizations -- Now everyone can enjoy Gizmod's visualization capabilities. The default is to visualize CPU usage on the keyboard LEDs, except when system volume or muting events are detected, in which case the LEDs will briefly show the volume. Everyone can also make use of the Amarok plugin now, as the Keyboard LEDs will blink in time to music when the plugin is enabled. For more info see the Keyboard LED HOWTO.
  • There's also a new Visualization scripting API that should make it easy to create new visualizations and have them work across all visualization capable devices.
  • Remote Control mode -- you can now fully remote control one computer with another. For more info see the Remote Control HOWTO.
  • The config scripts can be reloaded by sending Gizmod a HUP signal. Currently this generates some warnings, and is considered an experimental feature as it requires further support from the Boost Python libraries. Hopefully the next version of Boost will fix this, and I can remove the experimental status. For now though, it does appear to work fine, despite the warnings.
  • Powermate LED change events only get sent across the USB bus when absolutely necessary.
  • One major segfault bugfix, and several smaller bugfixes as reported by users from the initial 3.0 release. This includes some build and configure bugs, but if anyone still experiences problems compiling Gizmod please let me know!

May 09 2007 -- G3!

Gizmod 3.0 is here!

G3 has been rebuilt from the ground up. The primary focus on version 3 was to make the configuration scripts much more manageable, and easy to understand. The new script system is highly modular, as there's a different config script for each device mapping. There's also a prioritization system (which resembles the sysv init scheme), so that it's easy to specify per-application event mappings and still have a default mapping that applies when no other mappings do. Because of the new modularity modifying and creating new device / application mapping should be easier than ever. A lot of work has been put into documentation as well, so now there's a complete set of API docs available for all you would be scripters.

XMMS and BMP support has fallen by the wayside in favor of Amarok, so now all you PowerMate users can visualize music on the LEDs with Amarok. There are numerous fixes to the PowerMate support and API (too many to list). PowerMate visualization should work without any user configuration, and defaults to visualizing system CPU usage on the LED(s), unless you're listening to music, in which case it visualizes the music. And, as with G2, when you change the system volume the current LED visualization is interrupted for a short time to show the volume / mute status. There are a number of fixes for users with multiple PowerMate's as well such as the ability to visualize different music channels and CPUs on different PowerMates. Moreover, the visualization system is implemented in a Python script so it itself is user configurable as well!

Also, a number of fixes for remote users. A new "stray button" detection scheme means that remote over-sensitivity is pretty much a thing of the past. Currently out-of-the-box support is available for the ATI X10 / StreamZap based remotes, as well as the LIRC Hauppauge, and MCEUSB/2 based remotes. And, adding new remotes is easier than ever thanks to the new modular script system, but if you've got an unsupported remote, please contact me!

Also making a reappearance is client / server support! This time, done properly. Any and all events can be transmitted over a network, and there are a number of options available for different usage scenarios. You can have a client operating as a server as well, or only as a client (ie just transmitting events, not processing them locally), or anything in between. I have a USB (MCEUSB2 based) remote that doesn't work on my media PC due to USB driver incompatibilities, so I have it plugged into another computer which relays the events over the network, thus providing seamless remote control support to the machine that can't use the remote.

My original intent with G3 was to supply a "macro recording" system so that non-Python hackers could easily create their own device mappings. This is still on the TODO list but the redesign has worked out so well that I think it warrants release now. I also believe that the new script system should make it easy enough for even novices (with only minor exposure to programming concepts) to create their own device mappings.

So try out G3, head on over to the forums, and let me know what your thoughts are. And finally... thanks to everyone who helped with G3, especially the poor people who've been helping me in beta testing -- appreciated!

I should also like to mention the new Wiki -- I'm hoping it'll become the source of information that everyone seemed to wish they had. Already it should prove useful for people wanting to get started with G3.


March 12 2007 -- Unmaintained!

I've been getting quite a few emails about Gizmod lately, and even a few patches. Thanks to everyone who's working with Gizmod, and for all of your suggestions as well! Unfortunately my other life commitments (work and school) are taking up a lot of right now, and I simply don't have the resources to work on Gizmod right now. I can barely find time to keep up with regular email let alone answer technical questions and so forth.

Having said that I want to say that I'm still committed to improving Gizmod, and I've got some great ideas for version 3, which I should be able to start on in a couple of months, after school is done for the year. First of all, the focus is going to be on ease of use, rather than extreme flexibility. I'll be going for auto-magic configuration wherever possible, but I still want the program to give users the ability to manually tweak config files if desired.

I'm contemplating a bunch of things right now, but mostly the following two are on my mind: a GUI, and dropping Python support. I'm thinking a simple GUI might be nice for creating custom keymaps. Ie, press a key, define some simple actions, or record a macro, that sort of thing. As for Python scripting. It seemed like a good idea at the time, now it just seems like overkill. Does anyone actually use the Python scripting? I'd love to hear from people if you have thoughts or suggestions for the next version, so please head on over to the thread I started on the forums, and let me know what you think.


May 14 2006 -- Gizmod 2.3!

This is a major bugfix release, and for affected users who were experiencing random segfaults, this release should finally put those to rest.

The problem was with the multithreaded core design of the system -- there were a few concurrency and critical section locking issues that cropped up on systems with specific configurations. I ripped out the multithreading core, and went to a non-blocking single threaded design. This has the added benefit of reducing gizmod's memory and resource utilization slightly.

If you've ever experienced a segfault while running gizmod I highly suggest upgrading as this release will likely eliminate those issues.

Thanks go to a certain user for sending in core dumps and helping with debugging!


Mar 24 2006 -- Gizmod 2.2!

Minor bugfix release. Includes more fixes for gcc4 (now cleanly compiles without any warning on all tested compilers). Also some more fixes for 64 bit users as well.


Feb 21 2006 -- Gizmod 2.1!

This is mainly a maintenance release and fixes all known bugs that came in after the big 2.0 release. The short list includes:

  • Fixes for GCC4. It should compile fine for all you FC4 people now.
  • Fixes for 64 bit users.
  • Distro specific XMMS issues resolved.
  • Many small fixes in the config script, especially relating to the PowerMate, but quite a few in relation to Remotes as well.

There were a couple of new features added too:

  • Added support for the hardware pulsing mode of the Powermate.
  • Added a software pulsing plugin.

The software pulsing plugin is preferred, as the hardware pulsing mode doesn't give any information back about the status of the Powermate's LED. But some users found that their Powermate flickers with the software plugin... thus, hardware pulsing is back for those of you who missed it!


Feb 01 2006 -- Gizmod 2.0!

This is a huge release for Gizmo Daemon and marks some sweeping changes, and marked improvements, along with some new functionality as well. Changes include: lua is no more!! It was dropped in favor of Python. The crazy client / server architecture was ripped out, and has been replaced by a stable and more efficient local userspace daemon.

The Python scripting API is a vast improvement over the Lua one. This was a great move, as Python in inherently more stable than Lua, and allows for much more powerful scripts to be written. As such, the Gizmo Daemon Python API is quite a bit different than the old Lua one. It is now possible to change and control nearly every aspect of how the daemon works, and what the devices do from the script alone. Plugins can even be implemented directly in Python if desired!

As for what's new? This release was mostly meant to simply bring everything from the old Gizmo Daemon up to speed with the new version, however I didn't have it in me to do a release this big without providing something new for people to play with. Gizmod 2 bring support for LIRC devices (mostly remotes) so now those of you with MythTV or other PVR setups that use IR style remotes can benefit from Gizmo Daemon as well!


June 13 2005 -- New Version, Bug Fix, More with RF Remotes!

This is a minor bugfix, and feature release. I found a potential segfault in the Lua script engine, which this release fixes. The problem should be fairly rare, although I still recommend upgrading since I experienced this once.

I have also added some support to the remote script to distinguish between mythfrontend and mplayer. You can now use the mplayer really fast fast-forward features (the ffwd, rwd buttons versus the arrow buttons). I have also set the info button to work in both mplayer and myth. And I've also set the "bookmark" button to toggle subtitles in mplayer.


June 06 2005 -- New Version, Bug Fixes, plus RF Remotes!

For those of you without a remote, this is only a minor bugfix release. Fixes a segfault, and some minor problems with the scripts.

For those of you with a remote that uses the event system (RF Remotes), this release brings significant enhancements. Features include:

  • Out of the box support for the ATI X10 RF Remote
  • Fixes super touchy remote problems (the ATI exhibits this)
  • Allows complete and full key remappings without xmodmap (now you can remap your remote without remapping your keyboard!). Gizmo Daemon can also detect events that X windows cannot, which is very useful for some remotes.
  • Gives per application key mappings! For example, have one mapping for mythfrontend, and another for mplayer or xine.

For more details check out the page on configuring the ATI X10 RF Remote.


June 05 2005 -- Documentation Online!

I have completed most of the documentation, and made it available. Most notable is the Install Guide which should help people compile, install, and use Gizmo Daemon. Even if you've already got a working setup please take the time to look it over, especially the the section on Security Notes!

The only documention left partially incomplete is the script API reference guide. All of the functions are there now, along with the arguments and return values, and about half have complete descriptions. I'll be slowly working away at this, but in the meantime if you don't understand a particular function feel free to email me.


June 04 2005 -- Gizmo Daemon Ready for Testing!

After a lot of work, Gizmo Daemon is finally ready for open testing. If you're a powermated user, then you'll be happy to know Gizmo Daemon includes everything powermated did and much, much more! Pretty much everything you all asked for is already here, minus a few small things.

If you never used powermated or don't have a Griffin PowerMate, don't worry... Gizmo Daemon will still likely make your life a whole lot easier! Either way, here's a quick feature list:

  • Complete plugin architecture implemented for all aspects of the program (including the scripting language!)
  • The configuration file is now done with a script file. Currently the only scripting plugin included is for the Lua programming language, which is a fairly powerful little language, and includes constructs that allows for object oriented, and functional style programming, as well as the more traditional procedural style. Literally anything is possible now!
  • Client / Server model for maximum usability. Want to use a USB device with a computer that has no USB? No problem! (as long as you can network it) Or how about using a Linux input device on a computer without appropriate kernel modules (older Linux box, or even a Sun, *BSD machine). Also due to the client / server model, the daemon can be run at startup, and the client can be launched in the init script for the users session, which alleviates some problems people were having trying to automitically load powermated on startup.
  • Of course, full support is included for the Griffin PowerMate (along with every other device I could find to test with: keyboards, mice, joysticks, even an ATI X10 RF Remote!). For powermated users some new features include: global dial sensitivity, sleep mode pulsing options, and greater control over event modifiers. You can now do crazy things like have events that require strange modifiers such as keyboard combinations, mouse clicks, certain foreground windows, or even events from other devices!
  • For those new to powermated and Gizmo Daemon, who may happen to have a Griffin PowerMate, you'll be able to visualize system events on the PowerMate's LED, including CPU Usage, system mixer volume, sound output from XMMS or BMP, and more!
  • Also new is the ability to control EWMH compliant window managers (for virtual desktop switching).
  • Many new device events can be captured, including literally any device event (every keyboard key, and mouse button even if they aren't supported by X windows!). An event is also generated every time the foreground window changes, which means you'll be able to do fun and strange things when a certain window becomes active. Aside from various questionable uses, I can think of a couple good uses for this. Perhaps when the mouse goes over XMMS, the visualization plugin could be set active, and when it goes away from XMMS a different plugin could be set active. Who knows!
  • Thanks to everyone who sent in suggestions. This release would not be the same without them. So, if you've got suggestions, send em in!