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

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

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

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

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

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