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

5 IMLIBライブラリ・ルーチン

この章では,IMLIBルーチンについて説明します。

5.1 IMLIBルーチンとは?

IMLIBルーチンとは,ユーザが, かな漢字変換のキー定義をできるようなアプリケーションを作成するためのルーチンです。

5.1.1 プログラミング言語

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によって,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と同じ動作を行います。

5.5 IMLIBルーチン

IMLIBルーチンのインターフェイスと機能についてに個々に示します。


OPEN PROFILE

PROFILEを読み込み,そのcontextを示すunit IDを返します。

VMSバインディング

status=IM$OPEN_PROFILE(file, unit_id)

戻り値

OpenVMS 用法 cond_value
データ型 longword (unsigned)
アクセス write_only
受け渡し方 by value

引数

file
OpenVMS用法 char string
データ型 char string
アクセス read only
受け渡し方 by descriptor

PROFILEのファイル指定です。このパラメータに長さ0の文字列が渡されると, 論理名 IM$PROFILEで指定されるファイルが,省略時のPROFILEとして使われます。

unit_id
OpenVMS用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス write only
受け渡し方 by reference

Unit IDと呼ばれる正の整数値が返されます。 Unit IDは以後のIMLIBルーチンの呼び出しで使われます。

Cバインディング

status=ImOpenProfile(file, unit_id)

戻り値

OPEN PROFILEは条件値を返します。

引数

char *file (Input)
PROFILEのファイル指定です。このパラメータにヌル・ポインタ(NULL)が渡されると, 論理名IM$PROFILEで指定されるファイルが省略時のPROFILEとして使われます。

int *unit_id (Output)
Unit IDと呼ばれる正の整数値が返されます。 Unit IDは以後のIMLIBルーチンの呼び出しで使われます。

説明

OPEN PROFILEはPROFILEファイルを読み込み,メモリ上にPROFILEのデータ構造を作ります。 OPEN PROFILEは,このデータ構造を示すためのUnit IDを返します。 Unit IDは,以後のIMLIBルーチンの呼び出しにおいてここで作られたデータ構造を指定するために使われます。

省略時のPROFILEファイルのdefault file specificationは,"IM$DEFAULTS:.DAT"です。 したがって,論理名IM$DEFAULTSで指定されるディレクトリ以外のディレクトリにPROFILEファイルがある場合は, 論理名IM$PROFILEをディレクトリ名から指定しなければなりません。

論理名IM$DEFAULTSは,通常SYS$LOGIN:とSYS$LIBRARY:を指定しています。

戻される条件値

シンボル 重大度 メッセージ
IM__SUCCESS Success Normal successful completion.
IM__FILNOTFND Error File not found.
IM__CANNOTOPN Error Cannot open.
IM__INSVIRMEM Error Insufficient virtual memory.
IM__SYNTAXERR Error Syntax error.
IM__READERR Error File read error.
IM__INVSTRDES Error Invalid string descriptor.


WRITE PROFILE

PROFILEのデータ構造を指定したファイルに書き込みます。

VMSバインディング

status=IM$WRITE_PROFILE(unit_id, file)

戻り値

OpenVMS 用法 cond_value
データ型 longword (unsigned)
アクセス write_only
受け渡し方 by value

引数

unit_id
OpenVMS用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス read only
受け渡し方 by reference

OPEN PROFILEによって返された整数値。

file
OpenVMS用法 char string
データ型 char string
アクセス read only
受け渡し方 by descriptor

書き込むPROFILEファイル名の指定。文字列の長さが0のときはOPEN PROFILE で使われたファイルと同じファイル名が使われます。

Cバインディング

status=ImWriteProfile(unit_id, file)

戻り値

WRITE PROFILEは条件値を返します。

引数

int unit_id (Input)
OPEN PROFILEによって返された整数値。

char *file (Input)
書き込むPROFILEファイル名の指定。ヌル・ポインタが(NULL) 指定されたときはOPEN PROFILEで使われたファイルと同じファイル名が使われます。

説明

WRITE PROFILEはPROFILEのデータをファイルに書き込みます。

戻される条件値

