XGetKeyboardControl(display, values_return)
Display *display;
XKeyboardState *values_return;
XAutoRepeatOn(display)
Display *display;
XAutoRepeatOff(display)
Display *display;
XBell(display, percent)
Display *display;
int percent;
XQueryKeymap(display, keys_return)
Display *display;
char keys_return[32];
関数 XGetKeyboardControl はキーボードの現在の制御値を XKeyboardState 構造体に返す。
関数 XAutoRepeatOn は、指定したディスプレイのキーボードのオートリピートを有効にする。
関数 XAutoRepeatOff は、指定したディスプレイのキーボードのオートリピートを無効にする。
関数 XBell は可能ならば、指定したディスプレイのキーボードのベルを鳴らす。 指定する音量はキーボードの基本音量に対する相対値である。 引き数 percent の値が -100 から 100 の範囲でない場合には、エラー BadValue となる。 引き数 percent の値が負でない場合には、ベルが鳴る音量は次のようになる。
引き数 percent の値が負の場合には、ベルが鳴る音量は次のようになる。
ベルの基本音量を変更するには XChangeKeyboardControl を使う。
XBell はエラー BadValue を起こすことがある。
関数 XQueryKeymap は、キーボードの論理的状態を表すビットのベクトルを返す。 1 がセットされているビットは、対応するキーが現在押されていることを示す。 このベクトルは 32 バイトで表される。 バイト N (0から数える)は、キー 8N から 8N + 7 に対応するビットを持つ。 ここでバイト中の最下位ビットがキー 8N を表す。
デバイスのイベントが凍結されている場合、デバイスの論理的状態(クライア ントアプリケーションが見る)が物理的状態とずれることがある。
/* ChangeKeyboardControl に対するマスクビット値 */
#define | KBKeyClickPercent |
(1L<<0)
|
#define | KBBellPercent |
(1L<<1)
|
#define | KBBellPitch |
(1L<<2)
|
#define | KBBellDuration |
(1L<<3)
|
#define | KBLed |
(1L<<4)
|
#define | KBLedMode |
(1L<<5)
|
#define | KBKey |
(1L<<6)
|
#define | KBAutoRepeatMode |
(1L<<7)
|
/* 値 */ typedef struct { int key_click_percent; int bell_percent; int bell_pitch; int bell_duration; int led; int led_mode; /* LedModeOn, LedModeOff */ int key; int auto_repeat_mode;/* AutoRepeatModeOff, AutoRepeatModeOn, AutoRepeatModeDefault */ } XKeyboardControl;
key_click_percent メンバは、可能ならばキークリック音の音量を 0 (無音) 以上 100 (最大音量)以下の値で設定する。 -1 を指定するとデフォルト値が復元される。 これ以外の負の値を指定した場合は、エラー BadValue となる。
bell_percent メンバは、可能ならば 0 (無音)以上 100 (最大音量)の間でベルの 基本音量を設定する。 -1 を指定するとデフォルト値が復元される。 これ以外の負の値を指定した場合は、エラー BadValue となる。 bell_pitch メンバは、可能ならばベルの音調(Hz で指定)を設定する。 -1 を指定するとデフォルト値が復元される。 これ以外の負の値を指定した場合は、エラー BadValue となる。 bell_duration メンバは、可能ならばベルの鳴る時間をミリ秒単位で設定する。 -1 を指定するとデフォルト値が復元される。 これ以外の負の値を指定した場合は、エラー BadValue となる。
led_mode メンバと led_mode メンバの両方が指定された場合、可能ならばそ の LED の状態が変更される。 led_mode メンバには LedModeOn あるいは LedModeOff が設定できる。 led_mode だけが指定されている場合、可能ならば全ての LED の状態が変更さ れる。 1 から数えて最大 32 個までの LED がサポートされている。 LED の標準的な実装は定義されていない。 led_mode メンバ無しで led メンバが指定された場合は、エラー BadMatch となる。
auto_repeat_mode メンバと key メンバの両方が設定されている場合、可能な らばそのキーに対する auto_repeat_mode モードが変更される(変更は AutoRepeatModeOn, AutoRepeatModeOff, AutoRepeatModeDefault のいずれかに従って行われる)。 auto_repeat_mode だけが指定された場合、可能ならばキーボード全体につい ての大域的な auto_repeat_mode が変更されるが、個別のキーについての設定 は影響を受けない。 auto_repeat_mode 無しでキーが指定された場合、エラー BadMatch となる。 それぞれのキーはオートリピートすべきかどうかを示す個別のモードと、この モードのデフォルトの設定を持っている。 さらに、オートリピートを有効にすべきかどうかを示す大域的なモードと、こ のモードのデフォルトの設定がある。 大域的なモードが AutoRepeatModeOn ならば、キーは個別のオートリピートモードに従う。 大域的なモードが AutoRepeatModeOff ならば、全てのキーはオートリピートしてはならない。 オートリピートしているキーは KeyPress イベントと KeyRelease イベントを交互に生成する。 あるキーをモディファイアとして使う場合は、オートリピートの設定に関わら ず、そのキーはオートリピートさせないことが望ましい。
XKeyboardState 構造体の内容を以下に示す。
typedef struct { int key_click_percent; int bell_percent; unsigned int bell_pitch, bell_duration; unsigned long led_mask; int global_auto_repeat; char auto_repeats[32]; } XKeyboardState;
LED については、led_mask メンバの最下位ビットが 1 番目の LED に対応し、 led_mask メンバ中で 1 にセットされているビットは、その LED が点灯して いることを示す。 global_auto_repeat メンバには AutoRepeatModeOn または AutoRepeatModeOff を設定できる。 auto_repeats メンバはビットのベクトルである。 それぞれのビットに 1 が設定されていると、対応するキーのオートリピート が有効であることを示す。 このベクトルは 32 バイトで表される。 バイト N (0から数える)は、キー 8N から 8N + 7 に対応するビットを持つ。 ここでバイト中の最下位ビットがキー 8N を表す。