なんだか使ってるうちに入力がひどくもっさりしてきても長らく ATOK for Android を使い続けてる理由に、英字入力を QWERTY にした時に最上段に数字が出るっていうのがありまして。
Google 日本語入力ではそれがなくて大変残念に思っていた所存。
せっかくオープンソースになったんだから、いじろう!
ということで、いじるファイルを探そう!
ほい、ここ。
Error 404 (Not Found)!!1
今回は「QWERTY でアルファベットを入力するところに数字の段を増やしたい」ので
kbd_qwerty_abc.xml
だと思ったら大間違い。
これは日本語入力も QWERTY の時に使用されるヤツで今回のターゲットとは違いました。
正解は
kbd_12keys_qwerty_abc.xml
でも「kbd_qwerty_abc_123.xml」の一段目をパクります。<Row>から</Row>でキーボードの1段なので、こんな感じで
<Row> <Key mozc:keyEdgeFlags="left"> <KeyState> <Flick> <KeyEntity mozc:sourceId="1" mozc:keyCode="@integer/uchar_digit_one" mozc:keyIcon="@raw/qwerty__keyicon__digit_one"> <PopUp mozc:popUpIcon="@raw/qwerty__keyicon__digit_one" /> </KeyEntity> </Flick> </KeyState> <KeyState mozc:metaState="alt"> <Flick> <KeyEntity mozc:sourceId="2" mozc:keyCode="@integer/uchar_grave_accent" mozc:keyIcon="@raw/qwerty__keyicon__grave_accent"> <PopUp mozc:popUpIcon="@raw/qwerty__keyicon__grave_accent" /> </KeyEntity> </Flick> </KeyState> </Key> <Key> <KeyState> (以下略)
となってるのをパクって「kbd_12keys_qwerty_abc.xml」の qwerty 段の上に持ってきます。ポイントになるのは sourceId ってヤツで、どうやら1から順番に振られていってるようで、以下の sourceId を調節しましょう。
あとはキーボードの高さを 100% としたキーの高さと間の隙間の調節ですね。元々より1段増やすので同じキーの高さでは溢れてしまいます。
元々がこうなってるので
<Keyboard xmlns:mozc="http://schemas.android.com/apk/res-auto" mozc:keyBackground="qwertyRegular" mozc:keyWidth="10%p" mozc:keyHeight="20.5%p" mozc:horizontalGap="0.3%p" mozc:verticalGap="4%p" mozc:popUpWidth="@dimen/key_preview_height" mozc:popUpHeight="@dimen/key_preview_height" mozc:popUpXOffset="0dip" mozc:popUpYOffset="@dimen/mini_keyboard_vertical_correction"> <Row mozc:rowEdgeFlags="top" mozc:keyHeight="0dip" mozc:verticalGap="4%p" />
mozc:keyHeight と mozc:verticalGap をいい塩梅にしましょう。
今回はそれぞれ17.6%と2%にしました。
<Keyboard xmlns:mozc="http://schemas.android.com/apk/res-auto" mozc:keyBackground="qwertyRegular" mozc:keyWidth="10%p" mozc:keyHeight="17.6%p" mozc:horizontalGap="0.3%p" mozc:verticalGap="2%p" mozc:popUpWidth="@dimen/key_preview_height" mozc:popUpHeight="@dimen/key_preview_height" mozc:popUpXOffset="0dip" mozc:popUpYOffset="@dimen/mini_keyboard_vertical_correction"> <Row mozc:rowEdgeFlags="top" mozc:keyHeight="0dip" mozc:verticalGap="4%p" />
あとは前回やったようにビルドするだけ。らくちん!
で、このままでは冒頭の画像のようにキーボードが真っ白になってしまいます。
オープンソース版は権利の問題だかで画像が差し替えられて公開されてるそうで…
んじゃぁ、mozc/src/android/resources_oss/res/raw にある大量の pic を差し替えればいいのかと思ったんですが、これ実はビルド時に svg ファイルからコンバートされてて、どうにかして持ってきた画像はビルド時に消されて上書きされてしまいます。
なので、本筋では mozc/src/data/images/android/svg にある大量の svg を編集していく必要があるということのようですが、それはまた別のお話。
Error 404 (Not Found)!!1
今回程度の変更ではソースコードを弄る必要もなく、キーボードの定義ファイルを変更するだけだったのでラクチンでした。
なかなか考えて作られているようなので興味のある方は見てみるといいと思います。
おまけで、キーボードに文字を入れたらこんな感じになりますよというイメージ画像がこちら。
大変よい感じ。
デザイナーの方が svg をセットで提供してくれたら世の中の Mozc for Android ベースで開発しようとしている人々が飛びつくだろうなー
コメント
ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ
RT @8796n: ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ
RT @8796n: ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ
RT @8796n: ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ
RT @8796n: ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ
RT @8796n: ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ
RT @8796n: ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ
RT @8796n: ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ
RT @8796n: ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ
RT @8796n: ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ
RT @8796n: ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ
RT @8796n: ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ
Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう http://t.co/i8TOoBkgMg via @8796n android.gypのgen_mozc_drawableを潰せばゴニョったpicを上書きされない気がする。
RT @8796n: ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