シンボル 重大度 メッセージ
IM__SUCCESS Success Normal successful completion.
IM__CANNOTOPN Error Cannot open.
IM__INSVIRMEM Error Insufficient virtual memory.
IM__ILLUNIT Error Illegal unit ID.
IM__WRITEERR Error File write error.
IM__INVSTRDES Error Invalid string descriptor.
IM__INSPRV Error Insufficient priviledge or file protection violation


CLOSE PROFILE

CLOSE PROFILEはOPEN PROFILEとSET KEYBINDによってメモリ中に読み込まれた内容をすべて廃棄します。

VMSバインディング

status=IM$CLOSE_PROFILE(unit_id)

戻り値

OpenVMS 用法 cond_value
データ型 longword (unsigned)
アクセス write_only
受け渡し方 by value

引数

unit_id
OpenVMS用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス read only
受け渡し方 by reference

OPEN PROFILEによって返された整数値。

Cバインディング

status=ImCloseProfile(unit_id)

戻り値

CLOSE PROFILEは条件値を返します。

引数

int unit_id (Input)
OPEN PROFILEによって返された整数値。

説明

CLOSE PROFILEはPROFILEとKEYBINDの構造をすべて廃棄します。 このルーチンはOPEN PROFILEとSET KEYBINDによって割り当てたメモリをすべて解放します。

戻される条件値

シンボル 重大度 メッセージ
IM__SUCCESS Success Normal successful completion.
IM__ILLUNIT Error Illegal unit ID.


SET PROFILE DATA

PROFILEのデータを変更または追加します。

VMSバインディング

status=IM$SET_PROFILE_DATA(unit_id, index-string, value-string)

戻り値

OpenVMS 用法 cond_value
データ型 longword (unsigned)
アクセス write_only
受け渡し方 by value

引数

unit_id
OpenVMS用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス read only
受け渡し方 by reference

OPEN PROFILEによって返された整数値。

index-string
OpenVMS用法 char string
データ型 char string
アクセス read only
受け渡し方 by descriptor

INDEX文字列。

value-string
OpenVMS用法 char string
データ型 char string
アクセス read only
受け渡し方 by descriptor

VALUE文字列。

Cバインディング

status=ImSetProfileData(unit_id, index-string, value-string)

戻り値

SET PROFILE DATAは条件値を返します。

引数

int unit_id (Input)
OPEN PROFILEによって返された整数値。

char *index-string(Input)
INDEX文字列。

char *value-string (Input)
VALUE文字列。

説明

SET PROFILE DATAはPROFILEのデータを変更したり, 新しいデータを追加したりするために使われます。 指定したINDEX文字列がすでにPROFILEに存在すると, そのVALUEが指定したもので置きかわります。 指定したINDEX文字列が存在しない場合には新しいINDEXが作られます。

SET PROFILE DATAは,PROFILEのメモリ上のデータを変更します。 変更されたデータをファイルに書き込むにはWRITE PROFILEを使ってください。 なお,INDEX文字列は大文字・小文字を区別しません。

戻される条件値

シンボル 重大度 メッセージ
IM__SUCCESS Success Normal successful completion.
IM__INSVIRMEM Error Insufficient virtual memory.
IM__INVSTRDES Error Invalid string descriptor.
IM__ILLUNIT Error Illegal unit ID.


GET PROFILE DATA

PROFILEに書かれたデータを検索します。

VMSバインディング

status=IM$GET_PROFILE_DATA(unit_id, index-string, value-string, len)

戻り値

OpenVMS 用法 cond_value
データ型 longword (unsigned)
アクセス write_only
受け渡し方 by value

引数

unit_id
OpenVMS用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス read only
受け渡し方 by reference

OPEN PROFILEによって返された整数値。

index-string
OpenVMS用法 char string
データ型 char string
アクセス read only
受け渡し方 by descriptor

INDEX文字列。

value-string
OpenVMS用法 char string
データ型 char string
アクセス write only
受け渡し方 by descriptor

INDEX文字列に対応する VALUE 文字列。

value-length
OpenVMS用法 word_unsigned
データ型 word (unsigned)
アクセス write only
受け渡し方 by reference

GET PROFILE DATAによって得られた,VALUE文字列のバイト長。これには, 固定長文字列に対するパディング文字は含まれていません。 value-lengthは,value-stringの長さを格納する1ワードのアドレスです。 value-stringがvalue-stringデスクリプタで指定された長さに切り取られた場合は, value-lengthにはその長さが入ります。

