どせいたんさき。

ナスダヨー

SandS を linux に導入できる At Home Modifier が大変便利である件

SandS とは

SandS とは Space and Shift の略で,スペースバーを他のキーと同時に押すことによりシフトキーとしてつかえるようになるというキーボードハックを指します.僕が初めてこの機能を知ったのはありえるえりあのmatsuyamaさんの記事でした.SandS を導入することで,親指でシフトキーを扱うことができ小指の体力を温存することができます.特に記号を多用する html や tex ソースを書いているときや大文字を連続で打たなければならないときに,この機能の恩恵を感じています.実際に使ったことがない人はうまくイメージできないかもしれませんが,使い始めるとなぜこの機能が標準で装備されていないのだろうと感じるくらい便利な機能です*1

SandS を導入する方法

当初はキーボードからの入力を hook で横取りして処理するプログラム(ダウンロード元が消失しました)を使っていたのですが, Ubuntu のバージョンアップ(8.04→9.10)とともに動作しなくなったため,キーボードドライバに手を加えるという方法で実現しています.キーボードドライバに加えるパッチはjeneshiccさんのブログにて公開されていたのでそれを利用していました.微妙にバージョンが違うため patch を適応することができず手動 patch をやっていました.

jeneshicc さんが作成したこのパッチは定家さんに引き継がれ At Home Modifier という名前で gitorious にて保守・開発が続けられています(http://gitorious.org/at-home-modifier).おかげさまで常にメンテナンスが行き届いた状態で SandS を使用することができるようになりました.ただし,定家さんによる At Home Modifier は xf86-input-evdev というドライバを書き換えるものですが, Ubuntu が入力に使用しているドライバは xserver-xorg-input-evdev という名前であるため,Ubuntu に導入するためには(おそらく)手動 patch が必要になります.

そうした手動 patch の煩わしいところを済ませたパッケージが Yuri Khan さんによって ppa リポジトリで公開されています.対応しているバージョンは現在 11.10, 12.04 で,すでに最新版にも対応しています.Khan さんの ppa リポジトリを利用して At Home Modifier を利用する方法は以下のとおりです.

$ sudo add-apt-repository ppa:yurivkhan/ahm
$ sudo apt-get update
$ sudo apt-get upgrade 

最後の upgrade 時に xserver-xorg-input-evdev がアップグレードされれば成功です.あとは,設定を有効にするために X の設定ファイルに少々変更を加えます.Readme によれば設定を変更するファイルは xorg.confxorg.conf.d/10-keyboard.conf となっていますが Ubuntu 12.04 では /usr/share/X11/10-evdev.conf になります.このファイルの中にキーボードに対応する部分があるはずなので,そこにちょこっとした変更を加えます.

 Section "InputClass"
     Identifier "evdev keyboard catchall"
     MatchIsKeyboard "on"
     MatchDevicePath "/dev/input/event*"
+    Option "TransMod" "65:50"
     Driver "evdev"
 EndSection

行頭に + がついた部分が追加した内容になります.これにより TransMod という機能が有効になり keycode 65(=Space) が他のキーと同時に押されたときに keycode 50(=LShift) に変化します.これによって SandS が達成されます.細かい設定については At Home Modifier の README を参照してください.

SandS は一度慣れてしまえば大変快適なキーボードハックです.最近シフトキーの押し過ぎで小指が疲れてきたな……と感じる方はぜひ導入を検討してみてください.

*1:効果には個人差があります