[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]

5 入力シーケンスのカスタマイズ

前章までは,かな漢字変換のキーの割り当ての変更および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;

5.2 定義できるキーの範囲

IMLIBのかな漢字変換キー定義が対象とするキーは,VT280シリーズ端末および VT382端末でサポートされるすべてのキーおよびいくつかの特殊キーです。 IMLIBがサポートするキー名は, 付録 A を参照してください。 IMLIBがサポートするキー名のうち注意が必要なキーについて以下に説明します。

5.3 キーの組合せの表記法

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;

5.4 ACTIONとその動作

かな漢字変換を行うための個々の機能のことをACTIONと呼びます。 かな漢字変換のキー定義を行う時,キーに対応する機能をACTIONの組合せで記述します。

ACTIONによって実行される機能は,細かく規定されています。 ユーザはACTIONによって,かな漢字変換におけるアプリケーションの動作をコントロールできます。

5.5 かな漢字変換の内部状態

かな漢字変換を実行しているときには,内部的にいくつかの状態が存在します。 ACTIONの実行は内部状態によって変わりますので, KEYBINDファイルをカスタマイズするユーザはこれらの内部状態を意識しておかなければなりません。 図 5-1は,内部状態と状態間の遷移を説明しています。

図 5-1 かな漢字変換の内部状態と状態間の遷移

5.6 状態間の移動

図 5-1に示される状態の間の遷移は, ACTIONやその他の条件によって起こります。 ここでは,状態間の遷移を引き起こす条件について説明します。

表 5-1はACTIONによる状態間の遷移を示す表です。 この表は,ACTIONを実行する前の状態と実行後の状態をまとめたものです。 表の中で使われている表記は以下の通りです。

表 5-1 状態間の遷移

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)

5.7 ACTIONの意味

ACTIONには上に示したものに加えてGOTOが存在します。 GOTOは特殊なACTIONで,KEYBINDファイルの中のSTATEを移動するために使われます。 STATEについては,第5.8節を参照してください。 GOTOは,1つのキーにつき最後の ACTION として1つだけ指定することができます。

5.8 STATEとは?

IMLIBでは,1つのキーに,場面により異なる機能を定義することができるようになっています。 これを可能にするのがSTATEです。キー定義は,必ずどれかのSTATEに属しますので, 1つのキーには存在するSTATEの数だけ違った機能を持たせることができます。

アプリケーションを起動したとき最初に属するSTATEは"initial"です。 STATEの名称のうち"initial"だけはシステムで定義されていて, KEYBINDファイルの中には必ず1つだけSTATE "initial"が存在します。

その他のSTATEの名称はユーザが自由に決めることができます。 ただし,STATEの名称とGOTO ACTIONにより指定される次の STATEは互いに対応がとれていなければなりません。

5.8 STATEの記述方法

例 5-3にKEYBINDファイルの中で STATEを記述する例を示します。1つのSTATEはSTATE "string" = で始まり,END;で終了します。 この間に書かれるキーとACTIONの関係は,そのSTATE内でのみ有効です。

例 5-3 STATEの記述例

    STATE "initial" =
        PF1 : START, GOTO "input_state";
    END;

    STATE "input_state" =
        PF1 : DONE, GOTO "initial";
        TYPING_KEYS : ECHO;
    END;

この例を順に説明します。

  1. 最初のSTATEは"initial"です。このキー定義によると "initial"では<PF1>キーだけが定義されています。

  2. <PF1>キーを押すと,STARTが実行されて入力が始まる状態になります。 またGOTOによって"input_state"に移ります。

  3. "input_state"ではTYPING_KEYS(表示されるキー)を押すとECHOが実行されます。

  4. 再び<PF1>キーを押すとDONEによって入力状態を終了して, GOTO "initial"によって"initial"に戻ります。

5.10 マクロの使い方

KEYBINDファイルのキー名の記述には,マクロを使うことができます。 マクロを使うことによってキーの割り当ての変更が容易になります。 例 5-4はマクロを使わないKEYBINDファイルの記述例です。 同じ記述をマクロを使って書くと例 5-5のようになります。

マクロを使うと,あるキーに割り当てられていた機能を他のキーへ変更することが, マクロの変更だけでできるようになります。 マクロ部分だけを別ファイルとすることもできますので, 本体を記述したファイルを変更せずにキーの割り当てだけを変更できます。

また,マクロを使うと複数のSTATEで定義されたキーの変更が容易になります。 キー定義はSTATEごとに行わなければなりません。 したがって,複数のSTATEで同じ機能を実行しているようなときに, キー割り当てを変更しようとすると, マクロを使っていない場合は,各STATEに書かれている該当するキーをすべて 書き換えなければなりません。 しかし,例 5-5のようにマクロを使って記述すれば, マクロ部分をhiragana_henkan = CTRL_Lというように変更するだけで, すべてのSTATEにおけるひらがな変換のキーは[Ctrl/L]に変えることができます。

コンパイラは,マクロが展開できなくなるまで,あるいは展開された文字列が キー名に一致するまでマクロ展開を繰り返します。 ただし,マクロ展開は最大 10回までに制限されています。 マクロ展開が10回を超えると,コンパイラはエラーを出力して終了します。

例 5-4 マクロを使わないキー定義

! キー定義本体
STATE "x" =
   .
   .
   .
    CTRL_L : HIRAGANA;
   .
   .
   .
END;

STATE "y" =
   .
   .
   .
    CTRL_L : HIRAGANA;
   .
   .
   .
END;

例 5-5 マクロを使ったキー定義

! マクロ部分
hiragana_henkan = CTRL_L;

! キー定義本体
STATE "x" =
   .
   .
   .
    hiragana_henkan : HIRAGANA;
   .
   .
   .
END;

STATE "y" =
   .
   .
   .
    hiragana_henkan : HIRAGANA;
   .
   .
   .
END;


[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ] [ DOC Home ]