Cバインディング

status=ImGetProfileData(unit_id, index-string, value-string, buflen)

戻り値

GET PROFILE DATAは条件値を返します。

引数

int unit_id (Input)
OPEN PROFILEによって返された整数値。

char *index-string(Input)
INDEX文字列。

char *value-string (Output)
VALUE文字列が返されるバッファのアドレス。

int buflen (Input)
VALUE文字列が返されるバッファの長さ。

説明

GET PROFILE DATAは,PROFILEで指定されたデータを検索するために使われます。 INDEX文字列で指定されたPROFILEデータが,VALUE文字列の受け取りバッファに入り切らない場合は, IM__TRUNCATEDが返され,途中までの値がバッファに書き込まれます。 この状態になったら,アプリケーションはより大きいバッファを作って再度GET PROFILE DATAを呼ぶ必要があります。 なお,INDEX文字列の大文字・小文字は区別されません。

戻される条件値

シンボル 重大度 メッセージ
IM__SUCCESS Success Normal successful completion.
IM__INSVIRMEM Error Insufficient virtual memory.
IM__ILLUNIT Error Illegal unit ID.
IM__NOINDEX Error No index.
IM__TRUNCATED Warning String truncated.
IM__INVSTRDES Error Invalid string descriptor.
IM__FATERRLIB Fatal Fatal library internal error.


SET KEYBIND

バイナリ形式のKEYBINDファイルを読み込み,キー定義のデータ構造を作ります。

VMSバインディング

status=IM$SET_KEYBIND(unit_id, file, level)

戻り値

OpenVMS 用法 cond_value
データ型 longword (unsigned)
アクセス read only
受け渡し方 by value

引数

unit_id
OpenVMS用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス write only
受け渡し方 by reference

OPEN PROFILEによって返された条件値。

file
OpenVMS用法 char string
データ型 char string
アクセス read only
受け渡し方 by descriptor

KEYBINDファイルのファイル指定をする文字列。 このパラメータが長さ0の文字列のときは, PROFILEのDEC-JAPANESE.KEY.keybindという INDEXで指定されるファイルが,省略時のKEYBINDファイルとして使われます。

level
OpenVMS用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス read only
受け渡し方 by reference

アプリケーションがサポートするACTIONのレベルを指定します。 このマニュアルに記述されているACTIONのレベルは"2"です。 このパラメータには整数値2を指定してください。 サポートレベルとして1を指定した場合, サポートレベルが2以上のKEYBINDファイルを読み込むことはできません。

Cバインディング

status=ImSetKeybind(unit_id, file, level)

戻り値

SET KEYBINDは条件値を返します。

引数

int unit_id (Input)
OPEN PROFILEによって返された整数値。

char *file (Input)
KEYBINDファイルのファイル指定をする文字列。 このパラメータにヌル・ポインタ (NULL)が指定されたときには, PROFILEのDEC-JAPANESE.KEY.keybindというINDEXで指定されるファイルが, 省略時の KEYBINDファイルとして使われます。

int level (Input)
アプリケーションがサポートするACTIONのレベルを指定します。 このマニュアルに記述されているACTIONのレベルは"2"です。 このパラメータには整数値 2を指定してください。 サポートレベルとして 1を指定した場合,サポートレベルが 2以上の KEYBINDファイルを読み込むことはできません。

説明

SET KEYBINDはKEYBINDのデータ構造を作成し,そのデータ構造をPROFILEに結び付けます。 指定したPROFILEに既にKEYBINDが存在するときには, 古いKEYBINDが取り除かれ,新しく指定したものに置きかわります。

省略時のKEYBINDファイルのdefault file specificationは, "IM$DEFAULTS:.IM$DAT"です。したがって,論理名 IM$DEFAULTSで指定されるディレクトリ以外のディレクトリに KEYBINDファイルがある場合は,PROFILEファイル中の VALUEをディレクトリ名から指定しなければなりません。

論理名IM$DEFAULTSは,通常SYS$LOGIN:とSYS$LIBRARY:を指定しています。

戻される条件値

