XKB: コントロール

定義
コントロールマスクコントロールマスク
struct XkbControlsRecコントロール構造体
struct XkbControlsChangesRecコントロールの変更
関数
XkbAllocControlsXkbDesc に ctrls を確保
XkbFreeControlsctrls を解放
XkbGetPerClientControlsクライアントごとのコントロールの現在の値を取得する
XkbSetPerClientControlsクライアントごとのコントロールの値をセットする
XkbGetControlsサーバーからコントロール情報を取得
XkbSetControlsコントロール情報を変更する
XkbChangeControls指定されたコントロールの変更をサーバーに適用する
XkbNoteControlsChangesXkbControlsNotify イベント時の変更を取得
XkbGetControlsChangesXkbDesc にコントロールの変更をコピー
XkbChangeEnabledControlsEnabledControls コントロールを操作
XkbGetAutoResetControlsAutoReset の現在の値を取得
XkbSetAutoResetControlsAutoReset コントロール属性の値を変更
XkbGetAutoRepeatRateRepeatKeys コントロールの現在の属性を取得する
XkbSetAutoRepeatRateRepeatKeys コントロールの属性を設定する
XkbGetDetectableAutorepeatDetectableAutorepeat の状態を返す
XkbSetDetectableAutorepeatDetectableAutorepeat を設定する
XkbGetAccessXTimeoutAccessXTimeout の現在の値を取得
XkbSetAccessXTimeoutAccessXTimeout の属性の設定
XkbGetSlowKeysDelaySlowKeys の属性を取得
XkbSetSlowKeysDelaySlowKeys の属性を設定
XkbGetBounceKeysDelayBounceKeys の属性を取得
XkbSetBounceKeysDelayBounceKeys の属性を設定
XkbGetStickyKeysOptionsStickyKeys の属性を取得
XkbSetStickyKeysOptionsStickyKeys の属性を設定
XkbSetIgnoreLockModsロックされている場合に、一致するイベントでパッシブグラブに報告されない修飾子を設定する
XkbSetServerInternalModsイベントがクライアントに配信される前にサーバーによって消費される修飾子を設定する
関数 (ライブラリ)
XkbLC_*ライブラリコントロールマスク
XkbXlibControlsImplementedライブラリに実装されているコントロールを返す
XkbGetXlibControlsライブラリで有効になっているコントロールを返す
XkbSetXlibControlsライブラリのコントロールの有効無効を変更
定義
マスク値 | which or changed_ctrls | enabled_ctrls
XkbRepeatKeysMask      | ok  ok  (1L<<0)
XkbSlowKeysMask        | ok  ok  (1L<<1)
XkbBounceKeysMask      | ok  ok  (1L<<2)
XkbStickyKeysMask      | ok  ok  (1L<<3)
XkbMouseKeysMask       | ok  ok  (1L<<4)
XkbMouseKeysAccelMask  | ok  ok  (1L<<5)
XkbAccessXKeysMask     | ok  ok  (1L<<6)
XkbAccessXTimeoutMask  | ok  ok  (1L<<7)
XkbAccessXFeedbackMask | ok  ok  (1L<<8)
XkbAudibleBellMask     | --  ok  (1L<<9)
XkbOverlay1Mask        | --  ok  (1L<<10)
XkbOverlay2Mask        | --  ok  (1L<<11)
XkbIgnoreGroupLockMask | --  ok  (1L<<12)
XkbGroupsWrapMask      | ok  --  (1L<<27)
XkbInternalModsMask    | ok  --  (1L<<28)
XkbIgnoreLockModsMask  | ok  --  (1L<<29)
XkbPerKeyRepeatMask    | ok  --  (1L<<30)
XkbControlsEnabledMask | ok  --  (1L<<31)

