XSendExtensionEvent(3XI) — NEWS-OS Programmer’s Manual
名称
XSendExtensionEvent − 入力拡張イベントをクライアントに送る
形式
Status XSendExtensionEvent(display, device, destination, propagate, event_count, event_list, event_send)
Display ∗display;
XDevice ∗device;
Window destination;
Bool propagate;
int event_count;
XEventClass ∗event_list;
XEvent ∗event_send;
引数
display X サーバとの接続を指定する。
device イベントを送出するデバイスを指定する。
destination イベントを受けるウィンドウを指定する。 ウィンドウ ID、PointerWindow、 または InputFocus を指定可。
propagate 真か偽の値を指定する。
event_count event_list 内の XEventClasses のカウントを指定する。
event_list 使用するイベント選択のリストを指定する。
event_send 送出するイベントへのポインタを指定する。
解説
XSendExtensionEvent
リクエストは目的のウィンドウを指定し、 指定イベントをどのクライアントが受けるかを決定し、 アクティブグラブを無視します。 このリクストはイベントクラスリストをパスするように要求します。 有効なイベントクラス名については、 XOpenDevice(3XI) を参照。 このリクエストは目的ウディンドウを指定するために、 以下のように w 引数を使用します:
•w が PointerWindow の場合、 目的のウィンドウはポインタを保持するウィンドウとなります。
•w が InputFocus でフォーカスウィドウがポインタを保持する場合、 目的ウィンドウはポインタを保持するウィンドウとなります。 そうでなければ、 目的ウィンドウはフォーカスウィンドウとなります。
どのウィンドウが指定イベントを受信するかを決定するためには、 XSendExtensionEvent は propagate 引数を以下のように使用します。
•event_list が空セットの場合、 イベントは目的のウィンドウを生成するクライアントに送られます。 そのクライアントが存在しない場合、 イベントは送られません。
•propagate が False の場合、 目的ウィンドウ上で event_list 列によって指定された イベントタイプを選択する各クライアントに送られます。
•propagate が True で 目的ウィンドウ上で event_list 列によって指定された イベントタイプを選択するクライアントがない場合、 いくつかのクライアントがイベントリストにてタイプを指定し、 do-not-propagate-mask にタイプを持たない反転ウィンドウの 目的ウィンドウの最も近い先祖に置き換えられます。 そのようなウィンドウが存在しない、 またはそのウィンドウがフォーカスウィンドウの先祖であり、 InputFocus が目的として元から指定されていた場合、 イベントはどのクライアントにも送られません。 そうでなければ、 event_list 列で指定されたイベントを 最後の目的ウィンドウ上で選択する各クライアントにイベントは送られます。
XEvent 構造体でのイベントは、 必要に応じて X サーバが正確に内容をバイト交換できるように、 入力拡張によって定義されたイベントでなければなりません (そうでなければ、 BadValue エラーとなります)。 send_event を先行するイベントにて True にしたり、イベント内に正確にシリアルナンバを 設定することを除いて、 イベントの内容は X サーバによって変更されたり、 チェックされたりしません。
有線式のプロトコル形式への変換が失敗した場合には XSendExtensionEvent はゼロを返し、 そうでなければゼロ以外を返します。 XSendExtensionEvent は、 BadClass、 BadDevice、 BadValue、 および BadWindow エラーを生成します。
自己診断
BadDevice 無効デバイスが指定された。 指定デバイスが存在しない、 または XOpenInputDevice 経由でクライアント にてオープンされていない。 指定デバイスが X キーボードまたは X ポインタデバイスの場合、 このエラーが発生します。
BadValue いくつかの数値が、リクエストによって 認められる範囲外である。指定範囲が引数に対してでなければ、 引数のタイプで定義した範囲全てが認められます。 二者択一のセットで定義された引数の場合、 このエラーが発生します。
BadWindow Window 引数の値が定義ウィンドウに一致しない。
関連事項
Programming with Xlib
NEWS-OSRelease 4.2.1R