08/10/05 15:41:40 EGuRjeo8
PS/2 と USB にそれぞれ US配列のキーボードを差しておきます。
ここで両者の発行するコードを比較します。たとえば右ALT。
コンソールでは、両者のスキャンコードは同一です。(従ってキーコードも同じ)
ところがX上では右ALTのキーコードが
PS/2 が 108
USB が 113
と違っています。XKBのキーコードの定義を見ると、
Alt_R = 108 は /usr/share/X11/xkb/keycodes/evdev に記述があり
Alt_R = 113 は /usr/share/X11/xkb/keycodes/xfree86 に記述があります。
なお 113 は PS/2 の方では Left arrow キーのキーコードになっています。
さてこの状態で Alt_R を Super_R として利用したいものとします。
xmodmap -e 'keysym Alt_R = Super_R'
とすると PS/2 の方だけ反映され、USBの方は Alt_R のままです。そこで
xmodmap -e 'keycode 113 = Super_R'
と直接コード指定すると USBの方も Super_R になってくれますが、今度は
PS/2 で 113 をコードにもつ Left arrow キーまで Super_R になってしまいます。
どうすればよいでしょうか。