XkbAccessXOptionsMask  | ok  ok  (XkbStickyKeysMask | XkbAccessXFeedbackMask)
XkbAllBooleanCtrlsMask | --  ok  (0x00001FFF)
XkbAllControlsMask     | ok  --  (0xF8001FFF)
コントロールマスク
XkbRepeatKeysMask
キーリピートを有効/無効にするか。また、遅延時間も変更できる。
コア X のキーリピートと連動しているので、どちらかを有効/無効にすると、もう一方も変更される。
XkbSlowKeysMask
短い時間に誤って押されたキーを無効にするための機能。
有効な場合、キーが押された時に指定時間待機し、その期間内にキーが離されたときはキーイベントを生成しない。
XkbBounceKeysMask
キーを離した時に、誤ってもう一度押してしまった時の動作を無効にするための機能。
有効な場合、キーが押された後、指定時間内に同じキーが押された場合は無効にする。
XkbStickyKeysMask
Shift キーなどの修飾キーと他のキーを同時に押すのが難しい場合、修飾キーを1度押して離しラッチ状態にする。次に押されたキーでは、その修飾子が ON となり、その後修飾子は自動的に OFF になる。
修飾キーを2回続けて押すと、ロック状態の ON/OFF を変更できる。
XkbMouseKeysMask
キーボードでマウス制御を行う機能を有効/無効にできる。
有効な場合、指定キーが押された時、キーイベントの代わりに、ポインタイベントを生成する。
XkbMouseKeysAccelMask
キーボードでマウス制御を行うときの、ポインタの動き。
有効な場合、キーを押し続けると、ポインタの動きが変化する。無効な場合は、一つのポインタイベントだけが生成される。
XkbAccessXKeysMask
キー操作で、各コントロールの有効/無効を切り替える。有効な場合、以下の操作が可能になる。

  • Shift キーを単独で 8 秒間押し続けると、SlowKeys コントロールが切り替わります。
  • キーイベントを挟まず、連続して押すまでの遅延が 30 秒未満で、左または右の Shift キーを 5 回連続で押して離すと、StickyKeys コントロールの状態が切り替わります。
  • 2 つ以上の修飾キーを同時に操作すると、StickyKeys コントロールが無効になります。
XkbAccessXTimeoutMask
有効な場合、キーボードが指定された期間アイドル状態だった時、ブールコントロールの有効/無効状態を自動的に変更し、AccessXKeys および AccessXFeedback コントロール属性の値を変更します。
XkbAccessXFeedbackMask
一部のキーボードが、キーが押されたとき、またはキーが繰り返されたときに、キークリック音を生成できるのと同じように、Xkb は特別なビープ音コードを利用して、コントロールにフィードバックを提供できます。
AccessXFeedback コントロールで、フィードバックを生成する、特定の種類の操作を構成します。
XkbOverlay1Mask, XkbOverlay2Mask
2つのキーボードオーバーレイを有効/無効にでき、シミュレートされた代替キーコードを生成することができる。
XkbAudibleBellMask
有効にすると、プロトコルはサウンドの生成を要求し、X サーバーで実際に本物のサウンドが生成されます。
無効にすると、強制的に要求されない限り、サーバーへのサウンド生成要求は無視されます。
XkbIgnoreGroupLockMask
IgnoreGroupLock コントロールは、属性のないブールコントロールです。
有効にすると、パッシブグラブをアクティブにするときに、キーボードグループのロック状態を考慮しないように指定します。
XkbGroupsWrapMask
範囲外のグループの処理方法の指定。
XkbInternalModsMask
コアプロトコルは、クライアントに送信されるイベントで、修飾子が報告されるのを防ぐ方法はありません。
ただし、Xkb では、InternalMods コントロールを使用することで、これが可能になります。
サーバーによって使用され、クライアントに報告されない修飾子を指定します。

