キーボードのAltとSuper(Win)を入れ替える。

昨日Happy Hacking Keyboard Lite2を買った。

今までとWindows用キーボードと同じようにスペースキーのとなりに無変換キー、左Alt、左Superと続いてほしい。

素直にxmodmapで実現できると思ったが修飾キーを変更しようとすると、

$ xmodmap -e 'clear mod2'                                 ~
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  118 (X_SetModifierMapping)
  Value in failed request:  0x17
  Serial number of failed request:  8
  Current serial number in output stream:  8

などとエラーが出てしまう。

これはバグとして報告されてるみたい。
Bug #524774 “xmodmap failure BadValue error, 118 (X_SetModifierM...” : Bugs : xorg-server package : Ubuntu
この12番目のコメント
Comment #12 : Bug #524774 : Bugs : xorg-server package : Ubuntu
を見ると、/usr/share/X11/xkb/keycodes/evdevを編集してキーを入れ替えられたらしい。

結局、/usr/share/X11/xkb/keycodes/evdevを

$ diff /usr/share/X11/xkb/keycodes/evdev evdev_default
11c11
<       <TLDE> = 49;
---
>       <TLDE> = 133;
69c69
<       <LALT> = 64;
---
>       <LALT> = 49;
75c75
<       <LWIN> = 133;
---
>       <LWIN> = 64;

のように変更してログアウトしてからログインするとうまくいった。
全角半角をAltに、Winを全角半角に、AltをWinに変更している。
インプットメソッドの切り替えは変換、無変換キーでやっているので、全角半角キーはあまり使わないのでこれで十分。

Mac Bookでも同じように変更できるかも。