前へ | 次へ | 目次 | 索引 |
この章では,PROFILEについて詳しく説明します。
4.1 PROFILEとは?
PROFILEは,かな漢字変換におけるキー定義以外の付加情報が書かれたファイルです。ユーザは,システムが提供するPROFILE,ユーザ独自のPROFILEのどちらでも使うことができます。
PROFILEは通常のテキスト・ファイルで,INDEXとそれに対応するVALUEの 1対1対応の形で,情報が書き込まれています。IMLIB を使うアプリケーションは, PROFILEに書かれた情報を使って,かな漢字変換の動作を決定します。
4.2 標準のPROFILE
通常,標準のPROFILEとして,IM$DEFAULTS:IM$PROFILE.DATが使われます。論理名IM$DEFAULTSは,
IM$DEFAULTS=SYS$LOGIN:,SYS$LIBRARY: |
と定義されていますので,まず SYS$LOGIN:IM$PROFILE.DATが検索され,それが存在しないときにSYS$LIBRARY:IM$PROFILE.DATが使われます。したがって,ユーザ独自のPROFILEを使うときには,ディレクトリに SYS$LOGIN:IM$PROFILE.DATというPROFILEを置いてください。また,PROFILEファイルは,論理名IM$PROFILEを使って直接指定することもできます。
4.3 PROFILE の構文規則
PROFILEの個々のINDEXとVALUEの定義はテキストファイルの1行の中で行われます。INDEXとVALUEはコロン(:)をはさんだ形で以下のように書かれます。
INDEX-STRING : VALUE-STRING |
INDEX-STRINGとVALUE-STRINGで使うことのできる文字は,以下の通りです。
スペース文字とタブ文字はセパレータとして使われます。INDEX-STRING中にはセパレータを含むことはできませんが,VALUE-STRING中にはセパレータを含むことができます。ただし,セパレータは,VALUE-STRINGの最初の文字と最後の文字に使うことはできません。
1行中で,感嘆符(!)またはシャープ記号(#)以降の文字は,注釈として扱われます。
PROFILEの中でINDEXに指定される文字列は,大文字と小文字が区別されませんので,大文字と小文字のどちらを使っても,同じものとして扱われます。これに対してVALUE 文字列は,大文字と小文字が別の文字として扱われますので,指定するときには大文字と小文字を確実に区別しなければなりません。
INDEXにワイルドカードを使うことはできません。
4.4 共通に使用されるINDEX
複数のアプリケーションで共通に使用するためのINDEXとそれに対応するVALUEが定められています。ここではそれらの説明をします。アプリケーションは,できる限り共通のINDEXで指定した動作をするように作られていますので,ここで示される INDEXに対応するVALUEを変えることによって,IMLIBをサポートするすべてのアプリケーションの動作が変わります。
共通に使用されるINDEXを以下に示します。かな漢字変換に関する共通のINDEXは,すべて"DEC-JAPANESE."で始まります。
DEC-JAPANESE.CHAR.CodesetVALUE: deckanji, sdeckanji, eucjp, sjis
説明: アプリケーションが使用する漢字コードセットを指定します。
deckanjiはDEC漢字,sdeckanjiはSuperDEC 漢字, eucjp は日本語EUC,sjisはシフトJIS です。省略時設定はDEC漢字です。
DEC-JAPANESE.CHAR.jisKanaVALUE: on | off (小文字)
説明: コードセットとして DEC 漢字を使用しているときに半角カナを使用するかどうかを指定します。
DEC-JAPANESE.DISP.currentClauseRenditionVALUE: none | bold | blink | reverse | underline (小文字)
説明: 漢字変換時に,現在の文節に付けられるビデオ属性を指定します。
DEC-JAPANESE.DISP.inputRenditionVALUE: none | bold | blink | reverse | underline (小文字)
説明: 文字入力時に,変換範囲にある文字に付けられるビデオ属性を指定します。
DEC-JAPANESE.DISP.kanaRenditionVALUE: none | bold | blink | reverse | underline (小文字)
説明: ひらがな,カタカナ,全角,半角変換時に,変換範囲に付けられるビデオ属性を指定します。
DEC-JAPANESE.DISP.leadingClauseRenditionVALUE: none | bold | blink | reverse | underline (小文字)
説明: 漢字変換時に,現在の文節より前の文節に付けられるビデオ属性を指定します。
DEC-JAPANESE.DISP.preEditColumnVALUE: current | 整数 (小文字)
説明: かな漢字変換を行うスクリーン上のカラムを示します。
currentは現在カーソルがあるカラムを示します。整数はスクリーン上のカラム位置を数字で指定するときに使います。
DEC-JAPANESE.DISP.preEditRowVALUE: current | top | bottom | 整数 (小文字)
説明: かな漢字変換を行うスクリーン上の行を示します。
topは1行目,bottomは最下行,currentは現在カーソルがある行を示します。整数はスクリーン上の行番号を数字で指定するときに使います。
DEC-JAPANESE.DISP.trailingClauseRenditionVALUE: none | bold | blink | reverse | underline (小文字)
説明: 漢字変換時に,現在の文節より後の文節に付けられるビデオ属性を指定します。
DEC-JAPANESE.ECHO.asciiVALUE: hankaku | zenkaku (小文字)
説明: アルファベット文字を入力したときに半角で表示されるか全角で表示されるかを指定します。
DEC-JAPANESE.ECHO.autoRomanKanaVALUE: on | off (小文字)
説明: 入力時にローマ字から指定された字種への自動変換を行うかどうかを指定します。自動ローマ字かな変換した時のエコー字種は,DEC-JAPANESE.ECHO.kana で指定されたものが使われます。
DEC-JAPANESE.ECHO.kanaVALUE: jiskana | hiragana | katakana (小文字)
説明: カナが入力されたときの表示方法を指定します。
jiskanaは半角のカナを,hiraganaとkatakanaは全角を意味します。
DEC-JAPANESE.ECHO.romkanaDBVALUE: ローマ字かな変換テーブルファイルを示す文字列
説明: ローマ字かな変換時に使用するローマ字・かなの対応を記述したファイル名を指定します。
無指定時はライブラリ内部の対応表を使用します。
ローマ字かな変換テーブルファイルのサンプルとして
IM$EXAMPLES:IM$ROMKANA_DB.TEMPLATE
というファイルが用意されています。
DEC-JAPANESE.KEY.keybindVALUE: KEYBINDファイルを示す文字列
説明: KEYBINDファイルを示す文字列には,必要なら拡張子, ".im$dat" が付加されて使用されます。ただし,拡張子が明示的に指定されたときは指定されたものが使用されます。IMLIB の SET KEYBIND が指定された keybind ファイルのロードに失敗した場合は, DEC_JAPANESE.key.keybind_1 のように "_数字" のついたINDEXを1から9まで順に探します。
DEC-JAPANESE.OUTRANGE.clauseNumberVALUE: none | rotate | done (小文字)
説明: 現在の文節が最初の文節にあるときに「前文節」キーが押された場合,または現在の文節が最後の文節にあるときに「次文節」キーが押された場合の動作を指定します。
noneのときは何も実行しません。 rotateが指定されると,現在の文節が最初の文節にあるときには最後の文節に,現在の文節が最後にあるときには最初の文節に移動します。
doneのときは,現在の変換を終了してアプリケーション指定の動作を実行します。
DEC-JAPANESE.OUTRANGE.clauseSizeVALUE: none | rotate | done (小文字)
説明: 文節の大きさが最小になっているときに「文節縮小」キーが押された場合,または文節の大きさが最大になっているときに「文節拡大」キーが押された場合の動作を指定します。
noneのときは何も実行しません。 rotateが指定されると,文節の大きさが最小のときには最大に,文節の大きさが最大のときは最小になります。
doneのときは,現在の変換を終了してアプリケーション指定の動作を実行します。
DEC-JAPANESE.OUTRANGE.cursorPositionVALUE: none | done (小文字)
説明: カーソルが最初の文字にあるときに「左移動」キーが押された場合,またはカーソルが最後の文字にあるときに「右移動」キーが押された場合の動作を指定します。
noneのときは何も実行しません。 doneのときは,現在の変換を終了してアプリケーション指定の動作を実行します。
PROFILEの例を 例 4-1 に示します。
例 4-1 JVMSキー用のPROFILE |
---|
DEC-JAPANESE.CHAR.jisKana : off DEC-JAPANESE.DISP.currentClauseRendition : reverse DEC-JAPANESE.DISP.inputRendition : bold DEC-JAPANESE.DISP.kanaRenditon : bold DEC-JAPANESE.DISP.leadingClauseRendition : none DEC-JAPANESE.DISP.preEditColumn : current DEC-JAPANESE.DISP.preEditRow : current DEC-JAPANESE.DISP.trailingClauseRendition : none DEC-JAPANESE.ECHO.ascii : hankaku DEC-JAPANESE.ECHO.autoRomanKana : off DEC-JAPANESE.ECHO.kana : hiragana DEC-JAPANESE.KEY.keybind : IM$KEY_JVMS_LEVEL2 DEC-JAPANESE.KEY.keybind_1 : IM$KEY_JVMS DEC-JAPANESE.OUTRANGE.clauseNumber : rotate DEC-JAPANESE.OUTRANGE.clauseSize : none DEC-JAPANESE.OUTRANGE.cursorPosition : done |
前章までは,かな漢字変換のキーの割り当ての変更およびPROFILEの変更という比較的簡単にキー定義を変更する方法について説明してきました。この章以降の章では,より細かいキー定義の変更(入力シーケンスのカスタマイズ)を行う方法が説明されています。
入力シーケンスのカスタマイズは,かな漢字変換入力に関する基本的な知識が必要です。少しの変更でも,かな漢字変換の動作全体に影響を与えることがありますので,注意してください。
キー定義のシンタックスは 付録 B を参照してください。
5.1 KEYとACTION
キー定義はキーボード上のキーの名称と,実行される機能(ACTION)の関係を記述したKEYBINDファイルを作ることで行います。1つのKEYに対して複数のACTIONを定義することも,複数のキーに対して1つのACTIONを定義することもできます。
例 5-1 にKEYBINDファイルの中で,KEYとACTIONの関係を記述した部分を示します。この例では[Ctrl/K]キーを押すとカタカナ変換, [Ctrl/L]キーを押すとひらがな変換をするように記述されています。また例の3行目に示されるように,コンマ(,)で区切ることで複数のACTIONを指定することもできます。
例 5-1 KEYとACTIONの記述 |
---|
CTRL_K : KATAKANA; CTRL_L : HIRAGANA; TYPING_KEYS : START, ECHO; |
IMLIBのかな漢字変換キー定義が対象とするキーは,VT280シリーズ端末およびVT382 端末でサポートされるすべてのキーおよびいくつかの特殊キーです。IMLIBがサポートするキー名は, 付録 A を参照してください。IMLIBがサポートするキー名のうち注意が必要なキーについて以下に説明します。
[Ctrl/C]キーは,OpenVMSでは"Cancel"に使われますので,通常の端末設定では定義した動作を実行させることはできません。
[Ctrl/O]キーは,OpenVMSでは画面出力のON/OFFを切り替える目的で使われますので,通常の端末設定では定義した動作を実行させることはできません。
[Ctrl/Q]キーは,OpenVMSではフロー・コントロールの"XON"に使われますので,通常の端末設定では定義した動作を実行させることはできません。
[Ctrl/S]キーは,OpenVMSではフロー・コントロールの"XOFF"に使われますので,通常の端末設定では定義した動作を実行させることはできません。
[Ctrl/Y]キーは,OpenVMSでは"Interrupt"に使われますので,通常の端末設定では定義した動作を実行させることはできません。
すべてのキーにマッチします。どのキーを押しても同じ動作をさせたいときに使用します。
すべての画面に表示されるキー(文字キー,数字キー)にマッチします。
どのキーともマッチしません。マクロ定義において,ある機能にどのキーも定義したくないときに使用します。
KEYBINDファイルには,複数のキーの組合せで1つの機能を実行させたり,2つのキーに同じ機能を持たせるような記述をすることができます。 例 5-2 に組み合わせたキーの記述の例を示します。
複数のキーの組合せで1つの機能を実行させるにはキー名をプラス記号(+)でつなぎます。例の1行目は,KEYBINDファイルの中の1行を抜き出したもので, [PF1]キーを押した後[KP7]キーを押すことで,カタカナ変換を実行することを指示しています。
2つのキーのどちらを押しても同じ機能を実行させるにはキー名をコンマ(,)でつなぎます。例の2行目は,KEYBINDファイルの中の1行を抜き出したもので,[Ctrl/L]キーを押しても,[Ctrl/H]キーを押してもひらがな変換を実行することを指示しています。
また例の3行目のようにかっこを使ってより複雑なキーの記述をすることもできます。この例は,[PF1]キーを押した後[Ctrl/F]キーを押しても,あるいは [Ctrl/G]キーを押した後[Ctrl/F]キーを押しても,半角変換を実行することを指示しています。
例 5-2 組み合わせたキーの記述 |
---|
PF1 + KP7 : KATAKANA; CTRL_L, CTRL_H : HIRAGANA; (PF1, CTRL_G) + CTRL_F : HANKAKU; |
かな漢字変換を行うための個々の機能のことをACTIONと呼びます。かな漢字変換のキー定義を行う時,キーに対応する機能をACTIONの組合せで記述します。
ACTIONによって実行される機能は,細かく規定されています。ユーザはACTIONによって,かな漢字変換におけるアプリケーションの動作をコントロールできます。
5.5 かな漢字変換の内部状態
かな漢字変換を実行しているときには,内部的にいくつかの状態が存在します。ACTION の実行は内部状態によって変わりますので,KEYBINDファイルをカスタマイズするユーザはこれらの内部状態を意識しておかなければなりません。 図 5-1 は,内部状態と状態間の遷移を説明しています。
図 5-1 かな漢字変換の内部状態と状態間の遷移
かな漢字変換を行っていない状態です。この状態にあるときアプリケーションは,かな漢字変換に関係しないアプリケーションの機能を実行します。たとえば,ユーザがかな漢字変換に関係しないところでカーソルを移動しているときが,この状態にあたります。カーソル移動はアプリケーションの機能であり,IMLIBは関係しません。
ユーザがかな漢字変換をするために,「ひらがな」や「ローマ字」を入力しているときがこの状態です。アプリケーションによっては,かな漢字変換の対象となる部分を高輝度やボールド表示にすることがあります。入力途中で間違いに気づいたときの編集は,入力状態で行われます。漢字変換をした後に入力の間違いに気づき,入力文字列に戻したときもこの状態になります。
入力した文字列を「カタカナ」,「全角」などに変換した状態です。
さらに,RESTORE_ECHOアクションによって一時的に変換が解除されたときもこの状態になります。
かな漢字変換を行った後の状態です。文節縮小,文節移動,文節カタカナ変換などを行っているときはこの状態にあたります。
図 5-1 に示される状態の間の遷移は,ACTIONやその他の条件によって起こります。ここでは,状態間の遷移を引き起こす条件について説明します。
表 5-1 はACTIONによる状態間の遷移を示す表です。この表は,ACTIONを実行する前の状態と実行後の状態をまとめたものです。表の中で使われている表記は以下の通りです。
カーソル移動に関連した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) |
前へ | 次へ | 目次 | 索引 |