キーが押されて、InternalMods コントロールでビットが設定されている修飾子がサーバーに報告されると、サーバーはキーに適用するアクションを決定するときに、その修飾子を使用します。
その後、サーバーはビットをクリアするため、実際にはクライアントに報告されません。
さらに、InternalMods コントロールで指定された修飾子は、グラブの決定には使用されず、コアプロトコルの互換性状態の計算にも使用されません。
XkbIgnoreLockModsMask
コアプロトコルには、グラブ計算から特定の修飾子を除外する方法が提供されていないため、ロック修飾子によって、予期しない副作用が発生することがあります。
IgnoreLockMods コントロールは、グラブ計算から除外する修飾子を指定します。
これらの修飾子は、パッシブグラブをアクティブにせず、グラブがアクティブである間に発生しない KeyPress および KeyRelease イベントを除いて、コアイベントでも報告されません。
XkbPerKeyRepeatMask
各キーごとのキーリピートの許可。
XKB にはこの属性を変更する関数はない。
XkbControlsRec 構造体の per_key_repeat に、各キーのビットマスクが格納されている。
XkbControlsEnabledMask
コントロールの有効/無効 (enabled_ctrls)
#define  XkbMaxLegalKeyCode       255
#define  XkbPerKeyBitArraySize    ((XkbMaxLegalKeyCode+1)/8)

typedef struct {
    unsigned char     mk_dflt_btn;
    unsigned char     num_groups;
    unsigned char     groups_wrap;
    XkbModsRec        internal;
    XkbModsRec        ignore_lock;
    unsigned int      enabled_ctrls;
    unsigned short    repeat_delay;
    unsigned short    repeat_interval;
    unsigned short    slow_keys_delay;
    unsigned short    debounce_delay;
    unsigned short    mk_delay;
    unsigned short    mk_interval;
    unsigned short    mk_time_to_max;
    unsigned short    mk_max_speed;
    short             mk_curve;
    unsigned short    ax_options;
    unsigned short    ax_timeout;
    unsigned short    axt_opts_mask;
    unsigned short    axt_opts_values;
    unsigned int      axt_ctrls_mask;
    unsigned int      axt_ctrls_values;
    unsigned char     per_key_repeat[XkbPerKeyBitArraySize];
} XkbControlsRec, *XkbControlsPtr;
コントロール構造体
mk_dflt_btn
MouseKeys コントロールの属性。
キーボードでシミュレートされたマウスボタン操作に使用する、マウスボタンの番号を指定します。
値は、Button1 〜 Button5 のいずれかである必要があります。
num_groups
num_groups はコントロールの一部ではありませんが、そのコンポーネントのいずれかがサーバーからフェッチされるたびに XkbControlsRec 構造内で報告されます。
これは、特定のキーボード構成が使用するグループの数を報告し、キーボードマッピングが変更されるたびに、サーバーによって自動的に計算されます。
groups_wrap
GroupsWrap コントロールの属性。
グローバルベースでの違法グループへの対応を規定しています。

