Gizmo Daemon is a userspace utility that makes it easy to control applications, and devices based on input events. For example, a browser window could be scrolled up and down when Gizmod detects up and down events from a joystick. Events can be mapped at the global, or per-application level, which allows devices to behave differently depending on which application the user is currently using. All of the event scripting support comes via the Python programming language, which is easy to read and learn, but also provides enough flexibility that some very complex input scripting solutions can be built with Gizmod.

Gizmo Daemon supports nearly any input device in a generic way, however it has special support for certain types of remotes, and other gizmos such as the Griffin PowerMate USB dial. Currently there is built in support for LIRC remotes, as well as the ATIX10 RF remote. Gizmod's advanced scripting capabilities allows for a more natural use of the remote. For example, gizmod knows which applications are running, so if you press the power button on your remote, and (for example) MythTV isn't running, it will know to launch the MythTV frontend. If it's currently running it will shut it down. Gizmod also has the ability to stop remotes from being overly touchy, and since Gizmo Daemon knows which application is currently being used (and which applications are running), it is easy to build keymappings for applications that don't have direct LIRC support, or don't support LIRC very well. Out of the box, Gizmod will control Amarok if it detects it running (so you can change songs, play, pause, etc with the remote), as well as MythTV, MPlayer, and others.

Gizmod allows system events to be visualized on capable devices (such as the LEDs on most keyboards, and the Griffin PowerMate). When listening to music with Amarok, the Gizmod libVisual plugin will blink the LEDs in time to the music. When not listening to music the device will show the current system CPU usage. Also, at any time if the user changes the system volume the visualization devices will briefly indicate the system volume level.

If Gizmo Daemon detects a PowerMate USB dial it will also let you use the dial to control system volume, or applications (such as Firefox, MythTV, MPlayer, Amarok, etc). Gizmod will even make use of multiple PowerMate's. For example, if it detects more than one it will visualize the left audio channel on one, and the right on another. Similarly with CPU usage -- if there are multiple PowerMate's and you have a multi-processor system, each PowerMate will visualize one CPU / core.

Gizmo Daemon was designed to let users have their input devices control their computer in a way that makes sense to them. The philosophy is simple: let the user decide. Any and all device events are sent to the configuration scripts, and from there the user can decide what should be done with those events. A number of functions are exposed to the scripts which allows the script to interact with any of the loaded device plugins in any way desired.

Some of Gizmo Daemon's capabilities include:

Control any application with any device

Utilize those special keys on your fancy keyboard, even if your X server or terminal doesn't support them! Now you can actually make the volume controls change the volume, or the media buttons control your music player! Set the buttons to launch your favorite programs, switch virtual desktops, or run whatever application you want!

Give per application key mappings, very handy for remote users!

Visualize system events such as CPU Usage, system volume changes, and Amarok sound output on visualization capable devices (such as Keyboards with LEDs, and the Griffin PowerMate USB Dial).

Fix touchy remotes by removing quick duplicate keystrokes

Control system mixer volume

Change virtual desktops

Launch programs

Send keyboard and mouse events to applications

Send device events from one device to another, or create fake device events (control a mouse cursor with a joystick, or keyboard)

Remote control one computer with another

And more! Anything you can think of is probably possible!

Documentation

Head on over to the wiki. If you've read through the docs and still need help feel free to try the forums!

Props

Special thanks to Sowerbutts for the original Griffin PowerMate kernel driver, and userland utils.

More thanks goes out to Torrey Hoffman and Vladimir Dergachev for the ATI X10 RF Remote driver.