Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう

2013年4月6日 by
カテゴリ: Android, 開発のこと 

image

なんだか使ってるうちに入力がひどくもっさりしてきても長らく ATOK for Android を使い続けてる理由に、英字入力を QWERTY にした時に最上段に数字が出るっていうのがありまして。

Google 日本語入力ではそれがなくて大変残念に思っていた所存。

せっかくオープンソースになったんだから、いじろう!

ということで、いじるファイルを探そう!

ほい、ここ。

http://mozc.googlecode.com/svn/trunk/src/android/resources_oss/res/xml/

今回は「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 を編集していく必要があるということのようですが、それはまた別のお話。

http://mozc.googlecode.com/svn/trunk/src/data/images/android/svg/

image

今回程度の変更ではソースコードを弄る必要もなく、キーボードの定義ファイルを変更するだけだったのでラクチンでした。

なかなか考えて作られているようなので興味のある方は見てみるといいと思います。

 

おまけで、キーボードに文字を入れたらこんな感じになりますよというイメージ画像がこちら。

image

大変よい感じ。

デザイナーの方が svg をセットで提供してくれたら世の中の Mozc for Android ベースで開発しようとしている人々が飛びつくだろうなー

コメント

14 件のコメント on Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう

  1. 8796n
    2013年4月6日 11:34 AM
  2. ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ

  3. tethys_seesaa
    2013年4月6日 11:35 AM
  4. RT @8796n: ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ

  5. potatocream
    2013年4月6日 11:36 AM
  6. RT @8796n: ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ

  7. miguse
    2013年4月6日 11:37 AM
  8. RT @8796n: ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ

  9. 96pen
    2013年4月6日 11:37 AM
  10. RT @8796n: ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ

  11. horamon
    2013年4月6日 11:37 AM
  12. RT @8796n: ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ

  13. izariuo440
    2013年4月6日 11:39 AM
  14. RT @8796n: ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ

  15. bina1204
    2013年4月6日 11:40 AM
  16. RT @8796n: ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ

  17. pkk3000
    2013年4月6日 11:40 AM
  18. RT @8796n: ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ

  19. grande_rana
    2013年4月6日 11:43 AM
  20. RT @8796n: ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ

  21. meyskld
    2013年4月6日 11:49 AM
  22. RT @8796n: ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ

  23. rkisato
    2013年4月6日 12:10 PM
  24. RT @8796n: ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ

  25. Norvallen
    2013年4月6日 1:01 PM
  26. Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう http://t.co/i8TOoBkgMg via @8796n android.gypのgen_mozc_drawableを潰せばゴニョったpicを上書きされない気がする。

  27. anidiru
    2013年4月6日 1:46 PM
  28. RT @8796n: ブログ書いたよ Mozc for Android(オープンソース版Google日本語入力)のキーボードを弄ろう – http://t.co/3Met5Xn7aZ