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 を指定。

keycode_count
    返される、あるいは変更される KeyCode の数を指定。

keysyms_per_keycode
    KeyCode 当たりの KeySym の数を指定。

keysyms_per_keycode_return
    KeyCode 当たりの KeySym の数が返される先となる変数のアドレスを指定。

keysyms
    KeySym の配列のアドレスを指定。

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

first_keycode + keycode_count - 1

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

keycode_count * keysyms_per_keycode_return

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

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

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

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

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

num_codes * keysyms_per_keycode

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

first_keycode + num_codes - 1

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

(K - first_keycode) * keysyms_per_keycode + N

クライアントは、指定する keysyms_per_keycode について、必要な全てのシ ンボルを保持できる十分な長さである任意の数を選ぶことができる。 特別な KeySym 値である NoSymbol は、個別の KeyCode に対して未使用の要素を埋めるために使われる。 NoSymbol が KeyCode に対する有効なリストの最後でない位置に現われるのは正しい。 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