XkbWrapIntoRange0x00すべての無効なグループ番号は、グループインデックスに適用される整数係数を使用して、有効なグループ番号に変換されます。
XkbClampIntoRange0x40すべての無効なグループ番号は、最も近い有効なグループ番号に変換されます。
最大のグループ番号より大きいグループ番号は、サポートされている最大のグループにマッピングされます。
1 未満のものはグループ 1 にマッピングされます。
XkbRedirectIntoRange0x80すべての無効なグループ番号は、この値の下位 4 ビットをグループインデックスとして使用することによって、有効なグループ番号に変換されます。結果が依然として範囲外の場合は、グループ 1 が使用されます。
internal
InternalMods コントロールの属性。
これは、イベントが報告されるときに、修飾子がサーバー内で消費され、クライアントに渡されないように指定します。
有効な値は、8 つのコア修飾子ビット (ShiftMask、LockMask、ControlMask、Mod1Mask 〜 Mod5Mask) の任意の組み合わせで構成されます。
ignore_lock
IgnoreLockMods コントロールの属性。
グラブ計算で無視される修飾子を指定します。
有効な値は、8 つのコア修飾子ビット (ShiftMask、LockMask、ControlMask、Mod1Mask 〜 Mod5Mask) の任意の組み合わせで構成されます。
enabled_ctrls
EnabledControls コントロールの属性。
ブール制御ごとに 1 ビットが含まれます。
各ビットは、対応するコントロールが有効か無効かを決定します。ON は制御が有効であることを意味します。
repeat_delay
RepeatKeys コントロールの属性。
キーリピートを開始するまでの初期遅延 (ms)。
repeat_interval
RepeatKeys コントロールの属性。
キーリピート開始後の間隔 (ms)。
slow_keys_delay
SlowKeys コントロールの属性。
キーが押されてからサーバーによって受け入れられるまでの遅延期間 (ms)。
debounce_delay
BounceKeys コントロールの属性。
キーが押された後、同じキーの別の押下がサーバーによって受け入れられるまでにキーが無効になる、遅延期間 (ms)。
mk_delay
(MouseKeysAccel) 最初にキーを押してから、最初に繰り返されるモーションイベントまでの時間 (ms)
mk_interval
(MouseKeysAccel) 繰り返されるモーションイベント間の時間 (ms)
mk_time_to_max
(MouseKeysAccel) ポインタが最大速度に達するまでのイベント数 (カウント)
mk_max_speed
(MouseKeysAccel) ポインタが到達する最大速度 (イベントごとのピクセル単位)
mk_curve
(MouseKeysAccel) ポインタの最大速度に達するために使用される傾斜
ax_options
StickyKeys コントロールと AccessXFeedback コントロールで使用される属性が含まれています。

AccessXFeedback
XkbAX_SKPressFBMask(1L<<0)
XkbAX_SKAcceptFBMask(1L << 1)
XkbAX_FeatureFBMask(1L << 2)
XkbAX_SlowWarnFBMask(1L << 3)
XkbAX_IndicatorFBMask(1L << 4)
XkbAX_StickyKeysFBMask(1L << 5)
XkbAX_SKReleaseFBMask(1L << 8)
XkbAX_SKRejectFBMask(1L << 9)
XkbAX_BKRejectFBMask(1L << 10)
XkbAX_DumbBellFBMask(1L << 11)
StickyKeys
XkbAX_TwoKeysMask(1L << 6)
XkbAX_LatchToLockMask(1L << 7)
すべて
XkbAX_AllOptionsMask(0xFFF)
ax_timeout
(AccessXTimeout) コントロールが変更されるまで、キーボードがアイドル状態でなければならない秒数
axt_opts_mask
(AccessXTimeout) AccessXKeys および AccessXFeedback コントロールのどの属性を変更するか
axt_opts_values
(AccessXTimeout) axt_opts_mask の対応するビットで、新しい値を指定
axt_ctrls_mask
(AccessXTimeout) どのコントロールを有効または無効にするか
axt_ctrls_values
(AccessXTimeout) axt_ctrls_mask の対応するビットで、有効/無効にするかを指定
per_key_repeat
コアプロトコル XKeyboardState 構造体の auto_repeats フィールドを反映しています。
auto_repeats フィールドを変更すると、per_key_repeat も自動的に変更され、その逆も同様です。
これは利便性を高め、プロトコルトラフィックを軽減するために提供されています。
たとえば、個々のリピートキーの動作、リピート遅延およびレートを取得するには、XkbGetControls を使用します。
per_key_repeat がこの構造内にない場合、この情報を取得するには XGetKeyboardControl と XkbGetControls の両方を呼び出す必要があります。

