■
こんにちは
ここをみてもis03が発表になってからはis01はスマートフォンでは
なくなってしまいました。
OSも1.6のままで早く2.1にして欲しいです。
さくらのVPSも契約してて、SSHで接続してみたのですがConnectBotでは
Shift+数字ではファンションの入力になってしまい記号が入力出来ませんでした。
ConnectBotはソースが公開されているとのことでちょっと調べてみたらファンションキーでなく
記号入力が出来るように修正が出来ました。
修正はすごく簡単で、TerminalKeyListener.javaのファンションキーに変換してる部分を
コメントアウトするだけで対応出来ました。
まずはソースのインストール
ダウンロードしたあとEclipseへインポートしました。
http://code.google.com/p/connectbot/
調査の様子
ソースにログ表示を追加してshftを押した時の処理を探し出しました。
このif文をコメントアウトします。
/*** // handle pressing f-keys if ((hardKeyboard && !hardKeyboardHidden) && (curMetaState & KeyEvent.META_SHIFT_ON) != 0 && sendFunctionKey(keyCode)){ Log.v(TAG,"onKey handle pressing f-keys"); //debug return true; } ***/
Eclipseでのソース表示
修正はコメントアウトするだけでした。
実行してサーバへ接続してコンパイル、実行してみました。
vim起動
コンパイルと実行
このようにviを終了するときの!や#includeなどが入力出来てIS01自力でコンパイルとデバッグが出来ました。
ソースを見ると右と左のSHIFTキーの判別が出来るみたいなので右SHIFTキーをCTRLに割り当てようかと思って
います。
絵・顔・記も判別できるのでこれはESCに割り当ててみます。
onKey(View v, int keyCode, KeyEvent event)
onKey(View v, int keyCode, KeyEvent event) が返す値はキー1つ1つを識別できるみたいです。
public boolean onKey(View v, int keyCode, KeyEvent event) { try { final boolean hardKeyboardHidden = manager.hardKeyboardHidden; String s = String.format("%d,%d ", event.getAction(), keyCode); Log.v(TAG,"onKey1 " +s); //debug //Log.v(TAG,"onKey2");
int key = keymap.get(keyCode, curMetaState);
keymap.get()はアスキーコードに対応した値みたいです。
int key = keymap.get(keyCode, curMetaState); String s2 = String.format("keymap.get = %02x", key); Log.v(TAG,s2); //debug if ((metaState & META_CTRL_MASK) != 0) { metaState &= ~META_CTRL_ON; Log.v(TAG,"META_CTRL_MASK"); //debug bridge.redraw();