いわゆる「日本語入力モード」の実現方法を考える。
このモードでは、キー入力を行うと、入力のかな変換結果が表示され、変換ボタンによって漢字変換される、とする。
入力と動作について、表に書き出すと、こんな感じ?
モード | 概要 | 文字入力 | カーソル移動、削除 | 変換用の入力 |
確定 | 入力確定した文字列の管理 | 「かな」に追加 | 「かな」サイズがゼロなら、「確定」に、それ以外は「かな」に入力を渡す | サイズがゼロなら無視、それ以外は「かな」に渡す |
かな | 漢字変換前の文字列管理 | 追加 | 処理 | 変換指示なら「漢字」へ遷移 |
漢字 | 漢字変換中の文字列管理 | 入力前までを確定し、「かな」に対して追加 | 「かな」に戻して操作、か無視 | 処理 |
これらの機能を、以下の機能毎に実現する。
- 日本語入力 ... ユーザに公開するクラス。入力を受け取り、文字列を管理する。
- ASCII→かな変換 ... ASCII 入力をローマ字 or かな入力でかな文字列に変換する
- コンテキスト管理 ... 確定済み、入力中、の各コンテキストを管理する
- かなコンテキスト操作 ... カーソル位置と追加入力を管理する
- 漢字コンテキスト操作 ... かな文字列を漢字列に変換する
つか、省略が多すぎて、意味がわからない記述になってる...。
まぁ、いいや。メモのつもりで残しておく。