Other Alias
XSetInputFocus書式
XSetInputFocus(display, focus, revert_to, time)Display *display;
Window focus;
int revert_to;
Time time;
XGetInputFocus(display, focus_return, revert_to_return)
Display *display;
Window *focus_return;
int *revert_to_return;
引き数
- display
- X サーバへの接続を指定する。
- focus
- ウィンドウ、 PointerRoot, None のいずれかを指定する。
- focus_return
- フォーカスウィンドウ、 PointerRoot, None のいずれかが返される。
- revert_to
- ウィンドウが表示不能になったときに入力フォーカスがどこに戻るかを指定する。 RevertToParent, RevertToPointerRoot, RevertToNone のいずれかを指定できる。
- revert_to_return
- 現在のフォーカス状態 (RevertToParent, RevertToPointerRoot, RevertToNone のいずれか)が返される。
- time
- 時刻を指定する。 タイムスタンプか CurrentTime を指定できる。
説明
関数 XSetInputFocus は入力フォーカスと最終フォーカス変更時刻(last-focus-change time)を変更 する。 指定した時刻が最終フォーカス変更時刻より早い場合や X サーバの現在時刻よ りも遅い場合には、この関数は何も行わない。 そうでない場合には、最終フォーカス変更時刻は指定した時刻に設定される (CurrentTime は X サーバの現在時刻で置き換えられる)。 XSetInputFocus により X サーバは FocusIn イベントと FocusOut イベントを生成する。引き数 focus の値により関数の動作は以下のようになる。
- focus が None の場合、新しいフォーカスウィンドウが設定されるまで全ての キーボードイベントは破棄され、引き数 revert_to は無視される。
- focus がウィンドウの場合、このウィンドウがキーボードのフォーカスウィンドウとなる。 生成されたキーボードイベントがこのウィンドウやその下位ウィンドウの1つ に普通に報告された場合、そのイベントは通常通り報告される。 そうでない場合、イベントはフォーカスウィンドウに関するものとして報告される。
- focus が PointerRoot の場合はフォーカスウィンドウは動的に決定され、各キーボードイベントが起 きたときにポインタがあった任意のスクリーンのルートウィンドウとなる。 この場合、引き数 revert_to は無視される。
指定したフォーカスウィンドウは、 XSetInputFocus が呼び出されたときに表示可能でなければならない。 表示可能でなければ関数は BadMatch エラーとなる。 フォーカスウィンドウが後で表示可能でなくなった場合、 X サーバは引き数 revert_to を評価し、以下のようにして新しいフォーカスウィ ンドウを決定する。
- revert_to が RevertToParent ならば、フォーカスは親ウィンドウ(あるいは最も近い表示可能な祖先ウィン ドウ)に戻り、revert_to の新しい値は RevertToNone となる。
- revert_to が RevertToPointerRoot の場合にはフォーカスは PointerRoot に戻り、 RevertToNone の場合には None に戻る。 フォーカスが戻ったときには X サーバは FocusIn イベントと FocusOut を生成するが、最終フォーカス変更時刻は影響を受けない。
XSetInputFocus はエラー BadMatch, BadValue, BadWindow を起こすことがある。
関数 XGetInputFocus はフォーカスウィンドウと現在のフォーカス状態を返す。
返り値
- BadValue
- 指定された数値の中にリクエストの許容範囲を越えているものがある。引き数 に対して特定の範囲が指定されていなければ、引き数の型で定義されている全 ての範囲が許される。選択肢として定義されている引き数はこのエラーを起こ すことがある。
- BadWindow
- 引き数 Window の値が、定義されているウィンドウを指していない。