シンボル 重大度 メッセージ
IM__SUCCESS Success Normal successful completion.
IM__FILNOTFND Error File not found.
IM__CANNOTOPN Error Cannot open.
IM__INSVIRMEM Error Insufficient virtual memory.
IM__ILLUNIT Error Illegal unit ID.
IM__ILLFORMAT Error Illegal data format.
IM__ILLLEVEL Error Illegal level number or file level mismatch.
IM__NOINDEX Error No index.
IM__READERR Error File read error.
IM__INVSTRDES Error Invalid string descriptor.


GET KEY ACTION

キーに定義されたACTIONを調べます。

VMSバインディング

VMSバインディングはありません。 SET KEYおよびGET ACTIONを参照してください。

Cバインディング

status=ImGetKeyAction(unit_id, key_code, action_list)

戻り値

GET KEY ACTIONは条件値を返します。

引数

int unit_id (Input)
OPEN PROFILEによって返された整数値。

int key_code (Input)
キーの整数表現(KEYCODE)。KEYCODEの定数表記は 付録 Bを参照してください。

int *action_list [] (Output)
ACTIONが返される配列。配列の最後のエレメントは値0で示されます。 ACTIONの定数表記は 付録 Bを参照してください。

説明

GET KEY ACTIONは,キーに定義されたACTIONを得るために使われます。 ACTIONは整数の配列として返されます。 同じキーであっても,そのときの状態によってACTIONが変わることがありますので, キーが入力されるたびにGET KEY ACTIONによって実行するACTIONを得てください。

"Key not defined"という条件値は,そのキーがその状態で, ユーザによって定義されていないことを示します。 この場合は,アプリケーションが定義する機能を実行します。

"Wait for next key"という条件値は, <GOLD>キーのようなそのキーだけでは完結しないキーが入力されたことを示します。 この場合,アプリケーションは GET KEY ACTIONをもう一度呼んで,複数キーに定義された ACTIONを得なければなりません。アプリケーションは,GET KEY ACTIONを "Wait for next key"が出なくなるまで続けることになります。 複数キーは最大16個まで許されています。

戻される条件値

シンボル 重大度 メッセージ
IM__SUCCESS Success Normal successful completion.
IM__ILLUNIT Error Illegal unit ID.
IM__INSVIRMEM Error Insufficient virtual memory.
IM__NOKEYBIND Error Keybind data is not set yet. Execute SET KEYBIND first.
IM__KEYNOTDEFINED Information The specified key is not defined. Execute application defined action.
IM__PARTIALKEY Information The key is middle of a multiple keydefinition. Wait for the next key to complete the key definition.
IM__NOACTION Information The key has no action.


SET KEY

キーに定義されたACTIONを得るために,キーを指定します。

VMSバインディング

status=IM$SET_KEY(unit_id, key_code)

戻り値

OpenVMS 用法 cond_value
データ型 longword (unsigned)
アクセス write_only
受け渡し方 by value

引数

unit_id
OpenVMS用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス read only
受け渡し方 by reference

OPEN PROFILEによって返された条件値。

key_code
OpenVMS用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス read only
受け渡し方 by reference

キーの整数表現(KEYCODE)。 KEYCODEの定数表記は(DEFKEY_APP)を参照してください。

Cバインディング

Cバインディングはありません。GET KEY ACTIONを参照してください。

説明

SET KEYはGET ACTIONと組み合わされて,キーに定義された ACTIONを得るために使われます。SET KEYでキーを指定し, GET ACTIONを繰り返し呼ぶことで複数のACTIONを得ます。 同じキーであってもそのときの状態によってACTIONが変わることがありますので, キーが入力されるたびにACTIONを得てください。

"Key not defined"という条件値は,そのキーがその状態で, ユーザによって定義されていないことを示します。 この場合は,アプリケーションが定義する機能を実行します。

"Wait for next key"という条件値は, [GOLD]キーのようなそのキーだけでは完結しないキーが入力されたことを示します。 この場合,アプリケーションは SET KEYをもう一度呼ばなければなりません。 複数キーは最大16個まで許されています。アプリケーションは SET KEYを "Wait for next key"が出なくなるまで続けることになります。

