Last update: Sat May 23 2020
xbindkeys on savannah.org
If you find xbindkeys a little limited or you hack a lot of scheme for it, maybe
you can have an interest in this
window manager (clfswm).
xbindkeys is a program that allows
you to launch shell commands with your keyboard or your mouse under X Window.
It links commands to keys or mouse buttons, using a configuration file.
It's independant of the window manager and can capture all keyboard keys
(ex: Power, Wake...).
usage: [--version|-V] [--defaults|-d] [--file|-f file] [--help|-h] [--display|-X display-name] [--vebose|-v] [--show|-s] [--key|-k] [--multikey|-mk] [--geometry|-g geom]
||Print version and exit|
||Print a default rc file|
||Use an alternative rc file|
||Set X display to use|
||More information on xbindkeys when it run|
||Show the actual keybinding|
||Identify one key pressed|
||Identify multi key pressed|
||size and position of window open with -k|-mk option|
||don't start as daemon|
Version 1.8.7: Bugfix: Prevent scheme functions to be garbage collected (Thanks Jason Miller)
Version 1.8.6: Bugfix: Do not grab keysym not mapped on keyboard. Prevent a AnyKey grab.
Version 1.8.5: Add support for Guile 2.0 and replace some deprecated functions.
Many thanks to Hans-Peter Deifel.
Version 1.8.4: Fix a memory fault with libX11-1.4.0. Many thanks to Anatoly
Bashmakov and firewalker for the bug report.
Version 1.8.3 : A listen loop was added in the main loop.
This fix a bug where, in the previous version, a keypress was needed to reload the
configuration file after a keybinding change.
Now one can edit the configuration file and keybindings are automatically updated after
each save. Many thanks to Edwin Stang!
Version 1.8.2 : Correction of typos in the man page.
An emphasis is made on the documentation about the guile configuration file
(the prefered way for non trivial configuration).
Many thanks to Brad Sawatzky.
Version 1.8.1 : Better Guile configuration with autotools.
Minor compilation warning have been fixed.
Version 1.8.0 : Enable a full access to the xbindkeys internal from the guile
scheme configuration file. A grabbed key can start a shell command
or run a scheme function. This enable to do more powerfull things
inside xbindkeys whitout the need of an external shell script
(like double click, timed double click or keys combinations).
Version 1.7.4 : xbindkeys.spec: Change Copyright to License.
Little english correction in warnings.
Configuration files are reloaded on the fly when they have
changed so there is no more need to send a HUP signal to reload
Use `scm_c_define_gsubr' instead of 'scm_make_gsubr' with the
Version 1.7.3 : A bug under Solaris was fixed. This bug caused
an XBindKeys built with -DFORK_FLAG=1 to fail to wait for the
processes it spawns, leaving lots of defunct processes.
Thanks to Ciaran Anscomb for the patch.
Version 1.7.2 : Changes to grab keys in all display screens and not only in the
default root window (Xinerama suport).
Bugfix for the Guile support in configure.ac.
Version 1.7.1 : Minor bugfix: Verbose mode is not started as daemon.
Check rc file before starting as daemon (so warning about
configuration files are visible).
Version 1.7.0 : Add guile/scheme configurtion file style (Many thanks to Marcello
Add --file and --file_guile to use alternate configuration file in xbindkeys_show.
Version 1.6.5 : Add a --disable-tk option to prevent xbindkeys_show install.
So no tcl/tk dependency is needed.
Add a NOTE in xbindkeys man page to say that xbindkeys can
reread its config file with a -HUP signal (killall -HUP xbindkeys).
Add two verbose tests (forgotten in other versions).
Version 1.6.4 : Add an option at compile time to launch programs with
a system call instead of a fork+exec call (see ./configure --help).
Remove an umask(022) in the daemonize function which cause troubles.
Version 1.6.3 : Change to switch to autoconf2.5X and automake >= 1.6.
Xbindkeys doesn't move anymore to /tmp after the daemonize function.
Version 1.6.2 : Minor change in the configure.in to prevent rebuild of Makefile
when doing a make.
Version 1.6.1 : Minor bugfix : use strtol instead of atoi for hexadecimal modifier.
Version 1.6.0 : Add a 'Release' modifier to catch release events of keys or
mouse buttons instead of press events.
Xbindkeys doesn't use pthreads+system any more to start commands, it use fork+exec
Some modifications to make the code 'cleaner'.
Version 1.5.5 : better identification of modifiers with --key and
Version 1.5.4 : Add warning when a key is unknown in .xbindkeysrc.
Version 1.5.3 : Bugfix: if the keycode is unknown then xbindkeys doesn't assign a
key with keycode=0.
Change: The default RC file doesn't use the Menu key which caused
Version 1.5.2 : xbindkeys doesn't stop if there is a conflict with another
key grabbing program, the conflicting key is simply ignored.
Version 1.5.1 : New interface for xbindkeys_show.
Version 1.5.0 : xbindkeys is now capable to trigger commands by catching
mouse button events.
Version 1.4.1 : This version solves some minor problems (warnings) when compiling with gcc 3.0.4 under Linux.
Version 1.4.0 : By default :
xbindkeys starts as daemon (use -n | --nodaemon option to prevent this feature).
xbindkeys use pthreads to start multi commands at the same time (use
./configure --disable-pthread to prevent this feature).
Version 1.3.0 : By default, xbindkeys does not anymore pay attention to
the NumLock, ScrollLock and CapsLock modifiers.
Version 1.2.2 : Rewrite of code for reading the configuration file.
No changes for the end user.
Version 1.2.1 : As xbindkeys is now looking for HUP signals you can reload
the configuration with the simple command:
killall -HUP xbindkeys
See the ChangeLog for more details.
The source :
xbindkeys is hosted on savannah.
You can browse its source code here.
You can use git to get the last version with a command like this:
The Debian package :
git clone git://git.savannah.nongnu.org/xbindkeys.git/
The SPARC/Solaris 2.5-10 and x86/Solaris 8-10 packages :
- Download the source (See the download section).
- Open a text console (for example, xterm).
- Change to the directory into which you downloaded the source.
- Uncompress the source :
tar xzvf xbindkeys-1.x.x.tar.gz
- Change to the new directory (created by tar) :
- Configure xbindkeys :
or ./configure --prefix=/where/you/want/to/install/xbindkeys
or ./configure --disable-guile
if you don't want to use
Note: xbindkeys depends on
unless you disable this feature.
- Compile the program :
- Install the program (as root if necessary) :
- Configure the program :
see the Configuration section.
- You can now use xbindkeys by typing :
or by loading it automatically when X starts up
by adding the preceeding line to the file $HOME/.xsession.
On Mandrake (and maybe Redhat), this method doesn't works.
Instead you can use : Configuration -> Gnome -> Advanced -> Session -> Startup Programs on Mandrake
or Gnome menu -> Settings -> Session -> Session Properties on Redhat.
xbindkeys uses a configuration file to link a command to a key
on your keyboard.
Usually this (file) is : $HOME/.xbindkeyrc
You can edit it yourself or you can have a default one created by using :
xbindkeys --defaults > $HOME/.xbindkeysrc
Look at this as an example :
xbindkeys_show You can anytime use the program
This opens a window showing you all the commands and the keys linked
to them by xbindkeys.
(xbindkeys_show comes with the xbindkeys archive).
Note: You must have Tcl/Tk installed on your system to use
double_click.sh a little script to enable double click on keys
or mouse buttons.
(thanks to Isak Savo).
xbindkeys is under a GPL license : Don't hesitate to copy it and to
distribute it around yourself.
You can find more information by reading the files
COPYING or COPYING.fr,
or by visiting the site of the
Free Software Foundation.
Any feedback on this program is welcome.
You can join use on the
devel mailing list.
(Thanks Ramon for the translation)