XGetDeviceKeyMapping(3X11)

名前
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_count
    返される、あるいは変更されるキーコードの数を指定する。

keysyms_per_keycode
    キーコードあたりのキーシンボルの数を指定する。

keysyms_per_keycode_return
    キーコードあたりのキーシンボルの数を返す先となる変数のアドレスを指定する。

keysyms
    キーシンボルの配列のアドレスを指定する。

説明
XGetDeviceKeyMapping リクエストは、指定されたデバイスについて、 指定した数のキーコードに対するシンボルを返す。 キーコードは first_keycode から始まる。 first_keycode で指定される値は、XListInputDevices が返す min_keycode 以上でなければならない。そうでない場合には、エラー BadValue となる。 さらに、次の式は XListInputDevices が返す max_keycode 以下でなけ ればならない:

first_keycode + keycode_count - 1

そうでない場合は、エラー BadValue となる。 キーシンボルのリスト中の要素の数は次のようになる:

keycode_count * keysyms_per_keycode_return

キーコード K に対する、番号 N の キーシンボル (0から数える)は、 リスト中で(0から数えて)次のインデックスを持つ: (K - first_code) * keysyms_per_code_return + N

X サーバは keysyms_per_keycode_return の値として、要求された全ての シンボルを知らせるために十分な長さを持つ任意の値を選ぶ。 特殊なキーシンボル値である NoSymbol は特定のキーコードの集合について、未使用の要素を埋めるために使われる。 XGetDeviceKeyMapping が返した値を解放するには、 XFree を使用すること。

指定されたデバイスが入力クラス key をサポートしていない場合は、エラー BadMatch となる。

XGetDeviceKeyMapping はエラー BadDevice, BadMatch, BadValue を起こすことがある。

XChangeDeviceKeyMapping リクエストは、指定されたデバイスについて、 指定された数のキーコードに対するシンボルを定義する。 キーコードは first_keycode から始まる。 この範囲に含まれないキーコードに対するシンボルは変化しない。 キーシンボル中の要素の数は次の数でなければならない:

num_codes * keysyms_per_keycode

指定された first_keycode は XListInputDevices が返した min_keycode 以上の値でなければならない。そうでない場合には、エラー BadValue となる。 さらに次の式は、XListInputDevices が返した max_keycode 以下の 値でなければならず、そうでない場合にはエラー BadValue となる:

first_keycode + num_codes - 1

キーコード K に対する(0から数えて)N 番目のキーシンボルは、 キーシンボル中で0から数えて次のインデックスを持つ:

(K - first_keycode) * keysyms_per_keycode + N

クライアントは、指定する keysyms_per_keycode について、必要な全ての シンボルを保持できる十分な長さである任意の数を選ぶことができる。 特別なキーシンボル値である NoSymbol は、特定のキーコードの集合に対して未使用の要素を埋めるために使われる。 NoSymbol がキーコードに対する有効なリストの最後でない位置に現われるのは正しい。 XChangeDeviceKeyMapping は、そのタイプのイベントを選択した全ての クライアントに送られる DeviceMappingNotify イベントを生成する。

X サーバは、このマッピングを解釈する必要はない。 X サーバは、クライアントによる読み書きのために単に格納しているだけで ある。

指定されたデバイスが入力クラス key をサポートしていない場合、エラー BadMatch となる。

XChangeDeviceKeyMapping はエラー BadDevice, BadMatch, BadAlloc, BadValue を起こすことがある。

返り値

BadDevice
    不正なデバイスが指定された。指定されたデバイスが存在しないか、 クライアントが XOpenInputDevice を使ってオープンしていない。 このエラーは指定したデバイスが、X のキーボードデバイスや X の ポインタデバイスである場合にも起こる。

BadMatch
    このエラーは、キーを持たないデバイスを指定して XGetDeviceKeyMapping リクエストか XChangeDeviceKeyMapping リクエストを行った場合に起こる。

BadValue
    指定された数値に、リクエストの許容範囲を越えているものがある。引き数に対 して特定の範囲が指定されていなければ、引き数の型で定義されている全ての範 囲が許される。選択肢として定義されている引き数はこのエラーを起こすことが ある。

BadAlloc
    要求されたリソースやサーバメモリの割り当てにサーバが失敗した。

関連項目
XSetDeviceButtonMapping(3X11)
XSetDeviceModifierMapping(3X11)
Programming with Xlib