シンボル 重大度 メッセージ
IM__SUCCESS Success Normal successful completion.
IM__ILLUNIT Error Illegal unit ID.
IM__INSVIRMEM Error Insufficient virtual memory.
IM__NOKEYBIND Error Keybind data is not set yet. Execute SET KEYBINDfirst.
IM__KEYNOTDEFINED Information The specified key is not defined. Execute application defined action.
IM__PARTIALKEY Information The key is middle of a multiple key definition. Wait for the next key to complete the key definition.
IM__NOACTION Information The key has no action.


GET ACTION

KEYによって指定されたキーに定義されたACTIONを得ます。

VMSバインディング

status=IM$GET_ACTION(unit_id, action)

戻り値

OpenVMS 用法 cond_value
データ型 longword (unsigned)
アクセス write_only
受け渡し方 by value

引数

unit_id
OpenVMS用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス read only
受け渡し方 by reference

OPEN PROFILEによって返された整数値。

action
OpenVMS用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス write only
受け渡し方 by reference

次に実行されるACTION。 ACTIONの定数表記は(DEFKEY_APP)を参照してください。

Cバインディング

Cバインディングはありません。GET KEY ACTIONを参照してください。

説明

SET KEYはGET ACTIONと組み合わされて,キーに定義された ACTIONを得るために使われます。SET KEYでキーを指定し, GET ACTIONを繰り返し呼ぶことで,複数のACTION を得ます。 同じキーであってもそのときの状態によってACTIONが変わることがありますので, キーが入力されるたびにACTIONを得てください。 最後のアクションを渡す際に,GET ACTION は action に アクションコードを入れて IM__LASTACTION を返します。 IM__LASTACTION をエラーコードと間違って処理しないようにしてください。

シンボル 重大度 メッセージ
IM__SUCCESS Success Normal successful completion.
IM__LASTACTION Success This is the last action.
IM__ILLUNIT Error Illegal unit ID.
IM__KEYNOTSET Error Key is not specified yet. Call SET KEY beforecalling GET ACTION.


RECOVER KEY STATE

最後にGET KEY ACTIONまたはSET KEYが実行された前のSTATEに戻します。

VMSバインディング

status=IM$RECOVER_KEY_STATE(unit_id)

引数

unit_id
OpenVMS用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス read only
受け渡し方 by reference

OPEN PROFILEによって返された条件値。

Cバインディング

status=ImRecoverKeyState(unit_id)

戻り値

RECOVER KEY STATEは条件値を返します。

引数

int unit_id (Input)
OPEN PROFILEによって返された整数値。

説明

IMLIBに与えられた最近のキー,または最近の複数キーによるACTIONが不正の場合, あるいはそのACTIONの実行結果が不正の場合に,変換中の文字列を確定することを避けるため, そのキーまたは複数キーが押される直前のSTATEに回復します。

注意: 直前のSTATEに戻すのは,アプリケーションの責任です。 最近のACTIONにDONEが入っていた場合,DONEの前の状態に戻すことはできません。

戻される条件値

シンボル 重大度 メッセージ
IM__SUCCESS Success Normal successful completion.
IM__NORECOVER Warning No previous state to recover.
IM__ILLUNIT Error Illegal unit ID.
IM__NOKEYBIND Error Keybind data is not set up yet.


GET KEYCODE

キー名を示す文字列から,そのキーに対応する KEYCODEを得ます。

VMSバインディング

status=IM$GET_KEYCODE(key_name, keycode)

戻り値

OpenVMS 用法 cond_value
データ型 longword (unsigned)
アクセス write_only
受け渡し方 by value

引数

key_name
OpenVMS用法 char string
データ型 char string
アクセス read only
受け渡し方 by descriptor

KEYCODEを知りたいキーのキー名を示す文字列。個々のキーのキー名については, 『(keybind_doc)』を参照してください。

keycode
OpenVMS用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス write only
受け渡し方 by reference

キー名に対応するKEYCODE。

Cバインディング

keycode=ImGetKeycode(key_name)

戻り値

GET KEY CODEはパラメータに渡されたキー名に対応するKEYCODEを返します。 渡された文字列がキー名でない場合はGET KEYCODEは0を返します。

引数

char *key_name (Input)
KEYCODEを知りたいキーのキー名を示す文字列。

説明

GET KEYCODEは,キー名を示す文字列を整数値KEYCODEに変換します。 大文字・小文字は区別されません。