ビットはキーコードに対応します。
最初の 7 つのキー (キーコード 1 〜 7) は per_key_repeat[0] で示され、ビット位置 0 (下位) はキーコード 0 に対応します。
typedef struct _XkbControlsChanges {
    unsigned int changed_ctrls;
    unsigned int enabled_ctrls_changes;
    Bool         num_groups_changed;
} XkbControlsChangesRec, *XkbControlsChangesPtr;
コントロールの変更
changed_ctrls
コントロール構造内のどの論理データセットが変更されたかを指定するマスクです。
この文脈では、変更されたとは設定を意味します。
つまり、値が以前に含まれていたのと同じ値に設定されている場合、その値はまだ変更されており、変更されたものとして記録されます。
ビットを設定すると、対応するデータフィールドが変更されたことを意味します。
enabled_ctrls_changes
enabled_ctrls フィールド内のどのビットが変更されたかを指定します。
num_groups_changed
キーボードグループの数が変更された場合、True になる。
関数
Status XkbAllocControls(XkbDescPtr xkb, unsigned int which);
xkb パラメータの ctrls フィールドを割り当て、すべてのフィールドをゼロに初期化し、Success を返します。
ctrls フィールドが NULL でない場合、単に Success を返します。
xkb が NULL の場合、BadMatch エラーを報告します。
ctrls フィールドを割り当てられなかった場合は、BadAlloc エラーが報告されます。
which
割り当てられる ctrls 構造体の個々のフィールドを指定する。
現在存在するコントロールには構造が関連付けられていないため、現時点ではほぼ意味はありません。
void XkbFreeControls(XkbDescPtr xkb, unsigned int which, Bool free_all);
xkb キーボード記述内の ctrls フィールドの指定されたコンポーネントを解放し、対応する構造コンポーネントの値を NULL または 0 に設定します。
free_all
True の場合、コントロール内のすべての非 NULL 構造体コンポーネントを解放し、xkb の ctrls メンバーによって参照される XkbControlsRec 構造体を解放し、ctrls を NULL に設定します。
Bool XkbGetPerClientControls(Display *dpy, unsigned int *ctrls);
クライアントごとのコントロールの現在の値を取得する
Bool XkbSetPerClientControls(Display *dpy, unsigned int change, unsigned int *value);
change によって選択されたコントロールのクライアントごとの値を、対応する value の値に変更します。
有効な値は、XkbPCF_GrabsUseXKBStateMask、XkbPCF_LookupStateWhenGrabbed、XkbPCF_SendEventUsesXKBState です。
値を OR 演算することで、複数のコントロールを一度に変更できます。
この特定のクライアントのクライアントごとのコントロール属性で値をバックフィルします。
change
変更するマスク
value
有効無効にするかのマスク。値が返る。
Status XkbGetControls(Display *display, unsigned long which, XkbDescPtr xkb);
要求されたコントロール情報をサーバーにクエリし、応答を待ってから、要求された情報に対するサーバーの値を xkb 引数の ctrls 構造体にコピーします。
which パラメータで指定されたコンポーネントのみがコピーされます。

xkb->ctrls が NULL の場合、値を取得する前に、それを割り当てて初期化します。
xkb->ctrls が NULL でない場合、which で指定された値に対応する xkb->ctrls の部分のみを変更します。

キーボード記述の ctrls メンバーを解放するには、XkbFreeControls を使用します。

ctrls 構造体の num_groups フィールドは、どのビットが選択されたかに関係なく、常に XkbGetControls によって設定されます。
which
どの情報を取得するか (コントロールマスク)
戻り値
成功した場合、Success を返します。
十分なストレージを取得できない場合は BadAlloc、xkb が NULL または空の場合は BadMatch、または BadImplementation を返します。
Bool XkbSetControls(Display *display, unsigned long which, XkbDescPtr xkb);
which パラメータに設定されている各ビットについて、対応する値を xkb->ctrls フィールドからサーバーに送信します。

XkbControlsRec 構造内のコントロールの属性への変更は、関連付けられたコントロールが有効になっている場合にのみ明らかになりますが、対応する値は X サーバーで引き続き更新されることに注意してください。
たとえば、RepeatKeys コントロールが有効でない場合 (つまり、enabled_ctrls に XkbRepeatKeysMask が設定されていない場合)、repeat_lay フィールドとrepeat_interval フィールドは無視されます。
XkbSetControls の 1 回の呼び出しで、コントロールの属性を変更し、後続の呼び出しでコントロールを有効にすることができます。

