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

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

(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

ゼロから数えて番号 N である、KeyCode K に対するKeySym は、keysym 内で 以下の式のインデックスを持つ。このインデックスはゼロから数える。 (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組持ち、 各モディファイアに対するキーコードは の順に並んでいる。 それぞれの組のうち、ゼロでない KeyCode だけが意味を持ち、KeyCode がゼ ロであるものは無視される。 さらに、ゼロでない全ての KeyCode は 構造体の min_keycode と max_keycode で指定される範囲でなければならない。 そうでない場合は、エラー となる。

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

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

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

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

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

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

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

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

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

返り値

サーバが、要求されたリソースやサーバメモリのアロケートに失敗した。

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

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