Motorola Flipout キーボードカスタマイズ
moved from http://wonderstory.posterous.com/motorola-flipout-3518
ちいささと、ころっとした外見、ぷちぷちした感触のキーボードがだいぶ気に入ってしまって、ローエンド機種だし動作は遅めだし公式アップデートはたぶん来ないけれど、ここのところメイン機になっている Motorola Flipout MB511 ですが、キーボードの設定をいじって文字入力をより快適にしてみました。要root権取得。
けっこう打ちやすい Flipout のキーボードで少し不満なのが、
- Wnn系のIMで、日本語・英語の入力切り替え Shift+Space が押しにくい(Shift が左端にあって中心から遠い)。
- 日本語ではそれなりに使うハイフンが Alt+Z に割り当てられていて、両手の親指でぽちぽち入力するときに動きが大きくて煩わしい。
というところで、どうにかならないかといろいろとAndroidのキーボードカスタマイズ情報を探すと、
/system/usr/keylayout/*.kl
: ハードキーに対応するキーコードを設定/system/usr/keychars/*.kcm.bin
: キーコードに対応して入力される文字を設定
というファイルをいじればよさそうです。 logcat を眺めた感じでは、手持ちの HK版Flipout で使われていたのは次の2つ。本体からコピーしてきます。
sholes-keypad.kl
sholes-keypad.kcm.bin
日本語・英語の入力切り替えをしやすく。 (sholes-keypad.kl)
まず、スペースの右隣に「A|中」という何も反応しないキー(たぶん日本語入力でいうところの文字キー)があるので、それを Shift+Space に割り当てられないかと思ったものの、修飾キーつきの割り当てはファイルをいじるだけでは無理なようでした。
仕方がないので、右手親指だけで スペース+A|中 が押せるのを利用することにして、「A|中」キーには Shift に割り当てることにしました。手の動きが減って、なんとなく手間が減ったような気になれます。
*.kl
ファイルは、単純にスキャンコードとキーコードが並ぶテキストファイルで、キーコードは android.view.KeyEvent
で定義されている定数の先頭(KEYCODE_
)を省いたものを書けるようです。「A|中」キーのスキャンコードは 162 で、これを SHIFT_RIGHT
に変えました。
#key 162 EXPLORER WAKE_DROPPED
key 162 SHIFT_RIGHT WAKE_DROPPED
あと、試しに音量アップキーをカメラキーに置き換えてみました。
#key 115 VOLUME_UP WAKE
key 115 CAMERA WAKE_DROPPED
ハイフンを押しやすい位置に。 (sholes-keypad.kcm.bin)
次に、 Alt+Z にあるハイフンを、比較的押しやすそうなところにあるアンダーバー(Alt+P)と入れ替えることにしました。
*.kcm.bin
ファイルはバイナリエディタで開く必要があります。中身自体は単純な構造ですが、どの値が何に対応しているのかがいまいちわかりにくいです。
0x00-0x1fはヘッダ。0x20以降は、16byteでひとつのキー。最初の2byteが frameworks/base/include/ui/KeycodeLabels.h
というので定義されているラベル(たとえば「P」が「44 = 0x2C」でした)。後ろ8byteが、2byteごとに「通常入力 / Shiftと / Altと / Alt+Shiftと同時入力」に対応。残りはよくわかりません。
ということで、お目当ての Alt+P と Alt+Z に対応している定義を交換しておきます。
0x1D0: 2C00 0000 5000 3700 7000 5000 2D00 0000 | p P -
0x270: 3600 0000 5A00 3900 7A00 5A00 5F00 0000 | z Z _
これで、 Alt+P でUnicodeの 0x002D(-) が、 Alt+Z で 0x005F(_) が入力されるようになります(「2D00」が「0x002D」を表す)。
ついでに、もともと Alt+Shift+. で 0x2026(…) が入力できるようになっていたのをまねして、 Alt+Shift+M で 0x2014(—) を入力できるように設定。
0x1A0: 2900 0000 4D00 3600 6D00 4D00 2C00 1420 | m M , —
ほかにも、キーボードに印字がない文字を適当に割り当てておきました(「|」を Alt+E に、バックスラッシュを Alt+R に)。
本体に書き込み。
できた2つのファイルを USB デバッグモードでつないだ Flipout に送ってシステムに書き込み、再起動すれば完了です。
$ adb push sholes-keypad.kl /sdcard
$ adb push sholes-keypad.kcm.bin /sdcard
$ adb shell
$ su
# mount -o remount,rw /dev/block/mtdblock7 /system
# busybox cp /sdcard/sholes-keypad.kl /system/usr/keylayout
# busybox cp /sdcard/sholes-keypad.kcm.bin /system/usr/keychars
# reboot
より使いやすくなって、ますます愛着がわいてきます。同系統の後継機が出たらうれしいなあ。