enabled_ctrls フィールド自体がコントロール、つまり EnabledControls コントロールであることに注意してください。
したがって、有効および無効なブールコントロールの特定の構成を設定するには、enabled_ctrls を適切なビットに設定して、必要なコントロールのみを有効にし、その他すべてを無効にしてから、XkbSetControls への呼び出しで XkbControlsEnabledMask を指定する必要があります。
コントロールを有効または無効にするだけで属性を変更しない場合、これはやや扱いにくいため、この目的のために便利な関数も提供されています (XkbChangeEnabledControls)。
戻り値
xkb->ctrls が NULL の場合や、サーバーが互換性のあるバージョンの Xkb をサポートしていない場合、または Xkb 拡張機能が適切に初期化されていない場合、False を返します。
それ以外の場合は、リクエストを X サーバーに送信し、True を返します。
Bool XkbChangeControls(Display *dpy, XkbDescPtr xkb, XkbControlsChangesPtr changes);
キーボード記述コントロール構造 xkb->ctrls の変更によって、指定されたすべてのコントロールフィールドを、指定されたサーバーにコピーします。
void XkbNoteControlsChanges(XkbControlsChangesPtr changes, XkbControlsNotifyEvent *new, unsigned int wanted);
new で報告され、wanted で指定された変更を、changes で指定された変更レコードにコピーします。
Status XkbGetControlsChanges(Display *dpy, XkbDescPtr xkb, XkbControlsChangesPtr changes);
変更パラメータを調べ、必要な情報をサーバーに問い合わせて、結果を xkb->ctrls キーボードの説明にコピーします。
xkb の ctrls フィールドが NULL の場合、それを割り当てて初期化します。
ctrls フィールドを解放するには、XkbFreeControls を使用します。
Bool XkbChangeEnabledControls(Display *dpy, unsigned int device_spec, unsigned int mask, unsigned int values);
EnabledControls コントロールを操作する。

EnabledControls コントロールは、コントロールを有効または無効にするだけであることに注意してください。それらを構成するものではありません。
AudibleBell コントロールなどの一部のコントロールには構成属性がないため、有効または無効にすることによってのみ操作されます。
ただし、動作を構成するための追加の属性を持つものもあります。
たとえば、RepeatControl コントロールは、repeat_lay フィールドと repeat_interval フィールドを使用して、繰り返されるキーのタイミング動作を記述します。
RepeatControl の動作は、XkbRepeatKeysMask ビットの値に応じてオンまたはオフになりますが、その動作を詳細に構成するには、他の手段を使用する必要があります。
mask
設定を変更するマスク
values
mask に対応するビットが ON で有効、OFF で無効にする
戻り値
XKB 拡張機能が使える場合、リクエストを X サーバーに送信し、True を返す。
Bool XkbGetAutoResetControls(Display *dpy, unsigned int *auto_ctrls, unsigned int *auto_values);
このクライアントの AutoReset コントロール属性の値を取得します。
auto_ctrls
AutoReset が設定されているマスクが返る
auto_values
リセット時に有効にするか無効にするかのマスクが返る。
戻り値
成功で True、それ以外は False
Bool XkbSetAutoResetControls(Display *dpy, unsigned int changes, unsigned int *auto_ctrls, unsigned int *auto_values);
changes によって指定されたコントロールで、自動リセットするか、また、リセット時に有効/無効するかの設定を変更する。
AutoReset が有効な場合、クライアントの終了時に、指定したコントロールが自動的に有効/無効にリセットされます。
changes
自動リセットを変更するコントロールのマスク
auto_ctrls
自動リセットを行うかどうかのコントロールのマスク。
対応する changes が ON で、かつ、auto_ctrls が ON なら、自動リセットが行われる。auto_ctrls が OFF なら自動リセットはオフになる。
auto_values
リセット時に、機能を有効にするか無効にするかのマスク
Bool XkbGetAutoRepeatRate(Display *display, unsigned int device_spec, unsigned int *timeout_rtrn, unsigned int *interval_rtrn);
RepeatKeys コントロールの現在の属性を取得する。
timeout_rtrn
初期リピート遅延 (ms) が返る
interval_rtrn
リピート間隔 (ms) が返る
Bool XkbSetAutoRepeatRate(Display *display, unsigned int device_spec, unsigned int timeout, unsigned int interval);
AutoRepeat コントロール属性を、timeout と interval で指定された値に構成するリクエストを、X サーバーに送信します。

