int XwcLookupString(ic, event, buffer_return, bytes_buffer, keysym_return, status_return)
XIC ic;
XKeyPressedEvent *event;
wchar_t *buffer_return;
int wchars_buffer;
KeySym *keysym_return;
Status *status_return;
引き数 keysym_return が NULL でなく、かつ、引き数 status_return が KeySym が返されることを示している場合には、KeySym は、引き数 keysym_return に返 される。KeySym にはイベントから得られた KeyCode がマッピングされている。 文字列と KeySym の両方が返されている場合、KeySym が必ず文字列に一致す るとは限らない。
XmbLookupString は文字列の長さをバイト数で返し、 XwcLookupString は文字列の長さを文字数で返す。 XmbLookupString と XwcLookupString はいずれも、指定した入力コンテクストの入力メソッドに結びつけられた ロケールのエンコーディングで文字列を返す。
XmbLookupString と XwcLookupString によって返された文字列は、ロケールのエンコーディングの初期状態で始まる (ロケールのエンコーディングが状態依存の場合)。
正しい入力処理を保証するためには、クライアントは KeyPress イベントのみを XmbLookupString および XwcLookupString に送ることが重要である。 クライアントが KeyRelease イベントを送った場合の動作は未定義である。
クライアントは、まず引き数 status_return をチェックしてから他の返り値を 使用すべきである。 いずれの関数も、他の引き数に何が返されたかを示す引き数 status_return に値 を返す。 返される値を以下に示す。
XBufferOverflow |
返されるべき入力文字列が、与えられた buffer_return よりも大きい。
必要なサイズ
(XmbLookupString
の場合はバイト数、
XwcLookupString
の場合は文字数)は、関数の値として返され、buffer_return および
keysym_return の内容は変更されない。
文字列を得るためには、クライアントは適切な大きさのバッファを用意してか
ら、同じイベントに対してこれらの関数を再び呼び出さなければならない。
|
XLookupNone |
正しい入力が今のところ構成されていない。
buffer_return および keysym_return の内容は変更されず、関数は 0 を返す。
|
XLookupChars |
入力文字列が構成されている。
これらは引き数 buffer_return に格納され、文字列の長さが関数の値として返
される。
文字列は入力コンテクストに結びつけられたロケールでエンコードされている。
引き数 keysym_return の内容は変更されない。
|
XLookupKeySym |
文字列ではなく KeySym が返され、この KeySym は keysym_return に返され
る。
引き数 buffer_return の内容は変更されず、関数は 0 を返す。
|
XLookupBoth |
KeySym と文字列の両方が返された。
XLookupChars
と
XLookupKeySym
が同時に起こる。
|
XmbLookupString と XwcLookupString に引き数として渡された入力コンテクストが現在フォーカスを所有していてもそ うでなくても、結果に違いは生じない。 入力はフォーカスを失う前に入力コンテクスト内で構成されているので、 キーボードフォーカスが失われてしまっても、その入力はその後で呼び出された XmbLookupString や XwcLookupString の呼び出しで返される。