keyfuzz 0.2

Copyright 2004-2006 Lennart Poettering <mzxrlshmm (at) 0pointer (dot) de>


This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.


Tue Jan 14 2006:

Version 0.2 released, include one more keyfuzz definition file.

Sun Jan 25 2004:

Version 0.1 released, initial release.


You may use keyfuzz to manipulate the scancode/keycode translation tables of keyboard drivers supporting the Linux input layer API (as included in Linux 2.6). This is useful for fixing the translation tables of multimedia keyboards or laptop keyboards with special keys. keyfuzz is not a daemon like Gnome acme which reacts on special hotkeys but a tool to make non-standard keyboards compatible with such daemons. keyfuzz should be run once at boot time, the modifications it makes stay active after the tool quits until reboot. keyfuzz does not interact directly with XFree86. However, newer releases of the latter (4.1 and above) rely on the Linux input API, so they take advantage of the fixed translation tables.

The distribution includes scancode tables for Medion 9580F and MSI S270 laptops. Feel free to send me scancodes table, I will integrate them into my package!

Current Status

Version 0.2 is more or less stable and feature complete.


Have a look on the man page keyfuzz(8). (An XSLT capable browser is required)

Scancode tables assign scancodes to keycodes. If you don't now what scancodes or keycodes are, read about it in the relevant HOWTOs or FAQs available from the Linux Documentation Project.

The primary target of keyfuzz is to patch scancode/keycode definitions for special multimedia keys into the current scancode table of a device. An example for such a patch table is the following file medion_9580f.keyfuzz, which is relevant for the Medion 9580F laptop which has four special multimedia keys:

# Mail
0x67	155

# World Wide Web
0x63	150

# Program #1
0x66	148

# Program #2
0x69	149

Activate this file with the following command:

keyfuzz -s < medion_9580f.keyfuzz

This assigns the scancode 0x67 to the keycode 155 and so on. For a list of available keycodes have look on the KEY_xxx constant definitions in /usr/include/linux/input.h. The scancodes are keyboard specific. You may use the (console specific) utility showkey(1) to examine the scancode/keycode of a key. Another way to get the scancodes of special keys is to look for kernel debug messages like these if you press the relevant keys:

atkbd.c: Unknown key pressed (translated set 2, code 0x66 on isa0060/serio0).
atkbd.c: Unknown key released (translated set 2, code 0x66 on isa0060/serio0).

Feel free to to send me patch tables for your hardware. I'll add them to my to distribution.

The keyfuzz distribution includes a SysV init script which runs keyfuzz -s for all configured input devices depending on files or symbolics links named after the devices in /etc/keyfuzz. If you want to use this script, just create a symlink /etc/keyfuzz/event0 to a scancode table file (e.g. /etc/keyfuzz/medion_9580f.keyfuzz). The scancode table of the device /dev/input/event0 is modified according to the contents of that file on each boot:

cd /etc/keyfuzz
ln -s medion_9580f.keyfuzz event0

The virtual file /proc/bus/input/devices lists all available input devices.


keyfuzz requires a kernel supporting the Linux input layer, such as 2.6.1.


As this package is made with the GNU autotools you should run ./configure inside the distribution directory for configuring the source tree. After that you should run make for compilation and make install (as root) for installation of keyfuzz.


None so far


The newest release is always available from

The current release is 0.2

Get keyfuzz's development sources from the Subversion repository (viewcvs):

svn checkout svn:// keyfuzz

You may find an up to date Debian package of keyfuzz in my own Debian package repository.

If you want to be notified whenever I release a new version of this software use the subscription feature of Freshmeat.

Lennart Poettering <mzxrlshmm (at) 0pointer (dot) de>, January 2006
$Id: 14 2006-02-14 16:25:13Z lennart $