XkbSetAutoRepeatRate は応答を待ちません。通常は True を返します。
timeout または interval のいずれかに 0 を指定すると、サーバーで BadValue プロトコル エラーが生成されます。
timeout
最初にキーを押したときの遅延 (ms)
interval
以降のリピート間隔 (ms)
Bool XkbGetDetectableAutorepeat(Display *display, Bool *supported_rtrn);
サーバーに DetectableAutorepeat の現在の状態を問い合わせて、応答を待ちます。
supported_rtrn が NULL でない場合、サーバーが DetectableAutorepeat をサポートしている場合は、supported_rtrn に True をセットし、サポートしていない場合は False をセットします。
supported_rtrn
サーバーが DetectableAutorepeat をサポートしている場合、True が返る
戻り値
要求側クライアントの DetectableAutorepeat の現在の状態を返します。
DetectableAutorepeat が設定されている場合は True、それ以外の場合は False を返します。
Bool XkbSetDetectableAutorepeat(Display *display, Bool detectable, Bool *supported_rtrn);
DetectableAutorepeat を設定する。
このリクエストは、リクエストしているクライアントのすべてのキーボードアクティビティにのみ影響します。
他のクライアントには、別の要求がない限り、予期される検出不可能な自動繰り返し動作が引き続き表示されます。

標準のキーリピート動作では、KeyPress -> KeyRelease -> KeyPress ...とイベントが生成されるが、DetectableAutorepeat が ON の状態だと、キーが物理的に離された時のみ KeyRelease が送られる (KeyPress -> KeyPress -> ... -> KeyRelease)。

DetectableAutorepeat はすべてのキーボードデバイスに適用される条件であるため、デバイスは指定できません。
detectable
True で、DetectableAutorepeat をセットする
supported_rtrn
NULL でない場合、サーバーが DetectableAutorepeat をサポートしているかが返る。
戻り値
要求側クライアントの DetectableAutorepeat の現在の状態を返します。
Bool XkbGetAccessXTimeout(Display *display, unsigned int device_spec, unsigned short *timeout_rtrn,
    unsigned int *ctrls_mask_rtrn, unsigned int *ctrls_values_rtrn, unsigned short *opts_mask_rtrn, unsigned short *opts_values_rtrn);
AccessXTimeout の現在の値を取得
Bool XkbSetAccessXTimeout(Display *display, unsigned int device_spec, unsigned short timeout, unsigned int ctrls_mask,
    unsigned int ctrls_values, unsigned short opts_mask, unsigned short opts_values);
AccessXTimeout の属性の設定
Bool XkbGetSlowKeysDelay(Display *display, unsigned int device_spec, unsigned int *delay_rtrn);
SlowKeys の属性を取得
delay_rtrn
遅延 (ms) が返る
Bool XkbSetSlowKeysDelay(Display *display, unsigned int device_spec, unsigned int delay);
SlowKeys コントロールを構成するリクエストをサーバーに送信します。応答を待たず、通常は True を返します。
遅延パラメーターの値 0 を指定すると、BadValue プロトコルエラーが生成されます。
Bool XkbGetBounceKeysDelay(Display *display, unsigned int device_spec, unsigned int *delay_rtrn);
BounceKeys の属性を取得
delay_rtrn
遅延 (ms) が返る
Bool XkbSetBounceKeysDelay(Display *display, unsigned int device_spec, unsigned int delay);
BounceKeys の属性を設定
Bool XkbGetStickyKeysOptions(Display *display, unsigned int device_spec, unsigned int *options_rtrn);
StickyKeys の属性を取得
options_rtrn
オプションのマスク値が返る。
XkbAX_TwoKeysMask2つのキーが同時に押された時、StickyKeys を自動的にオフにするか。
XkbAX_LatchToLockMask修飾キーが2回続けて押された時、修飾子をロックするかどうか。
Bool XkbSetStickyKeysOptions(Display *display, unsigned int device_spec, unsigned int mask, unsigned int values);
StickyKeys の属性を設定
mask
設定を変更するマスク
values
mask に対応するビットで、ON/OFF を指定
Bool XkbSetIgnoreLockMods(Display *display, unsigned int device_spec, unsigned int affect_real,
    unsigned int real_values, unsigned int affect_virtual, unsigned int virtual_values);
