XGetDeviceKeyMapping(3XI) — NEWS-OS Programmer’s Manual
名称
XGetDeviceKeyMapping, XChangeDeviceKeyMapping − デバイスのキーマッピングの問い合わせと変更
形式
XChangeDeviceKeyMapping(display, device, first_keycode, keysyms_per_keycode, keysyms, keycode_count)
Display ∗display;
XDevice ∗device;
int first_keycode;
int keysyms_per_keycode;
KeySym ∗keysyms;
int keycode_count;
KeySym ∗XGetDeviceKeyMapping(display, device, first_keycode, keycode_count,
keysyms_per_keycode_return)
Display ∗display;
XDevice ∗device;
KeyCode first_keycode;
int keycode_count;
int ∗keysyms_per_keycode_return;
引数
display X サーバとの接続を指定する。
device 要求または変更するキーマッピングのデバイスを指定する。
first_keycode 返すべき最初の KeyCode を指定する。
keycode_count
返すべきまたは変更する KeyCodes の数を指定する。
keysyms_per_keycode
KeyCode 当たりの KeySyms の数を指定する。
keysyms_per_keycode_return
KeyCode 当たりの KeySyms の数が返される変数のアドレスを指定する。
keysyms KeySyms 列のアドレスを指定する。
解説
XGetDeviceKeyMapping リクエストは 指定されたデバイスの first_keycode で始まる KeyCode のシンボルを 指定された数だけ返します。 first_keycode に指定する値は XListInputDevices が返す min_keycode 以上でなければなりません。 そうでなければ、BadValue エラーとなります。 さらに、 以下の式は XListInputDevices によって返される max_keycode 以下でなければ なりません。
first_keycode + keycode_count − 1
そうでなければ、BadValue エラーとなります。 KeySyms リスト内の要素の数は次の式でえられます。
keycode_count ∗ keysyms_per_keycode_return
KeyCode K に対応する (ゼロから数えて) N 番目 の KeySym のリスト内の (ゼロから数えた) インデックスは 次のようになります。 (K − first_code) ∗ keysyms_per_code_return + N
X サーバはリクエストした全てのシンボルを 報告できるように、 適切な keysyms_per_keycode_return の値を返します。 NoSymbol という特別な KeySym 値は個々のKeyCodeの未使用エメレント を満たすために使用されます。 XGetDeviceKeyMapping が返すストレージを開放する場合、 XFreeを使用します。
指定デバイスが入力クラス KeyClass をサポートしていない場合、 BadMatch エラーとなります。
XGetDeviceKeyMapping は BadDevice、BadMatch、または BadValue エラーを生成します。
XChangeDeviceKeyMapping リクエストは指定されたデバイスの first_keycode で始まる 指定された数の KeyCode のシンボルを定義します。 この範囲を超えた KeyCodes のシンボルは変更されずにそのままです。 keysyms の要素の数は以下でなければなりません。
num_codes ∗ keysyms_per_keycode
指定された first_keycode は XListInputDevices が返す min_keycode 以上でなければなりません。 そうでなければ、 BadValue エラーとなります。 さらに、次の式は XListInputDevices が返す max_keycode 以下でなければなりません。 そうでない場合 BadValue エラーとなります。
first_keycode + num_codes − 1
KeyCode K に対応する (ゼロから数えて) N 番目 の KeySym の keysyms 内の (ゼロから数えた) インデックスは次のように なります。
(K − first_keycode) ∗ keysyms_per_keycode + N
定義したいシンボルを全て保持できるように、 クライアントは適当な keysyms_per_keycode の値を 指定することが出来ます。 NoSymbol という特別な KeySym 値を、 個々の KeyCode の未使用エレメントを満たすのに使用します。 ある KeyCode に対応する有効なシンボルのリストの中の 最後の場所以外で NoSymbol を使うことが出来ます。
XChangeDeviceKeyMapping は そのタイプのイベントを選択した 全てのクライアントに対して DeviceMappingNotify イベントを 送ります。
X サーバはこのマッピングを解釈しません。 それは、 単にクライアントが読んだり、書き込んだりするためだけに格納されます。
指定デバイスが入力クラス KeyClass をサポートしていない場合、 BadMatch エラーとなります。
XChangeDeviceKeyMapping は BadDevice、 BadMatch、 BadAlloc または BadValue エラーを 生成します。
診断
BadDevice 無効なデバイスが指定された。 指定されたデバイスが存在しない、 または XOpenInputDevice を使ってクライアント によりオープンされていない。 指定されたデバイスが X キーボードまたは X ポインタデバイスの場合、 このエラーが発生します。
BadMatch XGetDeviceKeyMapping または XChangeDeviceKeyMapping リクエストで キーを持たないデバイスが指定された場合、 このエラーが発生します。
BadValue いくつかの数値がリクエストの許容範囲外です。 範囲が特に指定された場合を除いて、 引数の値は そのタイプによって定義された領域のすべてをとることが出来ます。 引数が二者択一のセットで定義された場合このエラーが発生することがあります。
BadAlloc サーバがリクエストした資源またはサーバ メモリの割り当てに失敗した。
関連事項
XSetDeviceButtonMapping(3XI)
XSetDeviceModifierMapping(3XI)
Programming with Xlib
NEWS-OSRelease 4.2.1R