XChangeKeyboardMapping(3X11)

名前
XChangeKeyboardMapping, XGetKeyboardMapping, XDisplayKeycodes, XSetModifierMapping, 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
    構造体を指定する。

num_codes
    変更する KeyCode の数を指定する。

説明
関数 は、 first_keycode から始まる指定した数の KeyCode に対するシンボルを定 義する。 範囲外の KeyCode に対するシンボルは変更されない。 keysym 中の要素数は次の数でなければならない。

num_codes * keysyms_per_keycode

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

first_keycode + num_codes - 1

0 から数えて番号 N である、KeyCode K に対するKeySym は、keysym 内で 以下の式のインデックスを持つ。このインデックスは 0 から数える。

(K - first_keycode) * keysyms_per_keycode + N

全ての必要なシンボルを保持する十分な大きさであれば、クライアントは指定 した keysyms_per_keycode の数を任意に選択できる。 特別な KeySym 値である は、個別の KeyCode の未使用の要素を埋めるために使う。 は、実際に有効な KeyCode リストの最後でない位置に現われてもよい。 は イベントを生成する。

X サーバがこのマッピングを解釈する必要はない。 これはクライアントに読み書きさせるために保存しているだけである。

はエラー を起こすことがある。

関数 は、first_keycode 番目から始まる指定した数の KeyCode に対するシンボル を返す。 first_keycode で指定する値は、 が返す min_keycode 以上でなければならない。 そうでない場合は、エラー となる。 さらに次に示す式は が返す max_keycode 以下でなければならない。

first_keycode + keycode_count - 1

そうでない場合には、エラー となる。 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 値である は、個別の KeyCode の未使用の要素を埋めるために使う。 が返すメモリを解放するには、 を使用すること。

はエラー を起こすことがある。

関数 は、指定したディスプレイがサポートしている最小のキーコードと最大のキー コードを返す。 返される最小の KeyCode の数は 8 より小さいことはなく、返される最大の KeyCode の数は 255 より大きいことはない。 この範囲の全ての KeyCode が対応するキーを持つ必要はない。

関数 はモディファイアとして使うキー(もしあれば)の KeyCode を指定する。 成功した場合、X サーバは イベントを生成し、 は を返す。 X サーバは多くても 8 つのモディファイアキーしか認めない。 構造体で 8 個より多いモディファイアキーが指定されている場合、エラー となる。

構造体の modifiermap メンバは、max_keypermod 個の KeyCode を 8 組持ち、 各モディファイアに対するキーコードは の順に並んでいる。 それぞれの集合のうち、0 でない KeyCode だけが意味を持ち、KeyCode が 0 で あるものは無視される。 さらに、0 でない全ての KeyCode は 構造体の min_keycode と max_keycode で指定される範囲でなければならない。 そうでない場合は、エラー となる。

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

はエラー を起こすことがある。

関数 は新しく生成された 構造体へのポインタを返す。この構造体はモディファイアとして使用されるキー を含む。 この構造体を使い終わったら を呼び出して解放しなければならない。 集合内でいずれかのモディファイアに対する値として 0 が現われた場合、そ のモディファイアは無効となる。

関数 は、後で利用するための 構造体へのポインタを返す。

関数 は指定したモディファイアを制御する集合に指定された KeyCode を追加し、 その結果得られた 構造体(必要に応じて拡張される)を返す。

関数 は指定したモディファイアを制御する集合から指定された KeyCode を削除し、 その結果得られた 構造体へのポインタを返す。

関数 は指定された 構造体を解放する。

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

typedef struct {
    int max_keypermod;    /* このサーバにおける、モディファイア当たりのキーの最大個数 */
     KeyCode *modifiermap;    /* 8 * max_keypermod 個のモディファイアの配列 */
} XModifierKeymap;

返り値

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

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

関連項目
XFree(3X11), XSetPointerMapping(3X11)
Xlib - C Language X Interface