2014年11月22日

Android/Nexus7(2012)にiOS向け物理キーボード

長期外出するときは、緊急時のためにノートパソコンを持って出ていたが、やることと言えば、Webを見て、メールを読んで、sshでサーバーに繋ぐの3つ。これならAndroidでも出来るので、Androidタブレットだけ持っていけばいいかな、と思う。だが、タッチ画面でsshを使うのは骨が折れるので、外付けBluetoothキーボードを買うことにした。

主に緊急用なので使用頻度も低いから安い奴にしようと、アマゾンで買った。型番もないキーボード(ASIN B00GMYEN60)である。
届いたので繋いでみたんだが、どうもこれiOS向けのキーボードらしくて変なキーがあるし、使ってみると、=や[]が、Fnキー+通常キーの同時押しに割り当てられているのだが、これが入力できない。
こんなキーボードなのだが↓
612PsAuXEYL._SL1024_y.jpg

キーボードイベントを見てると、スキャンコードもキーコードも送られているんだけど、入力に現れない。キーボードのせいかIMEのせいか、わからない。
しかし、ターミナルで、=や~が入力できないのは困るので、ナントカ使えるように、レイアウトとキーマップを突っ込んでみた。

これB00GMYEN60.zip

(ベンダーコード、プロダクトコードは、adb shell dumpsys input とかやって調べてね。作業内容は このへんを参考に。)

rootを取った端末で、PCからadbで繋いで、
adb push Vendor_05ac_Product_022c.kl /sdcard/
adb push Vendor_05ac_Product_022c.kcm /sdcard/
などしてファイルを送り込みadb shell
$ su
# mount -o rw,remount /dev/block/platform/sdhci-tegra.3/by-name/APP /system
# cp /sdcard/Vendor_05ac_Product_022c.kl /system/usr/keylayout/
# chmod 644 /system/usr/keylayout/Vendor_05ac_Product_022c.kl
# cp /sdcard/Vendor_05ac_Product_022c.kcm /system/usr/keychars/
# chmod 644 /system/usr/keychars/Vendor_05ac_Product_022c.kcm
# mount -o ro,remount /dev/block/platform/sdhci-tegra.3/by-name/APP /system
# exit
(※これはNexus7(2012)の例。/systemのremountは、mountコマンドなどで調べてね。)
キーボードを外して付けると適用される。

変更した割り当ては、
左上の□ = ESCキー
Command = 半角/全角キー
: と ; を入れ替え (単押しは:、Shift押しながらで;)
右シフト押しながら O で `
右シフト押しながら P で ~
右シフト押しながら L で =
右シフト押しながら : で +
右シフト押しながら V で [
右シフト押しながら B で ]
右シフト押しながら N で {
右シフト押しながら M で }

Fnキー同時押しの記号シリーズは、右のShift同時押しで代用するようにした。
これで、キーボードをUSにして、Android英語キーボードにしたら、なんとかsshには実用できそうだ。

しかしだ。
このキーボード、日本語の刻印があるので、カナタイプできるかと思ってやってみたら、重大な欠陥があることが分かった。濁点゛、半濁点゜のキーがない!「ぺ」とか「べ」とかが入れられない!なんじゃこりゃあ!
タグ:android NEXUS7
posted by usoinfo at 18:46 | Comment(0) | Android | このブログの読者になる | 更新情報をチェックする