シンボル 重大度 メッセージ
IM__SUCCESS Success Normal successful completion.
IM__NOTKEYNAME Error The string is not a key name.
IM__INVSTRDES Error Invalid string descriptor.


GET CHARACTER

KEYCODEの表示文字を調べます。

VMSバインディング

status=IM$GET_CHARACTER(keycode, ch-string, ch-len)

戻り値

OpenVMS 用法 cond_value
データ型 longword (unsigned)
アクセス write_only
受け渡し方 by value

引数

keycode
OpenVMS用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス read only
受け渡し方 by reference

整数値KEYCODE。

ch-string
OpenVMS用法 char string
データ型 char string
アクセス write only
受け渡し方 by descriptor

KEYCODEによって指定されたキーの表示文字。指定されたKEYCODEがカナキーの KEYCODEのときには,半角カタカナ・コードが返されます。

ch-len
OpenVMS用法 word_unsigned
データ型 word (unsigned)
アクセス write only
受け渡し方 by reference

"ch-string"に書き込まれた文字のバイト数。固定長文字列の場合の パディング文字は含みません。"ch-length"はこのバイト数を示す 1 ワードのアドレスです。文字列が ch-stringデスクリプタによって指定された長さに切られたときには, "ch-length"はこの長さになります。

Cバインディング

status=ImGetCharacter(keycode, ch)

戻り値

GET CHARACTERは条件値を返します。

引数

unsigned int keycode (Input)
整数値KEYCODE。

unsigned char *ch (Output)
KEYCODEに対応する表示文字の文字列。この文字列はヌル文字で終了します。 指定されたKEYCODEがカナキーのKEYCODEのときには, 半角カタカナ・コードが返されます。

説明

GET CHARACTERは,KEYCODEに対応する表示文字を得るのに使われます。 もし,'g'キーに対応するKEYCODEをGET CHARACTERに渡すと,文字列"g"を得ることができます。

表示文字は最大1バイトなので,アプリケーションは"ch"のために, 終端のヌル文字を含めて最低 2バイト用意しなければなりません。

戻される条件値

シンボル 重大度 メッセージ
IM__SUCCESS Success Normal successful completion.
IM__NOPRINTABLE Information The keycode is not for a key of printable character.
IM__INVKEYCODE Error Invalid keycode
IM__INVSTRDES Error Invalid string descriptor.
IM__FATERRLIB Fatal Fatal library internal error.


MC GET CHARACTER

KEYCODEの表示文字を調べます。

VMSバインディング

status=IM$MC_GET_CHARACTER(keycode, ch-string, ch-len,codeset)

戻り値

OpenVMS 用法 cond_value
データ型 longword (unsigned)
アクセス write_only
受け渡し方 by value

引数

keycode
OpenVMS用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス read only
受け渡し方 by reference

整数値KEYCODE。

ch-string
OpenVMS用法 char string
データ型 char string
アクセス write only
受け渡し方 by descriptor

KEYCODEによって指定されたキーの表示文字。指定されたKEYCODEがカナキーの KEYCODEのときには,半角カタカナ・コードが返されます。

ch-len
OpenVMS用法 word_unsigned
データ型 word (unsigned)
アクセス write only
受け渡し方 by reference

"ch-string"に書き込まれた文字のバイト数。固定長文字列の場合の パディング文字は含みません。"ch-length"はこのバイト数を示す 1ワードのアドレスです。文字列が ch-stringデスクリプタによって指定された長さに切られた場合には, "ch-length"はこの長さになります。

codeset
OpenVMS用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス read only
受け渡し方 by reference

アプリケーションで使用しているコードセット。

Cバインディング

status=ImMCGetCharacter(keycode, ch, codeset)

戻り値

GET CHARACTERは条件値を返します。

引数

unsigned int keycode (Input)
整数値KEYCODE。

unsigned char *ch (Output)
KEYCODEに対応する表示文字の文字列。この文字列はヌル文字で終了します。 指定されたKEYCODEがカナキーのKEYCODEのときには, 半角カタカナ・コードが返されます。

int codeset (Input)
アプリケーションで使用しているコードセット。

説明

MC GET CHARACTERは,KEYCODEに対応する表示文字を得るのに使われます。 もし,'g'キーに対応するKEYCODEをMC GET CHARACTERに渡すと, 文字列 "g"を得ることができます。

