前へ | 次へ | 目次 | 索引 |
現在の文節に対してACTIONに従った動作を行い,その結果を表示バッファに入れます。現在DECが提供するかな漢字変換ルーチンを使う場合には,CLA_ZENKAKU, CLA_HANKAKU は容易に実現することはできませんので, CLA_ZENKAKU, CLA_HANKAKU のサポートはアプリケーションの任意です。 CLA_ZENKAKU, CLA_HANKAKU をサポートしないアプリケーションに,これらのACTIONが指定されたときには,アプリケーションは何も実行しません。この遷移は 図 4-1 の(10)で示されます。
現在の文節が,最後の文節であるときに NEXT_CLAUSE が指定された場合,または現在の文節が最初の文節であるときに,PREV_CLAUSEが指定された場合には指定された動作を実行することができません。この場合には,PROFILEのINDEX "DEC-JAPANESE.OUTRANGE.clauseNumber"の値によって動作を決定します。
何も実行しません。
現在の文節が最後の文節のときに NEXT_CLAUSEが指定された場合には最初の文節に,最初の文節のときにPREV_CLAUSEが指定された場合には最後の文節に移ります。
現在の変換を終了してアプリケーションがそのキーに対して定義した動作を実行します。
現在の文節長が最小であるときに SHORTEN_CLAUSEが指定されたとき,または現在の文節長が最大であるときにEXTEND_CLAUSEが指定された場合には,指定された動作を実行することができません。この場合には,PROFILEのINDEX "DEC-JAPANESE.OUTRANGE.clauseSize" の値によって動作を決定します。
何も実行しません。
現在の文節長が最小であるときに SHORTEN_CLAUSEが指定された場合には,文節長を最大長に,現在の文節長が最大であるときにEXTEND_CLAUSEが指定された場合には,文節長を最小長にします。
現在の変換を終了して,アプリケーションがそのキーに対して定義した動作を実行します。
エラーです。エラー処理の方法はアプリケーションごとに定義されます。内部状態が「初期状態」でないときに,変換途中の文字列を確定する場合には, INIT KEY STATEを呼んでください。また内部状態を「初期状態」に設定してください。
変換領域の先頭あるいは最後にカーソルを移動します。この遷移は 図 4-1 の(2)で示されます。
エラーです。エラー処理の方法はアプリケーションごとに定義されます。内部状態が「初期状態」でないときに,変換途中の文字列を確定する場合には, INIT KEY STATEを呼んでください。また内部状態を「初期状態」に設定してください。
変換領域内でカーソルを左右に移動します。カーソルが変換領域を外れるような操作をしたときは,すべてのバッファをクリアして初期状態に戻す方法と,カーソル移動を行わない方法の 2つがあります。この遷移は 図 4-1 の(2)で示されます。
現在のカーソル位置が,変換領域の最初の文字にあるときにMOVE_LEFTが指定されたとき,または現在のカーソル位置が,変換領域の最後の文字にあるときにMOVE_RIGHTが指定されたときには,指定された動作を実行することができません。この場合には, PROFILEのINDEX"DEC-JAPANESE.OUTRANGE.cursorPosition"の値によって動作を決定します。
何も実行しません。
現在の変換を終了してアプリケーションがそのキーに対して定義した動作を実行します。
エラーです。エラー処理の方法はアプリケーションごとに定義されます。内部状態が「初期状態」でないときに,変換途中の文字列を確定する場合には, INIT KEY STATEを呼んでください。また内部状態を「初期状態」に設定してください。
カーソルの左側の1文字を消去します。この遷移は 図 4-1 の(2)で示されます。
エラーです。エラー処理の方法はアプリケーションごとに定義されます。内部状態が「初期状態」でないときに,変換途中の文字列を確定する場合には, INIT KEY STATEを呼んでください。また内部状態を「初期状態」に設定してください。
表示バッファの内容を入力文字列として格納し,すべてのバッファ内の文字をすべて消去します。スクリーンにビデオ属性が表示されていたら,それをリセットします。この遷移は 図 4-1 の(5)で示されます。
表示バッファの内容を入力文字列として格納し,すべてのバッファ内の文字をすべて消去します。スクリーンにビデオ属性が表示されていたら,それをリセットします。この遷移は 図 4-1 の(8)で示されます。
表示バッファの内容を入力文字列として格納し,すべてのバッファ内の文字をすべて消去します。スクリーンにビデオ属性が表示されていたら,それをリセットします。また現在の変換結果の学習を行います。この遷移は 図 4-1 の(11)で示されます。
何も実行しません。
キー・エコー・バッファ内の文字列を,表示バッファにコピーします。状態は入力状態に移ります。この遷移は 図 4-1 の(9)で示されます。
キー・エコー・バッファ内の文字列を表示バッファにコピーします。状態は入力状態に移ります。変換の学習は行いません。この遷移は 図 4-1 の(12)で示されます。
エラーです。エラー処理の方法はアプリケーションごとに定義されます。内部状態が「初期状態」でないときに,変換途中の文字列を確定する場合には, INIT KEY STATEを呼んでください。また内部状態を「初期状態」に設定してください。
何も実行しません。
キー・エコー・バッファ内の文字列を表示バッファにコピーします。状態はかな変換状態に移ります。この遷移は 図 4-1 の(6)で示されます。
キー・エコー・バッファ内の文字列を表示バッファにコピーします。状態はかな変換状態に移ります。この遷移は 図 4-1 の(13)で示されます。
エラーです。エラー処理の方法はアプリケーションごとに定義されます。内部状態が「初期状態」でないときに,変換途中の文字列を確定する場合には, INIT KEY STATEを呼んでください。また内部状態を「初期状態」に設定してください。
キー・エコー・バッファ内の文字列を表示バッファにコピーします。状態は,かな変換状態に移ります。この遷移は 図 4-1 の(3) で示されます。
キーが定義されていないことを明示的に指定するACTIONです。この場合には,アプリケーションはGET KEY ACTIONまたはSET KEYから,IM__KEYNOTDEFINEDという条件値が返されたときと同じ動作をします。
すべてのバッファ内の文字をすべて消去します。スクリーンにビデオ属性が表示されていたら,それをリセットします。内部状態が「初期状態」でないときには, INIT KEY STATEを呼んでください。
すべてのバッファ内の文字をすべて消去します。スクリーンにビデオ属性が表示されていたら,それをリセットします。また,INIT KEY STATEを呼んでください。
現在の変換結果を学習させてから,上記の動作を実行します。
表 4-1 に,現在の状態とACTIONによる状態遷移をまとめています。表の中の数字は 図 4-1 の状態遷移を示す矢印に付けられた数字と一致しています。表の中で使われている表記は以下のとおりです。
カーソル移動に関連したACTIONです。MOVE_LEFT, MOVE_RIGHT, HEAD, TAIL, DELETE がこれにあたります。
単純な変換を行うACTIONです。HIRAGANA, KATAKANA, HANKAKU_KANA, HANKAKU, ZENKAKU, SYMBOL, UPPER, LOWERがこれにあたります。
漢字変換中の文節に関連したACTIONです。CLA_HIRAGANA, CLA_KATAKANA, CLA_HANKAKU_KANA,CLA_ZENKAKU, CLA_HANKAKU, NEXT_CLAUSE, PREV_CLAUSE, SHORTEN_CLAUSE, EXTEND_CLAUSE, NEXT_CANDIDATE, PREV_CANDIDATEがこれにあたります。
今の状態でこのようなACTIONは許されないことを示します。KEYBINDファイルに,このようなACTIONが記述されていると,KEYBINDコンパイラは警告を出します。
このACTIONが来たときにはアプリケーションは何も実行しないことを示します。
ACTION | 初期状態 | 入力状態 | かな変換状態 | 漢字変換状態 |
---|---|---|---|---|
START | 入力状態 (1) | error | error | error |
START_SELECTED | 入力状態 (1) | error | error | error |
ECHO | error | 入力状態 (2) | error | error |
カーソル | error | 入力状態 (2) | error | error |
かな変換 | error | かな変換状態 (3) | かな変換状態 (6) | かな変換状態 (13) |
CONVERT | error | 漢字変換状態 (4) | 漢字変換状態 (7) | no action |
DONE | no action | 初期状態 (5) | 初期状態 (8) | 初期状態 (11) |
文節操作 | error | error | error | 漢字変換状態 (10) |
RESTORE_STRING | error | no action | 入力状態 (9) | 入力状態 (12) |
RESTORE_ECHO | error | かな変換状態 (3) | かな変換状態 (6) | かな変換状態 (13) |
この章では,IMLIB ルーチンについて説明します。
5.1 IMLIBルーチンとは?
IMLIBルーチンとは,ユーザが,かな漢字変換のキー定義をできるようなアプリケーションを作成するためのルーチンです。
5.1.1 プログラミング言語
IMLIBルーチンは,C言語用のインターフェイス(Cバインディング) と,C以外の言語のためのインターフェイス(VMSバインディング)の2つのインターフェイスを提供します。
5.2 PROFILEに関連するルーチン
5.2.1 PROFILEのオープン
IMLIBを使うアプリケーションは,まず最初にPROFILEをオープンします(OPEN PROFILE)。 OPEN PROFILEをしなければ,IMLIBの機能を使うことはできません。通常はアプリケーションの起動時にOPEN PROFILEが実行されます。OPEN PROFILEによってPROFILEの情報は,すべてメモリ中に読み込まれます。OPEN PROFILEが返す整数値UNIT IDは,IMLIBの他のルーチンを呼ぶときに使われます。UNIT IDによって複数のコンテキストをコントロールします。
5.2.2 PROFILEのクローズ
アプリケーションは,IMLIBを使い終った後でPROFILEをクローズします (CLOSE PROFILE)。CLOSE PROFILEを行った後は,IMLIBの機能を使うことはできません。通常はアプリケーションの終了時に CLOSE PROFILEを実行します。
5.2.3 PROFILEデータの検索
PROFILEに書かれたデータを検索するには,GET PROFILE DATAを使います。GET PROFILE DATAは,OPEN PROFILEによってメモリ中に読み込まれたデータを検索して,値を返します。
5.2.4 PROFILEデータの変更
アプリケーションがPROFILEに書かれたデータを書き換えるには,SET PROFILE DATAを使います。SET PROFILE DATAは,メモリ中に読み込まれたPROFILEのデータを変更しますので,その後の GET PROFILE DATAは変更の影響を受けます。 WRITE PROFILEによって変更されたメモリ中のデータが,ファイルに書き込まれます。
5.2.5 PROFILEデータの書き込み
SET PROFILE DATAによって変更されたメモリ中の内容をファイルに反映させるには, WRITE PROFILEを使います。WRITE PROFILEを行わなければ,メモリ中の変更は CLOSE PROFILE によって失われます。
5.3 KEYBINDに関連するルーチン
5.3.1 KEYBIND情報の設定
アプリケーションは,SET KEYBINDによってバイナリ形式のKEYBINDファイルの内容をメモリ中に読み込みます。キーに対応するACTIONを得るためには,SET KEYBIND を実行しておかなければなりません。 KEYBIND情報は1つのUNIT IDにつき1つだけ設定できます。すでに,指定したUNIT IDによってKEYBIND情報が読み込まれていた場合には,古い情報は消えて新しいものと置き換わります。
5.3.2 ACTIONを得るルーチン (C バインディング)
Cバインディングでは,GET KEY ACTIONによってキーに定義されたACTION の情報を得ます。GET KEY ACTIONは1度に複数のACTIONを返しますので,アプリケーションは得られたACTIONを1つずつ実行します。
5.3.3 ACTIONを得るルーチン(VMSバインディング)
VMSバインディングでは,ACTIONを得るために2つのルーチンを使います。まず, SET KEYによってキーを通知して,GET ACTIONによってACTIONを得ます。GET ACTIONは1度に1つのACTIONだけしか返さないので,キーに複数のACTIONが定義されているときには,GET ACTIONを繰り返し呼んで,得られたACTIONを1つずつ実行します。
5.3.4 STATEを初期化するルーチン
KEYBINDの内部状態を初期化するには,INIT KEY STATEを使います。INIT KEY STATE によって,STATEは強制的に "initial" に移ります。GET KEY ACTION (Cバインディング) またはGET ACTION(VMSバインディング) によって,KEYBIND情報の中にそのキーが定義されていないというステータスが返されると,アプリケーションが「初期状態」にない場合には,INIT KEY STATEを呼んで KEYBINDの内部状態を初期化します。
5.3.5 直前のSTATEに戻すルーチン
最近のキーまたは最近の複数キーによるACTIONが不正な場合,またはその ACTIONの結果が不正の場合に, RECOVER KEY STATEによって,そのキーまたは複数キーが押される直前のSTATEに戻すことができます。アプリケーションがその時点の状態を保存していれば,その状態から実行を再開できます。
5.4 KEYCODEに関連するルーチン
5.4.1 キー名文字列からKEYCODEへの変換
GET KEYCODEは,キーの名前を示す文字列を,IMLIBが定義するKEYCODEに変換します。個々のキーのキー名については,『ユーザ・キー定義 利用者の手引き』を参照してください。
5.4.2 KEYCODEに対応する文字を返すルーチン
キーの中には,画面に表示される文字に対応するキーがあります。GET CHARACTERは, KEYCODEに対応する文字を得るのに使われます。指定された KEYCODEが,表示される文字に対応しない場合には,GET CHARACTERはそのことを示すステータスを返します。
5.4.3 半角カナのKEYCODE に対応する文字を返すルーチン
半角カナは文字コードセットによって若干コードが変わりますので,GET CHARACTER にコードセット指定のパラメータを加えた MC GET CHARACTER を使って文字を得ます。 MC GET CHARACTER は半角カナの KEY CODE 以外の入力に対しては GET CHARACTER と同じ動作を行います。
5.4.4 キーが発生するコードからKEYCODEへの変換
キーが発生するコードは,ENCODE KEYによってそのキーに対応するKEYCODEに変換されます。ENCODE KEYには数字キーパッド,編集キーパッド,ファンクション・キーが発生するエスケープ・シーケンスも正しく処理します。
5.4.5 KEYSYMからKEYCODEへの変換
DECwindowsのキー入力ルーチンXLookupString (3X11)が返すKEYSYMの値を KEYSYM TO KEYCODEに渡すと,KEYSYMはIMLIBのKEYCODEに変換されます。
5.4.6 半角カナからKEYCODEへの変換
半角カナは文字コードセットによって若干コードが変わりますので, ENCODE KEY にコードセット指定のためのパラメータを加えた MC ENCODE KEY を使って KEYCODE に変換します。 MC ENCODE KEY は半角カナ以外の入力に対しては ENCODE KEY と同じ動作を行います。
前へ | 次へ | 目次 | 索引 |