hotkeys - A hotkeys daemon for your Internet/multimedia keyboard in X
This program sits at the back and listens for the "special" hotkeys
that you won’t normally use on your Internet/Multimedia keyboards. The
buttons perform their intended behaviors, such as volume up and down,
mute the speaker, control the backlight, launch applications, etc. The
functions are completely programmable.
It has On-screen display (OSD) to show the volume, program that’s being
started, etc. Most importantly it looks cool.
It features an XML-based keycode configuration file format, which makes
it possible to define the hotkeys to launch any programs you want.
Prints a usage message.
Specify the keyboard type.
Show all supported keyboards, and the code needed for the -t
Turn off or on the on-screen display, default is on if OSD
support is compiled with the program. Valid values for STATE
Set the log level in syslog. LEVEL is a value from 0 to 7. 7
will log all messages.
Specify the device of your CDROM drive, default to /dev/cdrom.
If you give ’none’, CDROM related functions will all be
disabled. You probably need to define it if you are using
Tells hotkeys NOT to fork itself and run in the background.
The short option -b is not backward compatible to version 0.5.6
or before, -b in these versions means run in the background.
This option is mainly for users who run both hotkeys and VMware
at the same time. Since VMware will delete some of the
information from the memory of the X keyboard configuration due
to reasons that I don’t understand, a thread will be created to
restore the necessary information regularly. The default time
interval is 10 seconds. You can specify a time interval as you
like, the value is in seconds. I don’t think this option will
have any side-effect to the operation of VMware, but if you
find that this is not true, please file a bug report. (This
option is just a hack, I will implement a nicer method to
Do not display the splash screen.
1. Acer Airkey III Wireless keyboard
2. Microsoft Internet, Internet Pro, and Natural Pro
3. Memorex MX1998, MX2500 and MX3000 keyboard
4. SK-2500, SK-2501a, SK-2505, SK-2800c, SK-7100, SK-9925 USB
5. Logitech cordless iTouch, Internet, Cordless Desktop keyboard
6. Chicony KBP-8993
7. Compaq KB-9963
9. BTC 9000
10. Process MCK-800
As I have only the Acer wireless keyboard, you can help me to support
other keyboards by sending me the list of keycodes of the hotkeys on
your keyboard. You can do this by using xev. Contact me for the
KEYBOARD DEFINITION FILES
Keycodes and the behavior of the hotkeys are stored in a Keyboard
definition files. Each supported keyboard has such a file placed in
either /usr/local/share/hotkeys or /usr/share/hotkeys, depending on the
installation configuration. For instance, the data of the Acer Wireless
keyboard is stored in the file acerwl.def. Note that the part of the
filename without the extension is the name you give to the -t option.
Keyboard definition files are in XML format, which should be self-
You can create your own definition file and placed it in
$HOME/.hotkeys. Just take the file def/sample.xml or an existing
definition file as an example. User definition files override any
The configuration file is named hotkeys.conf. By default it is
installed in /usr/local/etc (or /etc on Debian). You can also put one
into $HOME/.hotkeys/, which will override the settings in the global
file if one exists. In other words, the order of parsing is the global
file first and then the private one.
The syntax of the file uses the simple key=value pairs. Blank lines and
lines starting with # are ignored. The followings are the valid keys
and their default values (they are subjected to be changed without
prior notice =):
Kbd (no default)
# CDROM device
# ALSA card
# List of ALSA control names, separated by "|"
# audio actions
PrevTrack xmms --rew
Play xmms --play
Stop xmms --stop
Pause xmms --pause
NextTrack xmms --fwd
Rewind (no default yet, suggestion welcome)
Email mozilla -mail
Favorites gnome-moz-remote --remote=openBookmarks
Shell xterm -rv
ScreenSaver xscreensaver-command -activate
NewsReader mozilla -news
Communities mozilla -remote ’openURL(http://slashdot.org)’
Search mozilla -remote ’openURL(http://google.com)’
Idea mozilla -remote ’openURL(http://sourceforge.net)’
Shopping mozilla -remote ’openURL(http://thinkgeek.com)’
Go mozilla -remote ’openURL(http://linux.com)’
# OSD stuffs
(should be aliased to -*-lucidatypewriter-bold-r-normal-*-*-240-*-*-*-*-*-*)
Do not disable the XKEYBOARD extension. For XFree86 3.x, make sure
XkbDisable is not set.
The ALSA control names have to be set to enable using ALSA. Otherwise,
it defaults to using OSS volume control. The ALSA control names are the
same as those used by the amixer(1) program, use "amixer scontrols" to
list. All listed controls will be adjusted at the same time by
Please consult the TODO file.
Please inform me if some of your normal keys lose functionalities after
APM support is highly experimental. I only tested on my desktop and
sometimes it can’t go out from Suspend mode, no response from the
keyboard, mouse, nor the suspend button on the case. Not tested on
notebook (I don’t have one). Note that you need root priviledge to use
the APM functions.
There are probably bugs in the configure.in script.
The error "X Error of failed request: BadValue (integer parameter out
of range for operation)" should have been fixed finally in version
0.5.2. Please report if it spits out this error on your system.
Copyright 2000-2002, Anthony Y P Wong <firstname.lastname@example.org>
Licensed under GNU GPL version 2 or later. This is free software;
see the source for copying conditions. There is NO warranty; not even
for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Anthony Y P Wong, Debian GNU/Linux