MC GET CHARACTERは,コードセットにより異なる半角カナのコードに対応しています。 コードセットして指定できるシンボルは次のとおりです。

シンボル コードセット 半角カナコード
IM$C_DECKANJI DEC漢字 0xA1〜0xDF
IM$C_SDECKANJI SuperDEC漢字 SS2(0x8E) + 0xA1〜0xDF
IM$C_EUCJP 日本語EUC SS2(0x8E) + 0xA1〜0xDF
IM$C_SJIS シフトJIS 0xA1〜0xDF

表示文字は最大2バイトなので,アプリケーションは"ch"のために, 終端のヌル文字を含めて最低 3バイト用意しなければなりません。

戻される条件値

シンボル 重大度 メッセージ
IM__SUCCESS Success Normal successful completion.
IM__NOPRINTABLE Information The keycode is not for a key of printable character.
IM__INVKEYCODE Error Invalid keycode
IM__INVSTRDES Error Invalid string descriptor.
IM__FATERRLIB Fatal Fatal library internal error.
IM__INVCODESET Error Invalid Codeset Specified.


INIT KEY STATE

キーのSTATEを初期化します。STATEは"initial"に移ります。

VMSバインディング

status=IM$INIT_KEY_STATE(unit_id)

引数

unit_id
OpenVMS用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス read only
受け渡し方 by reference

OPEN PROFILEによって返された整数値。

Cバインディング

status=ImInitKeyState(unit_id)

戻り値

INIT KEY STATEは条件値を返します。

引数

int unit_id (Input)
OPEN PROFILEによって返された整数値。

説明

INIT KEY STATEは,キーのSTATEを初期化します。 状態はシステム定義のSTATEである "initial"に移ります。 "initial"はSET KEYBINDが行われたときの最初のSTATEです。

戻される条件値

シンボル 重大度 メッセージ
IM__SUCCESS Success Normal successful completion.
IM__ILLUNIT Error Illegal unit ID.
IM__NOKEYBIND Error Keybind data is not set yet. Execute SET KEYBIND first.


ENCODE KEY

通常の文字,数字キーに対応するコード, またはファンクション・キーやキーパッド・キーが発生するエスケープ・シーケンスからKEYCODEを作ります。

VMSバインディング

status=IM$ENCODE_KEY(string, keycode)

戻り値

OpenVMS 用法 cond_value
データ型 longword (unsigned)
アクセス write_only
受け渡し方 by value

引数

string
OpenVMS用法 char string
データ型 char string
アクセス read only
受け渡し方 by descriptor

文字列。 単純な表示文字に対応するコードまたはエスケープ・シーケンスが指定できます。

keycode
OpenVMS用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス write only
受け渡し方 by reference

表示文字またはエスケープ・シーケンスに対応するKEYCODE。

Cバインディング

keycode=ImEncodeKey(string, length)

戻り値

整数のKEYCODEの値を返します。エラーの場合はENCODE KEYは0を返します。

引数

char *string (Input)
文字列。単純な表示文字に対応するコードまたはエスケープ・シーケンスが指定できます。

int length (Input)
第1パラメータの文字列の長さ。

説明

ENCODE KEYは,表示文字のコードまたはキーボードのキーが発生するエスケープ・シーケンスを, KEYCODEに変換します。 エスケープ・シーケンスが正しくなかったり, サポートされていないときにはエラーとなります。

キーは1つずつ渡さなければなりません。2つ以上のキーを同時に渡すとエラーとなります。 サポートされている表示文字コードは,ASCIIコードと半角カナコードです。 ファンクション・キーなどのようにエスケープ・シーケンスを発生するキーは, エスケープ・シーケンス全体を一度にENCODE KEYに渡す必要があります。

戻される条件値

シンボル 重大度 メッセージ
IM__SUCCESS Success Normal successful completion.
IM__ILLESCAPE Error Illegal escape (sequence.)
IM__INVSTRDES Error Invalid string (descriptor.)


MC ENCODE KEY

通常の文字,数字キーに対応するコード, またはファンクション・キーやキーパッド・キーが発生するエスケープ・シーケンスからKEYCODEを作ります。

VMSバインディング

