XChangeKeyboardControl(3X11) — NEWS-OS Programmer’s Manual
名称
XChangeKeyboardControl, XGetKeyboardControl, XAutoRepeatOn, XAutoRepeatOff, XBell, XQueryKeymap, XKeyboardControl − キーボードの設定と制御構造を操作する
形式
XChangeKeyboardControl(display, value_mask, values)
Display ∗display;
unsigned long value_mask;
XKeyboardControl ∗values; 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];
引数
displayX サーバへのコネクションを指定します。
keys_returnどのキーが押されたかを示すバイト配列を返します。 各ビットは、キーボードの 1 キーを表します。
percentベルの音量 (−100 〜 100) を指定します。
value_maskどの制御を変更するかを指定します。 このマスクは、有効な制御マスクのビット単位の(内包的)論理和です。
valuesマスク内で 1 に設定されたビットに対応する制御値を指定します。
values_return
指定された XKeyboardState 構造体に現在のキーボード制御値を返します。
解説
XChangeKeyboardControl 関数は、 XKeyboardControl 構造体で定義されたキーボード特性を制御します。 value_mask 引数は、どの値を変更するかを指定します。 XChangeKeyboardControl の返しうるエラーは、 BadMatch および BadValue です。 XGetKeyboardControl 関数は、 XKeyboardState 構造体にキーボードの現在の制御値を返します。 XAutoRepeatOn 関数は、指定されたディスプレイでキーボードのオートリピートを オンにします。 XAutoRepeatOff 関数は、指定されたディスプレイでキーボードのオートリピートを オフにします。 XBell 関数は、可能であれば指定されたディスプレイでキーボードのベルを 鳴らします。 指定された音量は、キーボードの基本音量に対する相対値です。 percent 引数の値が −100 〜 100 の範囲になければ、 BadValue エラーが生じます。 percent 引数が負数以外のときのベルの音量は、下式で表します。
基本音量 − [(基本音量 ∗ percent) / 100] + percent percent 引数が負数のときのベルの音量は、下式で表します。
基本音量 + [(基本音量 ∗ percent) / 100] ベルの基本音量を変更するには、 XChangeKeyboardControl を使用します。 XBell の返しうるエラーは、 BadValue です。 XQueryKeymap 関数は、キーボードの論理状態をビットベクトルで返します。 ここで 1 に設定された各ビットは、現在それに対応するキーが 押されていることを表します。 ベクトルは、32 バイトで表します。 バイト N (0 から) は、キー 8N 〜 8N + 7 に対応するビットを含んでおり、 バイトの最下位ビットは、キー 8N を表します。 なお、デバイスの論理状態(クライアントアプリケーションから見た)は、 デバイスのイベント処理がフリーズされている場合、物理状態に遅れを 生じうることに注意してください。
構造体
XKeyboardControl 構造体は以下のものを含みます。 /∗ 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 (off) から 100 (大きい)の間に 設定します (0 と 100 を含む)。 −1 に設定すると、デフォルト値が再設定されます。 その他の負の値は、 BadValue エラーとなります。 bell_percent は、ベルの基本のボリュームを 0 (off) から 100(大きい) の間に 設定します (0 と 100 を含む)。 −1 に設定すると、デフォルト値が再設定されます。 その他の負の値は、 BadValue エラーとなります。 bell_pitch メンバは、ベルのピッチ (Hz で指定) を設定します。 −1 に設定すると、デフォルト値が再設定されます。 その他の負の値は、 BadValue エラーとなります。 bell_duration メンバは、ベルの長さをミリ秒で設定します。 −1 に設定すると、デフォルト値が再設定されます。 その他の負の値は、 BadValue エラーとなります。 led_mod と led_members の両方を指定した場合は、 指定された LED の状態が変わります。 led_mod メンバは、 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 なしで key を指定した場合は、 BadMatch エラーとなります。 各キーは、オートリピートかどうかを示す個別のモードと、 そのモードのデフォルトの設定を持っています。 さらに、オートリピートを可能にするかどうかを示すグローバルモード、 およびそのモードのデフォルトの設定もあります。 グローバルモードが AutoRepeatModeOn の場合、 各 key は個別のオートリピートモードに従います。 グローバルモードが AutoRepeatModeOff の場合、 全ての key がオートリピートしません。 オートリピートキーは、 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 の最下位ビットが LED 1 と対応しています。 点滅させたい LED に対応する led_mask の各ビットを 1 に設定します。 global_auto_repeat メンバは、 AutoRepeatModeOn あるいは AutoRepeatModeOff に設定できます。 auto_repeats メンバはビットベクトルです。 オートリピートにしたいキーに対応するビットを 1 に設定します。 ベクトルは 32 バイトで表します。 バイト N (0 から) バイト N (0 から) は、キー 8N 〜 8N + 7 に対応するビットを含んでおり、 バイトの最下位ビットは、キー 8N を表します。
診断
BadMatch ある引数またはひと組の引数の型と範囲は正しいが、リクエストにより 要求されたその他のなにかが一致しない。
BadValue ある数値が許容範囲を超えた。 引数の値の範囲が明示されない限り、引数の型によって決まる最大の範囲まで 指定可能です。 選択形式の引数も、このエラーを生じることがあります。
関連事項
XChangeKeyboardMapping(3X11), XSetPointerMapping(3X11)
Xlib − C Language X Interface
NEWS-OS Release 4.2.1R