XRefreshKeyboardMapping(3) Latin-1 のキーボード入力イベントの処理

Other Alias

XLookupKeysym, XLookupString, XRebindKeySym

書式

KeySym XLookupKeysym(key_event, index)

      XKeyEvent *key_event;

      int index;

XRefreshKeyboardMapping(event_map)

      XMappingEvent *event_map;

int XLookupString(event_struct, buffer_return,
 bytes_bufferkeysym_returnstatus_in_out)

      XKeyEvent *event_struct;

      char *buffer_return;

      int bytes_buffer;

      KeySym *keysym_return;

      XComposeStatus *status_in_out;

XRebindKeysym(display, keysym, list, mod_count, string, num_bytes)

      Display *display;

      KeySym keysym;

      KeySym list[];

      int mod_count;

      unsigned char *string;

      int num_bytes;

引き数

buffer_return
トランスレートされた文字が返される。
bytes_buffer
バッファの大きさを指定する。 トランスレーションの結果が返される。 bytes_buffer を越えた分は返されない。
num_bytes
引き数 string のバイト数を指定する。
display
X サーバへの接続を指定する。
event_map
使用するマッピングイベントを指定する。
event_struct
使用するキーイベント構造体を指定する。 XKeyPressedEvent または XKeyReleasedEvent を指定できる。
index
イベントの KeyCode から KeySym を調べるためのリストを示すインデックスを指定する。
key_event
KeyPress イベントか KeyRelease イベントを指定する。
keysym
再バインドされる KeySym を指定する。
keysym_return
この引き数が NULL でなければ、イベントから求めた KeySym が返される。
list
モディファイアとして使う KeySym のリストを指定する。
mod_count
モディファイアのリスト内のモディファイアの数を指定する。
status_in_out
XComposeStatus 構造体か NULL を指定する。 またはこれらが返される。
string
XLookupString にコピーされ、返される文字列を指定する。

説明

関数 XLookupKeysym は、指定されたキーボードイベントとユーザが指定したインデックスを使って、 リストから取り出した KeySym を返す。この KeySym は、 XKeyPressedEvent 構造体と XKeyReleasedEvent 構造体の keycode メンバに対応する。 イベントの KeyCode に対する KeySym が定義されていなければ、 XLookupKeysymNoSymbol を返す。

関数 XRefreshKeyboardMapping は、格納されているモディファイアとキーマップの情報を更新する。 通常この関数が呼び出されるのは MappingNotify イベントが発生して、その request メンバが MappingKeyboardMappingModifier だったときである。 関数を呼び出した結果、Xlib のキーボードの情報が更新される。

XLookupString はキーイベントを KeySym と文字列にトランスレートする。 KeySym は X プロトコル仕様で定義されている Shift, Lock, グループ、numlock モディファイアの標準の解釈を使って取得する。 KeySym が再バインドされていた場合( XRebindKeysym を参照)、バインドされている文字列がバッファに格納される。 そうでない場合、可能であれば KeySym は ISO Latin-1 文字か (Control モ ディファイアが有効であれば) ACSII 制御文字にマップされ、その文字がバッ ファに格納される。 XLookupString はバッファに格納した文字数を返す。

もし XComposeStatus 構造体が存在していれば(NULLでなければ)、 この構造体には組み立て処理を行うするための XLookupString の呼び出しの間で保存が必要な状態が記録される。 この状態は Xlib のプライベートなものである。 XComposeStatus の生成は実装依存である。 移植性を必要とするプログラムでは、この引き数に NULL を渡すべきである。

関数 XRebindKeysym を使うとクライアントにとっての KeySym の意味を再バインドできる。 この関数は X サーバのキーを再定義するのではなく、単に長い文字列をキー に割り当てる簡単な方法を提供するものである。 XLookupString は適切な組合せのモディファイアキーが押された時と、KeySym がトランスレーション に対して用いられた時にこの文字列を返す。 テキスト変換は行われない。 適切にエンコードした文字列を与えるのはクライアントの責任である。 存在しない KeySym にも再バインドができる点に注意すること。