status=IM$MC_ENCODE_KEY(string, keycode, codeset)

戻り値

OpenVMS 用法 cond_value
データ型 longword (unsigned)
アクセス write_only
受け渡し方 by value

引数

string
OpenVMS用法 char string
データ型 char string
アクセス read only
受け渡し方 by descriptor

文字列。単純な表示文字に対応するコードまたはエスケープ・シーケンスが指定できます。

keycode
OpenVMS用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス write only
受け渡し方 by reference

表示文字またはエスケープ・シーケンスに対応するKEYCODE。

codeset
OpenVMS用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス read only
受け渡し方 by reference

アプリケーションが使用しているコードセット。

Cバインディング

keycode=ImMCEncodeKey(string, length, codeset)

戻り値

整数のKEYCODEの値を返します。エラーの場合はENCODE KEYは0を返します。

引数

char *string (Input)
文字列。単純な表示文字に対応するコードまたはエスケープ・シーケンスが指定できます。

int length (Input)
第1パラメータの文字列の長さ。

int codeset (Input)
アプリケーションが使用しているコードセット。

説明

MC ENCODE KEYは, 表示文字のコードまたはキーボードのキーが発生するエスケープ・シーケンスを,KEYCODEに変換します。 エスケープ・シーケンスが正しくなかったり, サポートされていないときにはエラーとなります。

MC ENCODE KEYは,コードセットによって異なる半角カナのコードに対応しています。 コードセットとして指定できるシンボルは次のとおりです。

シンボル コードセット 半角カナコード
IM$C_DECKANJI DEC漢字 0xA1〜0xDF
IM$C_SDECKANJI SuperDEC漢字 SS2(0x8E) + 0xA1〜0xDF
IM$C_EUCJP 日本語EUC SS2(0x8E) + 0xA1〜0xDF
IM$C_SJIS シフトJIS 0xA1〜0xDF

半角カナコード以外の入力に対する出力は ENCODE_KEYと同じです。

シンボル 重大度 メッセージ
IM__SUCCESS Success Normal successful completion.
IM__ILLESCAPE Error Illegal escape sequence.
IM__INVSTRDES Error Invalid string descriptor.
IM__INVCODESET Error Invalid string descriptor.


KEYSYM TO KEYCODE

DECwindowsのKEYSYMの値を対応するKEYCODEに変換します。

VMSバインディング

status=IM$KEYSYM_TO_KEYCODE(keysym, modifier, keycode)

戻り値

OpenVMS 用法 cond_value
データ型 longword (unsigned)
アクセス write_only
受け渡し方 by value

引数

keysym
OpenVMS用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス read only
受け渡し方 by reference

DECwindowsのKEYSYMの値。

modifier
OpenVMS用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス read only
受け渡し方 by reference

モディファイア・キーを示すビット列。

keycode
OpenVMS用法 longword_unsigned
データ型 longword_integer (unsigned)
アクセス write only
受け渡し方 by reference

KEYCODEを示す整数値。

Cバインディング

keycode=ImKeysymToKeycode(keysym, modifier)

戻り値

KEYSYMに対応するKEYCODEを返します。KEYSYMに対応するKEYCODEがないときは0を返します。

引数

unsigned int keysym (Input)
DECwindowsのKEYSYMの値。

unsigned int modifier (Input)
モディファイア・キーを示すビット列。

説明

KEYSYM TO KEYCODEは,DECwindowsの環境で使われるKEYSYMの値を,IMLIBの KEYCODEに変換します。コントロール・キーのようなモディファイア・キーは, パラメータで指定します。

すべてのモディファイアがサポートされているわけではありませんが, サポートされていないキーが押されたということを示すために, モディファイアは必ず指定してください。

モディファイアを指定するためには以下に示す定数値を使います。

モディファイアのビット列は,XLookupStringによって返されるビット列と同じなので, DECwindowsのアプリケーションはXLookupStringが返す値をそのまま KEYSYM TO KEYCODEに渡すことができます。

KEYSYM TO KEYCODEがサポートするKEYSYMの値は, 付録 Aを参照してください。

戻される条件値

シンボル 重大度 メッセージ
IM__SUCCESS Success Normal successful completion.
IM__UNSUPKEYSYM Error Unsupported keysym.


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