2011年3月8日火曜日

ELECOM TK-FBP017のSPP転送フォーマット

Bluetooth HIDとSPP
ELECOM TK-FBP017のBluetoothインターフェースは、右上のスイッチを設定することによって、2種類のプロファイルを選べます。プロファイルとはBluetoothの通信方式のことです。

ひとつはHIDです。キーボードとして接続するための規約なので、このモードで接続できれば、特別なことをしなくても、OSで通常のキーボードとして処理されます。アプリケーションにはキーボードイベントが通知されるので、専用のキーボードとまったく同じに見えます。残念ながらAndroid携帯でHIDを備えてる機種はほとんどありません。

もうひとつはSPPモードです。アプリケーションではBluetooth経由のシリアルポートに見えるので、OKeyPieのようなIMEを使って、シリアルから読みだした値をアプリケーションに入力値として送ってやる必要があります。Android2.0以降では、たいていこのモードを備えているので、こちらの方式ならほとんどの機種に接続できるはずです。(Nexus Sのような例外もあるので注意)

ELECOM TK-FBP017 のSPP転送フォーマット
TK-FBP017は、キーボードを押した瞬間と、離した瞬間に、キーボードのデータを送ってきます。転送フォーマットは次のとおりです。
ff (押した、あるいは離したキーのコードのバイト列) 00
先頭に16進数のffが1バイト送信され、キーコードがいくつかあって、最後に00で終わります。キーコードの配置は下図のとおりですが、これは押したときの値で、離したときのキーコードは図のコードに80をORした値となります。

たとえば "A" のキーを押した場合は
ff 1c 00

離したときは
ff 9c 00

"A" と "B" が押されたときは
ff 1c 32 00
というふうに転送されてきます。

TK-FBP017 キーコード (クリックで拡大)
同時打鍵も検出できますが、まったくデータが来ない組み合わせもあるので注意が必要です。

2011年3月7日月曜日

IS05, SoftBank 005SH で動作確認

日本アンドロイドの会の定例会で、シャープ製Android端末 au IS05 および SoftBank 005SH を触ることができました。マーケットからOKeyPieをインストールしてTK-FBP017を接続してみたら、ちゃんと動きました。いまのところ動かないのNexus Sだけだなぁ。

会場には噂のXoomもあったんですが、XoomのマーケットアプリではOKeyPieが検索できなかったのでインストールできませんでした。残念。

 動作確認できた機種 Android 2.0以上必須
HTC Desire SoftBank X06HT
SoftBank 005SH
Docomo GALAXY Tab SC-01C
au IS05
 動かなかった機種
Nexus S

2011年3月6日日曜日

Androidテキスト入力画面のショートカット

Androidは実はいろいろなところでキーボードショートカットが使えます。アプリケーションの作りにもよりますが、テキスト入力画面はどれも EditViewを貼って作るので、たいてい次のようなショートカットが使えます。

キー操作機能
シフトキー+カーソル範囲指定
MENU+A (TK-FBP017ではCtrl+A)全指定
MENU+X (TK-FBP017ではCtrl+X)カット
MENU+C (TK-FBP017ではCtrl+C)コピー
MENU+V (TK-FBP017ではCtrl+V)  ペースト
シフトキー2回CapsLock
  解除はシフトキー1回
Alt+→行末
Alt+←行頭
Alt+↑文頭
Alt+↓文末
Alt+Del行全体を削除
Alt+空白(英字モードのみ)
特殊記号入力表示

これらに対応するために OKeyPie の出力コードを変更しました。OKeyPieを更新してください。

2011年3月2日水曜日

Android用親指シフトIMEの使い方

いろいろ不備はあるのですが、ひとまずマーケットに登録しました。Androidマーケットにて
「OKeyPie」もしくは「親指シフト」で検索すると見つかります。

動作条件

 対象キーボード
ELECOM TK-FBP017
 動作確認できた機種 Android 2.0以上必須
HTC Desire SoftBank X06HT
SoftBank 005SH

Docomo GALAXY Tab SC-01C
au IS05
 動かなかった機種
Nexus S

インストール

Androidマーケットにて「OKeyPie」もしくは「親指シフト」を検索してください。


 インストールしたら、ホーム/メニュー/設定/言語と文字入力を選択し、「OKeyPie」の項目にチェックを入れます。IMEはこれをやらないと使用できません。


何か凄いことを警告されますが、信頼して「OK」を押します。


Bluetooth通信の準備

TK-FBP017を開くとこのようになってます。


右上のスライドスイッチを左側にずらして SPP モードに設定しておきます。


Androidに戻ってホーム/メニュー/設定/無線とネットワークを選択します。Bluetooth機器を検索する前にキーボード側の接続スイッチを押しておきます。

 

デバイス検索でELECOM TK-FBP017が見つかったら、それをタッチして「ペアリング」を行います。


 「承認」を押してペアリングします。

IME切り替え

エディタなどテキストを入力する場所を長押しします。


入力方法をタッチします。すでにインストールされているIMEがいろいろ表示されるので「OKeyPie」を探してタッチします。見つからないときは、ホーム/メニュー/設定/言語と文字入力 の「OKeyPie」欄にチェックが入っているか確認してください。


Bluetoothキーボード接続の開始

入力欄をタッチすると、OKeyPieのソフトキーボードが表示されます。右の大きいボタンが設定ボタンで、左はソフトキーボードの消去ボタンです。


設定ボタンを押すと、まだBluetoothが有効になっていないときは、ダイアログが表示されるので有効にして、もう一度設定ボタンを押してください。有効になっていれば、接続メニューが表示されます。

「ELECOM TK-FBP017」をチェックし、キーボードの左上の接続ボタンを押してから、Android画面の「Start」ボタンを押します。
10数秒してインジケータが一瞬緑色に光ったら、接続成功です。インジケータは一瞬光ったあと消えてしまうので見逃さないようにしてください。これで、使うことができます。無入力のまま放っておいたりしてキーボードとの接続が切れた場合は、Bluetoothキーボードとの接続からやり直してください。


接続に成功したら、1行だけのソフトキーボードは表示しなくても使えます。また、カーソルキーなどはホーム画面などでアイコンを選択するときにも有効です。つまりIMEはソフトキー窓を閉じても、ずっと動いているわけです。