Xperia X10 mini proのキーボードをリマップする

ようやくやってきた、Xperia X10 mini pro(長いので、以下U20i)。
初めてのandroid端末に戸惑いつつもいじってる。
タッチパネルに対応できないオールドタイプな私にはフルキーボードは欠かせません。

んで、 リマップのお話。
日本語入力とかはOpenWnnなりSimeji入れれば問題ない。
ただ、IMEがOFFの状態で、”_”が入力できないということが気になった。
キーの数も少ないので、省略されたようなんだが、意外とアカウントIDとかメールアドレスを打つときに面倒。
そんなわけで、キーボードのマッピングを変更したらどうかと。

目標:caps+”-“で_を入力する

まず、最初に目をつけたのが、

/system/usr/keyboard-config/layouts/qwerty-en.xml

のファイル。開けば非常にわかりやすいxmlなので、適当に書き換えて上書きしてみた、が、変わらず。
何が変更されたのかというと、「Default Input」というIMEを使用したときのキーマッピング。
まあ、日本語ないし、即無効にしていたので気がつくまで時間がかかった。
というわけで失敗。

どうすればいいかなーと適当に検索してみると、Android – Porting Guideという記事を発見。
とりあえず、

/system/usr/keychars/qwerty.kcm.bin

というファイルだろうということでいじってみた。
たぶん、

0x00-0x1f    無視
0x20-0x37f  
-0x*0         インデックス(?)
-0x*4         表示されている文字 
-0x*6         fn入力時の文字 
-0x*8         通常入力時の文字 
-0x*A         caps入力時の文字 
-0x*C         caps+fn入力時の文字 
-0x*E         numberキー入力時(U20iにはないので推測)

みたいな感じなので、

0x034A: 2D 5F

としてやったところ、無事、caps+”-“で_を入力することができた。
QとかWみたいな余ったキーも同様にしてやれば、<とか~も打てるようになると思われる。

以下、やったことをまとめる。
(Windows PCの作業ディレクトリを適当に「C:\android」として、当然Android SDKが導入済みで、adbにpathが通っていて、さらにU20iはrootedであるとする。)

1. U20iをPCに接続する。
このときSDカードをPC側に接続しないこと。

2. PC側のコマンドプロンプトから

cd C:\android

で作業用ディレクトリに移動。

3. コマンドプロンプトで

adb pull /system/usr/keychars/qwerty.kcm.bin

とし、書き換えるファイルを引き出す。

4. C:\android\qwerty.kcm.binというファイルができているはずなので適当なバイナリエディタで開き、好きなように書き換える。
今回は

0x034A: 2D 5F

とした。

5. ファイルをU20iに戻す。

adb push qwerty.kcm.bin /sdcard
adb shell
su
mount -o rw,remount /dev/block/mtdblock0 /system
busybox cp /system/usr/keychars/qwerty.kcm.bin /system/usr/keychars/qwerty.kcm.bin.old
busybox cp /sdcard/qwerty.kcm.bin /system/usr/keychars
reboot

これで再起動後に置き換わっているはず。

——-
XDAでもまだっぽいから、多分、俺つえー状態?
といっても、そもそもこんなライト向けな端末をカスタマイズする人なんて少ないですよねー。
そんな人はとっくにandroid 2.xの世界に行っているとおもうので、早くそっちの世界に行けたらいいなー。