Nexus 7でBluetooth英語キーボードを使う(4) – KLファイルの置き換え、問題点

前回変更したKLファイル(Vendor_05ac_Product_0239.kl)で元のファイル(/system/usr/keylayout/Vendor_05ac_Product_0239.kl)を置き換えてやれば良いけど、その手順のメモ。

/systemの再mount

/system以下は読み取り専用でmountされているのでこれを書き込み可能に変更する。

まず、mountコマンドでシステムに割り当てられたデバイス名を調べる。

$ mount
mount
rootfs / rootfs ro,relatime 0 0

(中略)

/dev/block/platform/sdhci-tegra.3/by-name/APP /system ext4 ro,seclabel,relatime,
user_xattr,acl,barrier=1,data=ordered 0 0

(後略)

ここでは「/dev/block/platform/sdhci-tegra.3/by-name/APP」が該当。これを書き込み可能でリマウントする。

# mount -o rw,remount /dev/block/platform/sdhci-tegra.3/by-name/APP /system


修正したKLファイルのコピー

adb pushでいきなり突っ込めないので、一旦/sdcardの下にコピーして、superuser特権で/system/usr/keylayout/へコピー。 ファイルのアクセス権を他のKLファイルと合わせて完了。

新しいKLファイルを読み込ませるためには、Bluetoothを一旦オフにして再ペアリングする必要あり。

現状での問題点

  • キーボードからIMEをオン/オフできない。
  • IMEオンの状態で、キーボードから「かな(全角)」、「アルファベット(半角)」の切り替えができない。

使えそうなAKCは、「LANGUAGE_SWITCH」、「SWITCH_CHARSET」、「ZENKAKU_HANKAKU」。 それぞれを空いているキーに割り当ててみたが、残念なことに「Google日本語入力」ではいずれも反応せず。

試しにIMEをNexus 7に付属の「iWnn IME」に変更してみると、「`」キーでオン/オフ可能。 また、「SWITCH_CHARSET」で「かな(全角)」、「アルファベット(半角)」が可能だった。 どうやら、この問題はIMEがどう作られているかによるものみたい。

じゃあ、「iWnn IME」を使えばよいかというと、今度はキー配列が日本語に固定されていて、外部キーボードを英語配列に指定しても強制的に日本語配列になってしまい、これもダメ。

良くわからないが、KLファイルの変更では対応不可能で、「Google日本語入力」がキーボードからの「LANGUAGE_SWITCH」、「SWITCH_CHARSET」に対応してくれないと解決しないような気がする。

というわけで、キーボードから操作できないところは「画面にタッチ」でやりくりするしかないのが英語キーボードを使う上での現状。

でも、Android関連のキーが使えるようになっただけでも格段に使えるようになったので、しばらくこれでいってみる。

スポンサーリンク

フォローする