XGetDeviceModifierMapping(3X11)

名前
XGetDeviceModifierMapping, XSetDeviceModifierMapping - デバイスのモディファイアのマッピングに対する問い合わせと変更を行なう

書式
XSetDeviceModifierMapping(display, device, modmap)
      Display *display;
      XDevice *device;
      XModifierKeymap  *modmap;
XModifierKeymap *XGetDeviceModifierMapping(display, device)
      Display *display;
      XDevice *device;

引き数

display
    X サーバへの接続を指定する。

device
    モディファイアのマッピングに対する問い合わせあるいは変更の対象である デバイスを指定する。

modmap
    XModifierKeymap 構造体を指すポインタを指定する。

説明
The XSetDeviceModifierMapping XSetDeviceModifierMapping リクエストは、指定したデバイスに対してモディファイアとして使用されるキー (もしあれば)のキーコードを指定する。 成功した場合、X サーバは DeviceMappingNotify イベントを生成し、 XSetDeviceModifierMapping は MappingSuccess を返す。 X サーバは、最大8つのモディファイアキーしか認めない。 XModifierKeymap 構造体に8つ以上のモディファイアキーを指定した 場合、エラー BadLength となる。

XModifierKeymap 構造体の modifiermap メンバは、8組の max_keypermod キーコードを持ち、それぞれのキーコードは順に次の モディファイアに対応している: Shift, Lock, Control, Mod1, Mod2, Mod3, Mod4, Mod5. それぞれの組においては 0 でないキーコードだけが意味を持ち、 キーコードが 0 であれば無視される。 さらに、0 でない全てのキーコードは、XListInputDevices が返す min_keycode と max_keycode が示す範囲の値でなくてはならない。そうでな い場合には、エラー BadValue となる。 全体のマップ中には、1 つのキーコードは一度しか使用してはならない。 二度以上現れた場合は、エラー BadValue となる。

X サーバはモディファイアをどう変更するかに関して制限をつけることができ る。例えば、あるキーを離したことの検出ができないハードウェアかどうか、 あるキーのオートリピートを無効にできないかどうか、複数のモディファイア キーがサポートされていないかどうか等である。 このような制限が破られた場合はステータス MappingFailed が返され、 いずれのモディファイアも変更されない。 モディファイアとして指定された新しいキーコードが、現在定義されているも のと異なり、そのモディファイアに対する(現在あるいは新しい)キーが論理的 に押されている状態である場合、XSetDeviceModifierMapping は MappingBusy を返し、いずれのモディファイアも変更されない。

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

XGetDeviceModifierMapping リクエストは、モディファイアとして使わ れるキーを持つ、新しく生成された XModifierKeymap 構造体への ポインタを返す。 この構造体を使い終った後には XFreeModifierMapping を呼んで、こ れを解放しなければならない。 いずれかのモディファイアに対するキーの組に 0 しか値がない場合は、この モディファイアは無効となる。

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

構造体
XModifierKeymap 構造体の内容を示す。

typedef struct {
	int max_keypermod;
	KeyCode *modifiermap;
} XModifierKeymap;

返り値

BadLength
    XModifierKeymap 構造体において、8個より多くのキーが指定された。

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

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

BadMatch
    このエラーは、XGetDeviceModifierMapping リクエストや XChangeDeviceModifierMapping リクエストがキーを持たないデバイス を指定して実行された場合に起こる。

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

関連項目
XSetDeviceKeyMapping(3X11)
XSetDeviceButtonMapping(3X11)
Programming With Xlib