xmodmap broken
Markus Kuhn
Markus.Kuhn at cl.cam.ac.uk
Wed Jul 18 02:32:15 PDT 2007
I used to be able to get the adiaeresis and Adiaeresisa keysyms (German
umlauts) onto the AltGr-a and AltGr-A keys of a UK keyboard with
xmodmap -e 'keysym a = a NoSymbol adiaeresis NoSymbol'
exactly as "man xmodmap" suggests.
However, on modern systems (e.g., openSUSE 10.2 with KDE, Fedora Core 6,
etc.) I discovered only after a lot of experimentation, and no help from
any documentation that I could find, that this line has to be changed to
xmodmap -e 'keysym a = a NoSymbol a NoSymbol adiaeresis Adiaeresis'
In other words, the AltGr level has mysteriously moved from the 3rd and
4th to the 5th and 6th keysym position in .Xmodmap files, and has also
lost the automatic case mapping provided by NoSymbol.
This obviously contradicts what "man xmodmap" claims:
keycode NUMBER = KEYSYMNAME ...
The list of keysyms is assigned to the indicated keycode
(which may be specified in decimal, hex or octal and can be
determined by running the xev program). Up to eight keysyms
may be attached to a key, however the last four are not used
^^^^^^^^^^^^^^^^^^^^^^^^^^^
in any major X server implementation. The first keysym is
used when no modifier key is pressed in conjunction with this
key, the second with Shift, the third when the Mode_switch
key is used with this key and the fourth when both the
Mode_switch and Shift keys are used.
What is going on here? Why does this happen under KDE, but not under fvwm/
Is this a bug in the keyboard code or a bug in the xmodmap manpage?
Where does one start reading documentation these days in order to
understand X11 keyboard handling end-to-end if the man pages are out of
date?
Details:
$ xmodmap -pm
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock
control Control_L (0x25), Control_R (0x6d)
mod1 Alt_L (0x40), Alt_L (0x7d), Meta_L (0x9c)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x73), Super_R (0x74), Super_L (0x7f), Hyper_L (0x80)
mod5 Mode_switch (0x5d), ISO_Level3_Shift (0x7c)
$ sed /etc/X11/xorg.conf -ne '/^Section "InputDevice"/,/^EndSection/p'
Section "InputDevice"
Driver "kbd"
Identifier "Keyboard[0]"
Option "Protocol" "Standard"
Option "XkbLayout" "gb"
Option "XkbModel" "pc105"
Option "XkbRules" "xfree86"
EndSection
[...]
Possibly related:
https://bugzilla.novell.com/show_bug.cgi?id=281965
Markus
--
Markus Kuhn, Computer Laboratory, University of Cambridge
http://www.cl.cam.ac.uk/~mgk25/ || CB3 0FD, Great Britain
More information about the xorg
mailing list