Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

XSetPointerMapping(3X11)

XChangeKeyboardMapping(3X11)  —  UNIX Programmer’s Manual

名称

XChangeKeyboardMapping, XGetKeyboardMapping, XDisplayKeycodes, XSetModifierMapping, XGetModifierMapping, XNewModifiermap, XInsertModifiermapEntry, XDeleteModifiermapEntry, XFreeModifierMap - キーボードのエンコードを操作する

形式

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;

引数

displayX サーバへのコネクションを指定します。

first_keycode変更されるか 、または返される最初の KeyCode を指定します。

keycode_count
返される KeyCode 数を指定します。

keycode_entry
KeyCode を指定します。

keysymsKeySyms 配列を指すポインタを指定します。

keysyms_per_keycode
1 KeyCode についての KeySyms 数を指定します。

keysyms_per_keycode_return
1 KeyCode についての KeySyms 数を返します。

max_keys_per_mod
マップのモディファイに事前に割り当てられる KeyCode エントリ数を指定しま す。

max_keycodes_return
KeyCode 最大数を返します。

min_keycodes_return
KeyCode 最小数を返します。

modifierモディファイアを指定します。

modmapXModifierKeymap 構造体を指すポインタを指定します。

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

解説

XChangeKeyboardMapping 関数は、 first_keycode で始まる指定された数の KeyCode について、シン ボルを定義します。 この範囲外の KeyCode のシンボルは変更されません。 keysyms の要素数は、以下のように求めなければなりません。

num_codes ∗ keysyms_per_keycode

指定された first_keycode は、 XDisplayKeycodes が返す min_keycode 以上でなければなりません。さもなければ、 BadValue エラーが生じます。 さらに、次の式は XDisplayKeycodes が返す max_keycode 以下でなければなりません。さもなければ、 BadValue エラーが生じます。

first_keycode + num_codes − 1

KeyCode K ( 0 からカウントする)に対する KeySym 番号 N ( 0 からカウ ントする)は、 keysyms 中に以下のインデックスをもちます。

(K − first_keycode) ∗ keysyms_per_keycode + N

指定された keysyms_per_keycode を、希望のシンボルすべてを保持するのに 十分な大きさであるように、クライアントが任意に選べます。 NoSymbol という特別な KeySym 値を使用して、各 KeyCode の未使用の要素を充填しな ければなりません。 NoSymbol が、 KeyCode の有効リストの末尾以外の位置にあっても、間違いではありま せん。 XChangeKeyboardMapping は、 MappingNotify イベントを発生します。 X サーバがこのマッピングを解釈する必要はありません。 このマッピングは、クライアントによる読取り、または書込みのために ストアされるにすぎません。 .PN XChangeKeyboardMapping は、 BadAlloc および BadValue エラーを生じることがあります。 XGetKeyboardMapping 関数は、 first_keycode で始まる指定された数の KeyCode について、シン ボルを返します。 first_keycode で指定された値は、 XDisplayKeycodes が返す min_keycode 以上でなければなりません。さもなければ、 BadValue エラーが生じます。 さらに、下式は XDisplayKeycodes が返す max_keycodes 以下でなければなりません。

first_keycode + keycode_count − 1

これがあてはまらなければ、 BadValue エラーが生じます。 KeySyms リストの要素数は、下式で求めます。

keycode_count ∗ keysyms_per_keycode_return

KeyCode K ( 0 からカウントする) の KeySym 数 N ( 0 からカウントす る) は、リストに以下のインデックスをもちます。

(K − first_code) ∗ keysyms_per_code_return + N

X サーバは、要求されたシンボルすべてを通知するのに十分な大きさの keysyms_per_keycode_return 値を任意に選びます。 NoSymbol という特別な KeySysm 値を使用し、各 KeyCode の未使用の要素を充填しま す。 XGetKeyboardMapping により返された記憶領域を解放するには、 XFree を使用します。 .PN XGetKeyboardMapping は、 BadValue エラーを生じることがあります。 XDisplayKeycodes 関数は、指定されたディスプレイがサポートする min_keycodes および max_keycodes を返します。 返される min_keycodes が 8 より小さいことはなく、 max_keycodes が 255 より大きいことはありません。 この範囲の KeyCodes すべてが対応するキーをもつ必要はありません。 XSetModifierMapping 関数は、モディファイアとして使用するキー(もしあれば)の KeyCodes を 指定します。 成功すれば、 X サーバは MappingNotify イベントを発生し、 XSetModifierMapping は、 MappingSuccess を返します。 X では、 8 つまでのモディファイアキーを使用できます。 XModifierKeymap 構造体で 8 つ以上のキーが指定されると、 BadLength エラーが生じます。 XModifierKeymap 構造体のメンバであるモディファイアマップには、 8 組の max_keypermod KeyCodes があります。 つまり、 Shift、 Lock、 Control、 Mod1、 Mod2、 Mod3、 Mod4、 Mod5 の順に、各モディファイアにつき 1 組の max_keypermod KeyCodes を 含んでいます。 各セットにおいて 0 でない値をもつ KeyCodes だけが 意味をもち 0 をもつ KeyCode は無視されます。 さらに、0 でない値をもつすべての KeyCodes は、 Display 構造体の min_keycode および max_keycode で、指定される範囲内になけれ ばなりません。 さもなければ、 BadValue エラーが生じます。 マップ全体に KeyCode が 2 回生じることはありません。 さもなければ、 BadValue エラーが生じます。 X サーバは、モディファイアの変更方法について制限を課します。 たとえば、 ある種のキーがハードウェアに変化を生じないか、ある種のキーでオートリ ピートを使用不可能にできないか、または複数のモディファイアキーがサポ ートされない場合、モディファイアの変更方法について制限を課します。 このような制限に違反すれば、状態応答は MappingFailed となり、どのモディファイアも変更されません。 モディファイアに対して指定された新しい KeyCodes が現在定義されている ものと異なり、そのモディファイア用のどの(現在の、または新しい)キー も論理的にダウン状態にある場合、 XSetModifierMapping は、 MappingBusy を返し、どのモディファイアも変更されません。 .PN XSetModifierMapping は、 BadAlloc および BadValue エラーを生じることがあります。 XGetModifierMapping 関数は、モディファイアとして使用中のキーを含む、新たに生成された XModifierKeymap 構造体を指すポインタを返します。 この構造体は使用後 XFreeModifiermap を呼び出すことにより解放しなければなりません。 モディファイアセットに 0 しかない場合、このモディファイアは使用できま せん。 XNewModifiermap 関数は、後に使用するため XModifierKeymap 構造体を指すポインタを返します。 XInsertModifiermapEntry 関数は、指定されたモディファイアを制御するセットに指定された KeyCode を追加し、その結果として生じた必要な分だけ拡張された XModifierKeymap 構造体を指すポインタを返します。 XDeleteModifiermapEntry 関数は、指定されたモディファイアを制御するセットから指定された KeyCode を削除し、その結果として生じた XModifierKeymap 構造体を指すポインタを返します。 XFreeModifiermap 関数は、指定された XModifierKeymap 構造体を指すポインタを返します。

診断

BadAlloc サーバが要求されたリソース、またはサーバメモリの割当てに失敗した。

BadValue ある数値が許容範囲を超えた。引数の範囲が明示されない限り、引数の型に よって決まる最大の範囲まで指定可能です。オルタネイト選択形式の引数も、 このエラーを生じることがあります。

関連事項

XSetPointerMapping(3X11)
Xlib − C Language X Interface

NEWS-OSRelease 3.3

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026