   Key code / scan code / key symbol mapping database
   ==================================================

This module provides a database that maps between different
key code / scan code / key symbol sets:

 - Linux evdev
 - OS-X
 - AT Set 1
 - AT Set 2
 - AT Set 3
 - XT
 - Linux XT KBD driver
 - USB HID
 - Win32
 - XWin XT
 - XKBD XT
 - Xorg Evdev
 - Xorg KBD
 - Xorg OS-X
 - XOrg Cygwin
 - RFB

Licensing
---------

The contents of this package are dual licensed under the terms of:

 - GNU General Public License (version 2 or later)
 - 3-clause BSD License

The output files generated by keymap-gen may be distributed & used under
the terms of either of the above licenses.

Data formats
------------

The following output formats are possible

 - Code map

   An array mapping between key code sets values

   Indexes in the array are values from the source code set.
   Entries in the array are values from the target code set


 - Code table

   An array listing all values in a key code set

   Indexes in the array are simply a numeric counter
   Entries in the array are values from the key code set

   The size of the array matches the total number of entries in
   the keycode database.


 - Name map

   An array mapping between key code sets values and names

   Indexes in the array are values from the source code set
   Entries in the array are names from the target code set


 - Name table

   An array listing all names in a key code set

   Indexes in the array are simply a numeric counter
   Entries in the array are values from the key code set

   The size of the array matches the total number of entries in
   the keycode database.


Output languages
----------------

The tool is capable of generating data tables for the following
programming languages / environments

 - Standard C
 - GLib2 (standard C, but with GLib2 data types)
 - Python
 - Perl
 - Rust


Usage
-----

Map values from AT Set 1 to USB HID, generating tables for the
C programming language

 $ keymap-gen --lang stdc code-map data/keymaps.csv atset1 usb

Generate a tables of names for Linux key codes, OS-X key codes,
in python - equivalent array indexes map between the two sets.
A variable name override is used

 $ keymap-gen --varname linux_keycodes --lang stdc \
              code-table data/keymaps.csv linux
 $ keymap-gen --varname osx_keycodes --lang stdc \
              code-table data/keymaps.csv os-x

Generate a mapping from XOrg XWin values to Win32 names

 $ keymap-gen --lang perl name-map data/keymaps.csv xorgxwin win32

Generate a table of names for Linux key codes in Perl

 $ keymap-gen --lang perl name-table data/keymaps.csv linux

