Other Alias
XChangeKeyboardMapping, XGetKeyboardMapping, XDisplayKeycodes, XGetModifierMapping, XNewModifiermap, XInsertModifiermapEntry, XDeleteModifiermapEntry, XFreeModifierMap XModifierKeymap書式
XChangeKeyboardMapping(display, first_keycode, keysyms_per_keycode, keysyms, num_codes)Display *display;
int first_keycode;
int keysyms_per_keycode;
KeySym *keysyms;
int num_codes;
KeySym *XGetKeyboardMapping(display, first_keycode, keycode_count,
keysyms_per_keycode_return)
Display *display;
KeyCode first_keycode;
int keycode_count;
int *keysyms_per_keycode_return;
XDisplayKeycodes(display, min_keycodes_return,
max_keycodes_return)
Display *display;
int *min_keycodes_return, *max_keycodes_return;
int XSetModifierMapping(display, modmap)
Display *display;
XModifierKeymap *modmap;
XModifierKeymap *XGetModifierMapping(display)
Display *display;
XModifierKeymap *XNewModifiermap(max_keys_per_mod)
int max_keys_per_mod;
XModifierKeymap *XInsertModifiermapEntry(modmap,
keycode_entry, modifier)
XModifierKeymap *modmap;
KeyCode keycode_entry;
int modifier;
XModifierKeymap *XDeleteModifiermapEntry(modmap,
keycode_entry, modifier)
XModifierKeymap *modmap;
KeyCode keycode_entry;
int modifier;
XFreeModifiermap(modmap)
XModifierKeymap *modmap;
引き数
- display
- X サーバへの接続を指定する。
- first_keycode
- 変更される最初の KeyCode, または返される最初の KeyCode を指定する。
- keycode_count
- 返される KeyCode の数を指定する。
- keycode_entry
- KeyCode を指定する。
- keysyms
- KeySym の配列を指定する。
- keysyms_per_keycode
- KeyCode あたりの KeySym の数を指定する。
- keysyms_per_keycode_return
- KeyCode あたりの KeySym の数が返される。
- max_keys_per_mod
- マップ中で予めモディファイアに割り当てられた KeyCode のエントリ数を指 定する。
- max_keycodes_return
- KeyCode の最大数が返される。
- min_keycodes_return
- KeyCode の最小数が返される。
- modifier
- モディファイアを指定する。
- modmap
- XModifierKeymap 構造体を指定する。
- num_codes
- 変更する KeyCode の数を指定する。
説明
関数 XChangeKeyboardMapping は、 first_keycode から始まる指定した数の KeyCode に対するシンボルを定 義する。 範囲外の KeyCode に対するシンボルは変更されない。 keysym 中の要素数は次の数でなければならない。
num_codes * keysyms_per_keycode
指定した first_keycode は XDisplayKeycodes が返す min_keycode 以上でなければならない。そうでない場合はエラー BadValue となる。 さらに、以下の式は XDisplayKeycodes が返す max_keycode 以下でなければならない。そうでない場合はエラー BadValue となる。
first_keycode + num_codes - 1
0 から数えて番号 N である、KeyCode K に対するKeySym は、keysym 内で 以下の式のインデックスを持つ。このインデックスは 0 から数える。
(K - first_keycode) * keysyms_per_keycode + N
全ての必要なシンボルを保持する十分な大きさであれば、クライアントは指定 した keysyms_per_keycode の数を任意に選択できる。 特別な KeySym 値である NoSymbol は、個別の KeyCode の未使用の要素を埋めるために使う。 NoSymbol は、実際に有効な KeyCode リストの最後でない位置に現われてもよい。 XChangeKeyboardMapping は MappingNotify イベントを生成する。
X サーバがこのマッピングを解釈する必要はない。 これはクライアントに読み書きさせるために保存しているだけである。
XChangeKeyboardMapping はエラー BadAlloc, BadValue を起こすことがある。
関数 XGetKeyboardMapping は、first_keycode 番目から始まる指定した数の KeyCode に対するシンボル を返す。 first_keycode で指定する値は、 XDisplayKeycodes が返す min_keycode 以上でなければならない。 そうでない場合は、エラー BadValue となる。 さらに次に示す式は XDisplayKeycodes が返す max_keycode 以下でなければならない。
first_keycode + keycode_count - 1
そうでない場合には、エラー BadValue となる。 KeySym リスト中の要素数は次の式で表される。
keycode_count * keysyms_per_keycode_return
0 から数えて番号 N である、KeyCode K に対する KeySym は、keysym リスト内で 以下の式のインデックスを持つ。このインデックスは 0 から数える。
(K - first_code) * keysyms_per_code_return + N
X サーバは、全ての必要なシンボルを報告するために十分な大きさである任意 の keysyms_per_keycode を選択する。 特別な KeySym 値である NoSymbol は、個別の KeyCode の未使用の要素を埋めるために使う。 XGetKeyboardMapping が返すメモリを解放するには、 XFree を使用すること。
XGetKeyboardMapping はエラー BadValue を起こすことがある。
関数 XDisplayKeycodes は、指定したディスプレイがサポートしている最小のキーコードと最大のキー コードを返す。 返される最小の KeyCode の数は 8 より小さいことはなく、返される最大の KeyCode の数は 255 より大きいことはない。 この範囲の全ての KeyCode が対応するキーを持つ必要はない。
関数 XSetModifierMapping はモディファイアとして使うキー(もしあれば)の KeyCode を指定する。 成功した場合、X サーバは MappingNotify イベントを生成し、 XSetModifierMapping は MappingSuccess を返す。 X サーバは多くても 8 つのモディファイアキーしか認めない。 XModifierKeymap 構造体で 8 個より多いモディファイアキーが指定されている場合、エラー BadLength となる。
XModifierKeymap 構造体の modifiermap メンバは、max_keypermod 個の KeyCode を 8 組持ち、 各モディファイアに対するキーコードは Shift, Lock, Control, Mod1, Mod2, Mod3, Mod4, Mod5 の順に並んでいる。 それぞれの集合のうち、0 でない KeyCode だけが意味を持ち、KeyCode が 0 で あるものは無視される。 さらに、0 でない全ての KeyCode は Display 構造体の min_keycode と max_keycode で指定される範囲でなければならない。 そうでない場合は、エラー BadValue となる。
X サーバはモディファイアの変更の仕方を制限することができる。 このような制限は例えば、あるキーが離された状態変化をハードウェア的に 生成できない場合、あるキーについてオートリピートを無効にできない場合、 複数個のモディファイアキーがサポートされていない場合等に行われる。 このような制限が破られた場合は、返されるステータスは MappingFailed であり、どのモディファイアも変更されない。 モディファイアに対して指定された新しい KeyCode が 現在定義されているモディファイアと異なり、そのモディファイアに対する (現在の、あるいは新しい)キーのいずれかが論理的に押された状態にある場合 は、 XSetModifierMapping は MappingBusy を返し、どのモディファイアも変更されない。
XSetModifierMapping はエラー BadAlloc, BadValue を起こすことがある。
関数 XGetModifierMapping は新しく生成された XModifierKeymap 構造体へのポインタを返す。この構造体はモディファイアとして使用されるキー を含む。 この構造体を使い終わったら XFreeModifiermap を呼び出して解放しなければならない。 集合内でいずれかのモディファイアに対する値として 0 が現われた場合、そ のモディファイアは無効となる。
関数 XNewModifiermap は、後で利用するための XModifierKeymap 構造体へのポインタを返す。
関数 XInsertModifiermapEntry は指定したモディファイアを制御する集合に指定された KeyCode を追加し、 その結果得られた XModifierKeymap 構造体(必要に応じて拡張される)を返す。
関数 XDeleteModifiermapEntry は指定したモディファイアを制御する集合から指定された KeyCode を削除し、 その結果得られた XModifierKeymap 構造体へのポインタを返す。
関数 XFreeModifiermap は指定された XModifierKeymap 構造体を解放する。
構造体
XModifierKeymap 構造体の内容を示す:
typedef struct { int max_keypermod; KeyCode *modifiermap; } XModifierKeymap;
返り値
- BadAlloc
- 要求されたリソースやサーバメモリの割り当てにサーバが失敗した。
- BadValue
- 指定された数値の中にリクエストの許容範囲を越えているものがある。引き数に対 して特定の範囲が指定されていなければ、引き数の型で定義されている全ての範 囲が許される。選択肢として定義されている引き数はこのエラーを起こすことが ある。