firefox osを盛り上げてみなイカ? (130レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
58: 2014/09/21(日)16:52 ID:UHBOt1Bq(1/5) AAS
Firefox OSの仮想キーボード(VKB)にはフリック入力の仕組みがないので、
現状唯一の日本語IMEである jskanji はガラケー方式になっていて
ちょっと残念な感じです。
一方、英語入力ではアクセント記号付きの文字を簡単に入力できるように、
VKBのキーを長押しすると入力候補がポップアップするようになっています。
画像リンク
この仕組みを流用して、jskanji を改造してみました。
画像リンク
59: 2014/09/21(日)17:12 ID:UHBOt1Bq(2/5) AAS
改造といっても、大したことはしていません。
まず、長押しで表示される入力候補文字を定義します。
修正するのは、Keyboardアプリの js/layout/jp-kanji.js です。
alt というプロパティを追加するだけです。
英語入力用の en.js からパクりました。
次に、長押し入力された文字の処理をIMEに追加します。
修正するのは、js/imes/jskanji/jskanji.js です。
VKBのキーが押されると、IMEのclick()という関数が呼び出され、
click()→qNext()→handleNormalKey()と順に呼び出されています。
入力された文字は _inputBuf という配列に格納されます。
handleInputBuf()という関数から呼び出される queryDict()という関数で、
_inputBuf を入力として変換候補が選出されます。
ユーザーが変換候補を選択して未確の入力(の一部)を確定すると、
選択した文字列(漢字など)がinput要素に送られ、それとともに、
当該部分が _inputBuf から掃き出されます。
今回の改造はかな入力の部分だけで変換処理はそのまま流用できるので、
変更するのはhandleNormalKey()のみです。
60(1): 2014/09/21(日)17:33 ID:UHBOt1Bq(3/5) AAS
handleNormalKey()はVKBで押されたキーに対応する文字を _inputBuf に
格納しています。
この際、前回入力されたキーと今回入力されたキーが同じ場合は、
_inputBuf の末尾の文字を50音の次の文字に変更します。
例えば、最初に「あ」が入力されると、_inputBuf には「あ」が格納され、
続いて再度「あ」が入力されると _inputBuf に格納されていた「あ」が
「い」に変化するといった具合です。
一方、最初が「あ」で次が「か」なら _inputBuf は「あか」になります。
長押しで入力された文字は単純に _inputBuf の末尾に追加すれば良いの
ですが、「あ」の列(あ、か、さ、・・・)についてはガラケー方式と
同様の処理になるように細工しています。
これは、IMEに渡されるのは入力された文字だけで、それが単純に
タップで入力されたのか、長押しで入力されたのかの区別がつかない
ためです。このため、入力文字に対応するキートップの文字を
逆引きするためのテーブルを追加して既存の処理とのつじつまを
合わせています。
この辺の処理はガラケー方式での入力は不要と割り切れば捨てられますが、
長押しよりガラケー打ちの方が早く入力できる人がいそうな予感が
したので残してあります。
やっておいてなんですが、やっぱり、長押しではフリック入力には
遠く及ばない感じです。
61: 2014/09/21(日)17:40 ID:UHBOt1Bq(4/5) AAS
シミュレータ用のファイルを上げておきます。
辞書(dict.json)を含む jskanji 関連一式 (FxOS 1.4 Simulator用)
外部リンク:fast-uploader.com
辞書(dict.json)を含む jskanji 関連一式 (FxOS 2.0 Simulator用)
外部リンク:fast-uploader.com
diff (FxOS 1.4 Simulator用) UTF-8、BOMなし、CR+LF
外部リンク:fast-uploader.com
diff (FxOS 2.0 Simulator用) UTF-8、BOMなし、CR+LF
外部リンク:fast-uploader.com
62: 2014/09/21(日)18:13 ID:UHBOt1Bq(5/5) AAS
Keyboardアプリ関連のTipsを1つ。
FxOSアプリのjsでconsole.log()を呼ぶと引数で渡した文字列が
Webコンソールに表示されます。
これを使うとprintfデバッグのようなことができて便利です。
Webコンソールを使うにはまずデバッグ対象のアプリに
アタッチする必要があります。
WebIDEで普通のアプリをデバッグする場合は、
WebIDEからアプリを起動後、画面上部中央にあるコンセントの
アイコンをクリックすればアプリのデバッグが開始し、
Webコンソールが開きます。
さて、Keyboard関連の場合はというと、シミュレータの場合、
インストール済みアプリの一覧が表示できるので、
その中から「System」を選びます。
これで通常のアプリと同様にデバッグができるようになります。
「Build-in Keyboard」なんていうのもありますが、
そっちはキーボードの設定画面なので、console.log()で
IMEの処理を追いかけたい場合は「System」を選ぶ必要があります。
(最初、これが分からなくてちょっと時間をくった)
なお、実機の場合、デフォルトではSystemなどの組み込みアプリは
一覧に出てこないようですが、端末内の定義ファイルを書き換えれば
シミュレータ同様にデバッグできるようです。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.561s*