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