XSetDeviceFocus
Section: X FUNCTIONS (3X11)
Updated: Release 6.6
索引
xjman
名前
XSetDeviceFocus, XGetDeviceFocus - 拡張入力デバイスのフォーカスを制御する
書式
XSetDeviceFocus(display, device, focus, revert_to, time)
Display *display;
Display *device;
Window focus;
int revert_to;
Time time;
XGetDeviceFocus(display, device, focus_return,
revert_to_return, time_return)
Display *display;
Display *device;
Window *focus_return;
int *revert_to_return;
int *time_return;
引き数
- display
-
X サーバへの接続を指定する。
- device
-
フォーカスの問い合わせや変更を行なうデバイスを指定する。
- focus
-
ウィンドウ、
PointerRoot,
FollowKeyboard,
None
のいずれかを指定する。
- focus_return
-
フォーカスウィンドウ、
PointerRoot,
FollowKeyboard,
None
のいずれかが返される。
- revert_to
-
ウィンドウが表示不能になった時入力フォーカスがどこに戻るかを指定する。
RevertToParent,
RevertToPointerRoot,
RevertToFollowKeyboard,
RevertToNone
のいずれかを指定できる。
- revert_to_return
-
現在のフォーカスの状態が
RevertToParent,
RevertToPointerRoot,
RevertToFollowKeyboard,
RevertToNone
のいずれかで返される。
- time_return
-
デバイスの last_focus_time が返される。
- time
-
時間を指定する。
タイムスタンプか
CurrentTime
を渡すことができる。
説明
XSetDeviceFocus
リクエストは指定したデバイスのフォーカスと最終フォーカス変更時間
(last-focus-change time)を変更する。
指定した時間が現在の最終フォーカス変更時間よりも早い場合や、現在の X
サーバの時間より遅い場合には何も行われない。
CurrentTime
is replaced by the current X server time).
そうでない場合は、最終フォーカス変更時間は指定した時間に設定され、
CurrentTime は現在の X サーバの時間に置き換えられる。
XSetDeviceFocus
は X サーバに
DeviceFocusIn
イベントと
DeviceFocusOut
イベントを生成させる。
focus 引き数に従って、以下の動作が起こる。
- *
-
focus が
None
の場合、全てのデバイスイベントは新しいフォーカスウィンドウが設定
されるまで破棄され、引き数 revert_to は無視される。
- *
-
focus がウィンドウの場合、これがデバイスのフォーカスウィンドウとなる。
生成されたデバイスイベントは通常はこのウィンドウかその下位ウィンドウに
通知された場合には、イベントは通常通りに通知される。
そうでない場合、イベントはフォーカスウィンドウに関して通知される。
- *
-
focus が
PointerRoot,
の場合、指定したデバイスから各イベントが通知された時にポインタがある、
任意のスクリーンのルートウィンドウが動的にフォーカスウィンドウになる。
この場合、引き数 revert_to は無視される。
- *
-
focus が
FollowKeyboard
の場合、それぞれの入力イベントの際に X のキーボードフォーカスが設定されている
ウィンドウが動的にフォーカスウィンドウになる。
指定したフォーカスウィンドウは
XSetDeviceFocus
が呼び出されたときに表示可能でなければならない。そうでなければエラー
BadMatch
となる。
フォーカスウィンドウが後から表示可能でなくなった場合、X サーバは引き数
revert_to を評価して以下のように新しいフォーカスウィンドウを決定する。
- *
-
revert_to が
RevertToParent
の場合、フォーカスは親ウィンドウ(あるいは最も近い表示可能な
先祖ウィンドウ)に戻り、新しい revert_to の値は
RevertToNone
となる。
- *
-
revert_to が
RevertToPointerRoot
の場合、フォーカスは
PointerRoot
に戻る。
同様に
RevertToFollowKeyboard
の場合は
FollowKeyboard
に、
RevertToNone
の場合は
None
に戻る。
フォーカスが戻った場合、X サーバは
DeviceFocusIn
イベントと
DeviceFocusOut
を生成するが、最終フォーカス変更時間は影響を受けない。
入力拡張デバイスは必ずしもフォーカスされる機能に対応する必要はない。
このリクエストに対応していないデバイスにフォーカスを設定しようと
すると BadMatch エラーとなる。
あるデバイスがこのリクエストに対応しているかどうかは
XOpenDevice
が返す情報によって知ることができる。
フォーカスに対応しているデバイスに対しては、XOpenDevice は
input_class フィールドが定数 FocusClass (これは XI.h 内で
定義されている)である XInputClassInfo 構造体を返す。
XSetDeviceFocus
はエラー
BadDevice,
BadMatch,
BadValue,
BadWindow
を起こすことがある。
XGetDeviceFocus
リクエストはフォーカスウィンドウとその現在のフォーカス状態を返す。
全ての入力拡張デバイスがフォーカス可能であるわけではない。フォーカスす
ることができないデバイスのフォーカス状態を問い合わせようとすると、
BadMatch エラーとなる。フォーカスすることができるデバイスは、
XOpenDevice リクエストが行われた時の入力クラスフォーカスの情報を
返す。
XGetDeviceFocus
はエラー BadDevice, BadMatch を起こすことがある。
返り値
- BadDevice
-
不正なデバイスが指定された。指定したデバイスが存在しないか、クライアン
トが XOpenInputDevice でオープンしていない。このエラーは、指定し
たデバイスが X のキーボードデバイスや X のポインタデバイスであった時に
も起こる。
- BadValue
-
指定された数値に、リクエストの許容範囲を越えているものがある。引き数に対
して特定の範囲が指定されていなければ、引き数の型で定義されている全ての範
囲が許される。選択肢として定義されている引き数はこのエラーを起こすことが
ある。
- BadWindow
-
引き数 Window の値が定義されている Window を指していない。
- BadMatch
-
このエラーは、 XGetDeviceFocusリクエスト か XSetDeviceFocus
リクエストにサーバの実装によりフォーカスができないデバイスを指定したし
た場合に起こる。
関連項目
Programming with Xlib
Index
- 名前
-
- 書式
-
- 引き数
-
- 説明
-
- 返り値
-
- 関連項目
-
Time: 07:00:54 GMT, January 12, 2009