Ubuntu 9.04 で Sticky Shift / SandS

8.10からXのマウス・キーボードドライバが、全自動認識のevdevになったので、9.04とかでは以前の方法では出来ない。

そこで、evdevでのやり方が開発されるまでは、kbdにもどして使う方法でがんばる。

作業内容

例によって、apt-get source xserver-xorg-input-kbd でソースを展開。

以前の記事を参考に、xf86-input-keyboard-1.3.0-mad-key.patch から人間パッチ。ソースの意味が分かれば、気合いでパッチが当てられるはず。

あとは同様にbuildしてインストール。

問題は設定。xorg.confを自分で書く。以下は自分のX61用。

Section "InputDevice"
       Identifier      "Generic Keyboard"
       Driver          "kbd"
       Option          "CoreKeyboard"
       Option          "XkbRules"      "xorg"
       Option          "XkbModel"      "jp106"
       Option          "XkbLayout"     "jp,jp"
       Option          "XkbVariant"    "latin,"
       Option          "XkbOptions"    "grp:alt_shift_toggle,grp_led:scroll"

       # Sticky Shift / SandS の設定

       Option "PseudoModSpace" "50"
#      Option "OneShotCtrl" "9"
#      Option "StickyShift" "on"
EndSection

Section "InputDevice"
       Identifier      "Configured Mouse"
       Driver          "mouse"
       Option          "CorePointer"
       Option          "Device"        "/dev/input/mice"
       Option          "Protocol"      "ImPS/2"
       Option          "Emulate3Buttons"       "true"
       Option          "Emulate3Timeout"       "50"
       Option          "XAxisMapping"          "6 7"
       Option          "ZAxisMapping"          "4 5"
       Option          "EmulateWheel"          "true"
       Option          "EmulateWheelButton"    "2"
EndSection

  : 
  : 下の方
  :

Section "ServerFlags"
        # evdevやめる
        Option      "AutoAddDevices" "false"
EndSection

Section "ServerLayout"
       Identifier      "Default Layout"
       screen 0        "Default Screen" 0 0
       Inputdevice     "Generic Keyboard"
       Inputdevice     "Configured Mouse"
EndSection

あとは、キーコードが evdevとkbdで違うので、xmodmapやvmwareのキーを入れ替えている場合は修正する。自分のところでは、[無変換]と[→]が変わっていた。

すごく便利なので、なるべくこういうハックでない方法で実現できるとうれしい。