Notes for the uninitiated: Creating custom keyboards

Printing geometry

xkbprint reads .xkm files, which are generated by xkbcomp.

xkbcomp reads .xkb files, which are located in the keymap directory. An example of printing a geometry is:

cd /usr/share/X11/xkb/keymap
xkbcomp xfree86 -m dvorak
xkbprint dvorak.xkm

This creates the files dvorak.xkm and

You may get an error such as:

Error:            No Symbols named "pc105" in the include file "us"
                  Abandoning symbols file "us"

This is because keymaps are an obsolete technique for specifying your keyboard to X. As such they have not been maintained as the other directories have evolved. You will have to either track down how the keymap names have changed in the other directories and update the keymap file (usually easy to do with a quick inspection and grep) or write your own little .xkb file (also not too hard to do).

showkey codes are different than xkb keycodes

showkey is used to display keyboard scancodes on the console, for use when creating keymaps for loadkeys. However the scancodes reported by showkey are different than the keycodes xkb reads. To inspect the keycodes as seen by xkb for individual keypresses, use xev from inside X.