入力文字列編集に関連する ACTION を以下に示します。
- ECHO
- MOVE_LEFT
- MOVE_RIGHT
- HEAD
- TAIL
- DELETE
入力文字列編集時には,上記の ACTION によって変換領域は解除しません。バッファの内容は ECHO と DELETE を除いて変化しません。ECHO のときは,カーソル位置に入力されたキーに対応する文字を挿入し,DELETE のときは,カーソルの左側の文字を削除します。文字の挿入と削除は,3つのバッファすべてに対して適用されます。
入力文字列編集における例外条件を,以下に示します。
- 編集領域の左端の文字にカーソルがあるときにMOVE_LEFTが指定された
- 編集領域の右端の文字にカーソルがあるときにMOVE_RIGHTが指定された
- 編集領域の左端の文字にカーソルがあるときにDELETEが指定された
上記のような場合にはアプリケーションは,PROFILEのINDEX "DEC-JAPANESE.OUTRANGE.cursorPosition"の値によって動作を決定します。この値が"none"のときは,何も実行しません。カーソルはその位置に留まります。この値が"done"のときは,現在の変換を終了して,アプリケーションがそのキーに対して定義した動作を実行します。
文字セル端末用のアプリケーションの多くは,オーバーストライク・モード (上書き) をサポートしています。ここには,オーバーストライク・モードの扱いについて IMLIB が推奨する方法について記述します。
IMLIBは,通常の編集状態がオーバーストライク・モードであっても入力文字列編集中は,インサート・モード(挿入)の動きをする方法をお勧めします。かな漢字変換が終了して確定した文字列は,アプリケーションのオーバーストライク/インサート・モードの設定に従って,アプリケーションのバッファ中に上書き,または挿入されます。次にオーバーストライク・モードにおける入力文字列編集について,具体的な例をあげて説明します。IMLIBは2つの実現方法を併記します。どちらの方法を選択するかはアプリケーションの責任です。カーソル位置は"_"で示します。
図 2-3 オーバーストライク編集の例その1:固定法
図 2-4 オーバーストライク編集の例その2:浮動法
「固定法」は,スクリーン入力型のアプリケーション,たとえばエディタなどに適した実現方法です。すでにある文字列の位置が移動しないという利点があります。しかし,入力文字列が長すぎると元の文字列が見えなくなります。
これに対して「浮動法」は,行入力型のアプリケーションに適した実現方法といえます。元の文字列は編集中も見ることができます。しかし,最終的には元の位置に戻る文字列も,編集中は移動してしまうことになります。また,確定したときに上書きされるので,上書きされた文字列は確定したときに突然消えることになります。
2.3.9 自動ローマ字かな変換における入力文字列編集 |
|
ここでは,自動ローマ字かな変換を行う際に問題となることについて記述します。
自動ローマ字かな変換状態での入力文字列編集において,最も複雑な点は,
「キー入力バッファ」の内容と「キー・エコー・バッファ」の内容が異なることです。ユーザから見えるのは「キー・エコー・バッファ」だけであるにもかかわらず,編集は両方のバッファに対して行わなければなりません。
ローマ字とひらがなは1対1に対応しないため,ひらがなが表示されている状態で,ローマ字の1文字だけを操作するということはできません。編集時にカーソルはひらがなの上を1文字ずつ移動するので,「キー入力バッファ」には,どの位置にひらがなの境界があるのかを示す情報が必要になります。
たとえば,「キー入力バッファ」に"nihongo"という文字列が入っているとすると,「キー・エコー・バッファ」は"にほんご"となっています。このとき「キー入力バッファ」の中の"ni", "ho", "n", "go"がそれぞれ,ひらがなに対応しているという情報を持っておかなければなりません。「キー・エコー・バッファ」中で "ほ" が消去されると,「キー入力バッファ」においては"ho"が消去されることになります。これは,ひらがな文字1文字に対して,ローマ字が複数文字対応している例です。このとき"ho"は1編集単位です。
ローマ字複数文字に,ひらがな複数文字を対応させなければならない場合もあります。たとえば,ローマ字"ryoukin"に対する,ひらがな"りょうきん"がこれにあたります。この場合ひらがな"り"に対応するローマ字は存在しません。そのかわり,ひらがな"りょ"にローマ字"ryo"が対応します。従って,ローマ字文字列の中の"ryo",ひらがな文字列の中の"りょ"が編集単位となります。カーソルは編集単位でしか移動できませんので,"りょ"の間にカーソルが置かれることはありません。
上記2つの例からわかるように,編集単位を示す情報は「キー入力バッファ」と「キー・エコー・バッファ」の両方に必要です。この情報は,入力が行われるのと同時に付けられます。両方のバッファ内には,常に同じ数の編集単位が存在します。
注意
1 一太郎は株式会社ジャスト・システムの登録商標です。
|