1 of 25

Keyboard Input�Hackathon 2023

2023-04-23

ひろけー

2 of 25

自己紹介

Mozc の開発をしているひとりです

市販のトラックポイントキーボードを 2つ、右手用と左手用で使っています

自作キーボード

  • 棒状のキーボードや湯呑みのようなキーボードを作りました

キー配列

  • GODAN というスマートフォン向けの配列を作りました

3 of 25

発表内容

Mozc と

  • 自作キーボード
  • IME キー設定
  • 独自キー配列

6分間でできるかな…

4 of 25

Mozc と 自作キーボード

5 of 25

自作キーボードあるある

「キーを押したら、魚編の漢字を入力したいなぁ」

Mozc に以下のキーコード列を送信すれば可能

  • IME_ON (かなキー)
  • U+9C39 (鰹のキーコード, 6文字)
  • 変換 (スペースキー)
  • 確定 (エンターキー)
  • IME_OFF (英数キー)

6 of 25

IME の変換表示を隠したい

キー送信のたびに、IME の入力文字や候補ウインドウがちらついてしまう

7 of 25

じゃあ作ろう

一時的に IME の表示を隠す機能を追加

  • F17 キーなどに割り当てて使う
  • 文字入力後は自動的に解除

自作キーボードが送信するキーコード列

  • IME_ON (かなキー)
  • IME 表示オフ (F17 キー)
  • U+9C39 (鰹のキーコード, 6文字)
  • 変換 (スペースキー)
  • 確定 (エンターキー)
  • IME_OFF (英数キー)

8 of 25

Mozc と IME キー設定

9 of 25

通常キーにコマンドを割り当てたい

  • L キーで英数入力に遷移
  • Y キーでバックスペース

10 of 25

やりました!

コメントアウトしただけ!

  • GUI ツールのチェック�部分を回避しているだけ

GUI なしでも設定ファイルを手で書けば、現状でも�割り当てられます

動作の保証はありません!

11 of 25

Mozc と 独自キー配列

12 of 25

日本語入力キー配列のカスタマイズ

ローマ字変換テーブルの活用

独自の変換ルールを拡張できる

  • z. → 「…」
  • sq → 「さい」
  • g9 → 「魚」

13 of 25

Mozc で NICOLA (親指シフト)

NICOLA とは 親指シフト入力の JIS 化案(だそうです)

  • Y 単体 →
  • Y + 同じ手側のシフト →
  • Y + 逆の手側のシフト →

14 of 25

NICOLA はキーの同時押しが必要

Akira.K さんによる提案とプロトタイプにより、キー同時押し入力へは対応済み

  • 新下駄配列等が使える

NICOLA ではさらに 変換/無変換キー との同時押しが必要

  • これまでは文字キーのみの対応でした
  • 機能キー(例: 変換, F10)へは未対応でした

できるようにしました

15 of 25

機能キーを文字入力として受け付る

  • F18 を押すと {f18} という特殊キーとして処理する
  • 「ka → か」のように「{f18}a → さ」というルールが作成できる
  • もう作ってあったので、GUI からも使えるように
    • GUI なしでも手で書けば設定可能(動作の保証はありません!)

16 of 25

同時押し判定のしきい値時間

開発用に GUI でも設定可能に

  • GUI なしでも手で書けば設定可能(動作の保証はありません!)
  • 例: 1230 msec 以内の打鍵は同時入力として扱う

17 of 25

参考: キー同時押しの仕組み

キー入力のしきい値時間後に、タイムアウトを示す特殊キー {!} を送信する

a,b 同時押し → ば 「ab → ば」「ba → ば」

a 単体押し → あ 「a{!} → あ」 ({!} の有無で ab と区別する)

実際には、もっと複雑なルールを書くはめになります

  • 「次の入力」という仕組みで、 a を押した瞬間に�「あ」が表示されるようにしています

18 of 25

NICOLA 用のデータ生成

これを

19 of 25

こうして

20 of 25

こうします (180+ ルール)

21 of 25

できました!

ローマ字変換ルールとして�読み込めば完成です

22 of 25

まとめ

Mozc と自作キーボード

  • IME の表示を隠す機能を作りました�→ キーボードから任意の文字を自然に入力できます(例: K キーで「鰹」)

Mozc と IME キー設定

  • 通常キーに IME の操作を割り当てる機能を作りました�→ 先鋭化した IME 設定ができます(例: L キーで英数入力モード)

Mozc と独自キー配列

  • 機能キーと同時押し入力できる機能を作りました�→ NICOLA 配列等のキー配列にカスタマイズできます

23 of 25

ふりかえり記事を書いています

24 of 25

参照

Kyeboard Input Hackathon 2023

成果物(ソースコード)

25 of 25

まとめ

Mozc と自作キーボード

  • IME の表示を隠す機能を作りました�キーボードから任意の文字を自然に入力できます(例: K キーで「鰹」)

Mozc と IME キー設定

  • 通常キーに IME の操作を割り当てる機能を作りました�先鋭化した IME 設定ができます(例: L キーで英数入力モード)

Mozc と独自キー配列

  • 機能キーと同時押し入力できる機能を作りました�NICOLA 配列等のキー配列にカスタマイズできます