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.

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!

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:

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:

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.

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.