Xperia pro/mini proでキートップにない記号を入力する2011/11/07 11:38

Xperia pro(MK16i)/mini pro(SK17i) で、キーマップの置換というか追加をしてみた。

Xperia pro/mini proは、QWERTYキーボードが付いていて、なかなか便利。通常のAndroidアプリを使う分には、もう完璧って感じなのだが、ベースになっているLinuxにアクセスする場合、ちょっと困った事になる。標準状態では、キーボードから入力できない記号が多いのだ。端末エミュレータ等を使用する場合に、シェル(sh)で頻繁に使用するパイプ"|"や、リダイレクト"<"・">"・">>"といった記号がキートップに無く、非常に苦労する。

このままだと不都合な事が多いので、キーマップの修正にチャレンジしてみた。
技術的な詳細は、下記のZIPファイル内の「キーマップ技術情報.txt」を参照されたい。
バイナリーエディタでファイルの中身を変更して書き戻すだけなので、この情報が理解できる人なら、好みに合わせていろいろ変えてみる事も容易だろう。

で、結論として、「かなりうまくいった」ので、公開することにする。「かなり」ってのは、つまり、ダメな部分もあったのだ。残念な事に、入力方法に「POBox Touch」を選んでいる場合、この変更が有効にならない。どうやら、POBox Touchは、直接、キーコードを読み込んで、独自に物理キーの処理を行っているようだ。入力方法に「nicoWnnG IME」や「ATOK」を使用すれば、問題なく記号類が入力できるようになるので、入力方法を適宜選んで使ってもらえば良いだろう。

以下に、修正したキーマップ定義の導入方法を示す。

なお、修正されたキーマップを導入した場合に入力できる記号類は、文末に記載したので、そちらを参照の事。

※注意事項
  以下、すべて自己責任で行うこと。端末が動作しなくなったり、何らかの動作不良となった場合でも、一切の保証は行わないので、そのことを了承した上で操作する事。

1) 準備
この作業は、要rootedだ。Xperia pro/mini proは、事前に「root取り」を行っておくこと。
やり方は、以下を参照の事(ブートローダーのアンロックは不要!)。

  [NEW][26/OCT/2011][ROOTING] Xperia 2011 Easy Rooting Toolkit [v1.0](zergRush Exploit)
    http://forum.xda-developers.com/showthread.php?t=1320350

  簡単に手順を示しておく(要Windows PC)。
    a) 上記のサイトから、DooMLoRD_v1_ROOT-zergRush-busybox-su.zipをダウンロード
    b) Xperia側でUSBデバッグを有効化した後、PCに接続(PC Companionは起動しない事)
    c) PC上で入手したzipファイルを解凍し、フォルダ内の runme を実行

  ※上記以外の方法でrootを取っている場合、busyboxが未導入なら導入して、/system/xbinに
      busybox --install -s /system/xbin
 とでもして、リンクを作っておくこと。

2) 修正版キーマップ用ファイルをXperia側へコピー
  先ず、以下のZIPファイルをPC上でダウンロードして、解凍しておく。

    MK16i-SK17i-key-remap.zip

  Xperia側のmicroSDに、「keymap」フォルダーを作成し、上記のZIPファイル内の以下のファイルをコピーする。

    pm8058-keypad.kcm.bin.remap

3) 端末エミュレーターのインストール
  以降の操作は、Xperia側で端末エミュレーターを使って行うので、端末エミュレーターをインストールしておく。お薦めは…

    ConnectBot

  このConnectBotでは、表示される文字サイズがボリュームボタンで変更できるので、見やすいサイズに簡単に変更できる。日本語の入力はできないが、ファイル名等は日本語でも化けずに表示される。インストールしたら、「local」で接続先を作っておけば良い。

4) 端末エミュレータを起動して、キーマップファイルを置換
  端末エミュレーター上で、以下のコマンドを実行する。なお、「$ 」や「# 」は、シェルが表示するプロンプトなので、入力しない事。

  $ su
  # mount -o remount,rw /dev/block/mtdblock0 /system
  # cd /system/usr/keychars
  # mv pm8058-keypad.kcm.bin pm8058-keypad.kcm.bin.org
  # cp /sdcard/keymap/pm8058-keypad.kcm.bin.remap ./pm8058-keypad.kcm.bin
  # chmod 644 pm8058-keypad.kcm.bin
  # chown root.root pm8058-keypad.kcm.bin
  # reboot

  以上で、Xperiaが再起動する。これで、置換終了。

=====

入力可能となる文字等

入力文字  キー操作    コメント
------------------------------------------------------------------------
ETX(0x03) ALT+SHIFT+C Ctrl+C シェル(sh)で、フォアグラウンドプロセスの強制終了
EOT(0x04) ALT+SHIFT+D Ctrl+D シェル(sh)で、入力の終了(End of file)
SUB(0x1a) ALT+SHIFT+Z Ctrl+Z シェル(sh)で、フォアグラウンドプロセスの一時停止
ESC(0x1b) ALT+SHIFT+Q エスケープ
  <     ALT+SHIFT+,
  >     ALT+SHIFT+.
  [      ALT+SHIFT+K ブラケット(bracket)
  \     ALT+SHIFT+B
  ]     ALT+SHIFT+L ブラケット(bracket)
  ^     ALT+SHIFT+O カレット(caret)
  `     ALT+SHIFT+' バッククォート
  {     ALT+SHIFT+N ブレース(brace)
  |     ALT+SHIFT+? パイプ(vertical bar)
  }     ALT+SHIFT+M ブレース(brace)
  ~     ALT+SHIFT+P チルダ (ConnectBotの場合、ALT+DELETEでも入力可能)
------------------------------------------------------------------------
※ ALTキーは「■」マークのキー