Galaxy Nexusのキーボードの設定とかやった

Android4.0は2.3よりも全然まともにキーボードが使えそうな気配がしている(CTRLとかALTのキーが定義されていたりするので)が、たとえばCAPSをCTRLとして使いたいとか半角/全角をESCとして使いたいとかそういうカスタマイズをぜひやりたいと思って調べたところ、キーレイアウトファイル(.klというsuffixのファイル)を書けばいけそうな感じだったのでやってみた。


Android端末の /system/usr/keylayout/ 配下にはいくつかキーレイアウトファイルが入っている。Generic.klが一番スタンダードなやつで、知らないデバイスだとこいつにfallbackされる感じだ。こいつをいじって、CAPS_LOCKとなっている行をCTRL_LEFTにしてやれば、とりあえずあのいまいましいCAPSがすべてCTRLとして扱われるようになるのだった。ただしROOT権限が必要。


さらに調べたら /data/system/devices/keylayout というディレクトリも検索されることとか、「Vendor_0000_Product_1111.kl」のようにベンダIDとプロダクトIDのファイル名でレイアウトファイルを作れば機種ごとにレイアウトを指定できることがわかった。


そんなわけでポケモンタイピングについていたNintendo Wireless Keyboardの設定ファイルを「Vendor_057e_Product_1001.kl」という名前で作って、「¥」キーがBACKSLASHに、「]」キーをGRAVEに、「半角/全角」キーをESCにすることができた。

しかしせっかく/data/system/devices/keylayout配下に置けばいいよってことになっているのに僕のGalaxy Nexusには/data/system/devicesディレクトリがなくて結局rootじゃないとファイルを置くことができなかった。でも/data下で設定できるのは(wipeすれば初期化できるので)、/systemをいじるより全然安心でいいね。


keychars下のファイルをうまく作ればemacs風のバインド(ctrl+fで右キーと同じ動作になるとか)が実現できるかもしれないと思ってやってみたがそれはできなさそうだった。