ロックされている場合に、一致するイベントでパッシブグラブに報告されない修飾子を設定する。

サーバーの IgnoreLockMods コントロールを変更するリクエストをサーバーに送信します。
affect_real と real_values は、どの実修飾子がサーバーの IgnoreLockMods コントロールに追加され、サーバーから削除されるかを示す実修飾子ビットのマスクです。
affect_real と real_values の両方で選択された修飾子は、サーバーの IgnoreLockMods コントロールに追加されます。
real_values ではなく、affect_real によって選択されたものは、サーバーの IgnoreLockMods コントロールから削除されます。

affect_real および real_values の有効な値は、8 つのコア修飾子ビット (ShiftMask、LockMask、ControlMask、Mod1Mask 〜 Mod5Mask) の任意の組み合わせで構成されます。
affect_virtual および virtual_values は、サーバーの IgnoreLockMods コントロールに、どの仮想修飾子を追加または削除するかを示す仮想修飾子ビットのマスクです。

affect_virtual と virtual_values の両方で選択された修飾子は、サーバーの IgnoreLockMods コントロールに追加されます。
affect_virtual によって選択され、virtual_values によって選択されなかったものは、サーバーの IgnoreLockMods コントロールから削除されます。
affect_real
この呼び出しによって影響を受ける実際の修飾子のマスク
real_values
影響を受ける実修飾子の値
affect_virtual
この呼び出しによって影響を受ける仮想修飾子のマスク
virtual_values
仮想修飾子の値
戻り値
XkbSetIgnoreLockMods はサーバーからの応答を待ちません。リクエストが送信された場合は True を返し、そうでない場合は False を返します。
Bool XkbSetServerInternalMods(Display *display, unsigned int device_spec, unsigned int affect_real,
    unsigned int real_values, unsigned int affect_virtual, unsigned int virtual_values);
イベントがクライアントに配信される前にサーバーによって消費される修飾子を設定する。
関数 (ライブラリ)
XkbLC_ForceLatin1Lookup     (1 << 0)
XkbLC_ConsumeLookupMods     (1 << 1)
XkbLC_AlwaysConsumeShiftAndLock (1 << 2)
XkbLC_IgnoreNewKeyboards    (1 << 3)
XkbLC_ConsumeKeysOnComposeFail  (1 << 29)
XkbLC_ComposeLED            (1 << 30)
XkbLC_BeepOnComposeFail     (1 << 31)
XkbLC_AllControls           (0xc0000007)
ライブラリコントロールマスク
unsigned int XkbXlibControlsImplemented(Display *display);
Xkb ライブラリに、実際に実装されているコントロールを示すビットマスクを返します。
unsigned int XkbGetXlibControls(Display *display);
ライブラリコントロールの現在の状態を、有効になっているコントロールのマスクとして返します。
オプションの作成処理コントロールの場合、コントロールが有効になっているという事実は、それが実際に実装されていることを意味するものではありません。
Bool XkbSetXlibControls(Display *display, unsigned long bits_to_change, unsigned long values_for_bits);
ライブラリのコントロールの有効無効を変更
bits_to_change
設定を変更するマスク
values_for_bits
対応するビットで、有効にするか無効にするかのマスク