XTEST エクステンション・ライブラリ

Version 2.2
X Consortium Standard

Kieron Drake
UniSoft Ltd.


翻訳: T.Sato <VEF00200@nifty.com>


1. 概要

このエクステンションは、 X11 サーバーをユーザーが介在することなく完全に試験するために必要な クライアントとサーバーのエクステンションの最小限のセットである。

このエクステンションは、 ユーザーのアクションの一般的な記録と再生のサポートを意図したものではない。 合成されたユーザー・インタラクションとその影響を同期させようとすることから、 それは難しい領域にある [XTrap, 89]; それは完全にレキシカルなレベルではなく、より高いレベルの対話記録/再生にある。 我々は、上記の、より単純なケースにのみ興味を持つ。 このエクステンションの機能に関するより詳細な議論や弁明は、 [Drake, 91] に示されている。

我々は試験/検証問題の直接の解決のために必要な 最小限の機能のセットのみを提供しようとしている。 このテスト用エクステンションそのものが可能な範囲でのテストを必要とするので、 できる限り単純なものであるべきである。

我々は以下の点にも務めた:

2. 解説

このエクステンションによって提供される関数は 2つのグループに分類できる:
クライアント側の操作
これらのルーチンは 通常は隠されているクライアント側の挙動を操作する。 実際の実装は、実際の言語バインディングや、 どの程度の要求のバッファリングや GContext のキャッシングなどが 提供されているかに依存するであろう。 セクション 7 で規定されている C バインディングにおいては、 2つの隠蔽データ構造 ――GC、及び Visual―― の内部へのアクセス、 及びある接続の出力バッファ内の処理待ちの全ての要求を捨てる ためのルーチンが提供されている。 厳密な詳細は、他の言語バインディングでは異なる可能性がある。

サーバーへの要求
これらの要求の最初のものは 大半のエクステンションで提供されているものと似ている: それはクライアントがサーバーにメジャー/マイナー・バージョンを知らせ、 またサーバーがそれ自身のメジャー/マイナー・バージョンを 回答することを可能とする。

残りの2つの要求は以下のものを可能とする:

3. C 言語バインディング

これらの C 関数は、このプロトコルへの直接のアクセスを提供して セクション 5 で定義されたセマンティクスへの追加は行なわないか、 あるいはセクション 4 のクライアントの動作の抽象的な記述に直接対応する。

全ての XTEST エクステンション関数や手続き、 そして全ての明示的な定数やマクロは、"XTest" という文字列で始まる。 全ての動作は、サーバー/クライアント (サーバー)、 あるいはクライアントのみ (クライアント) に分類される。 Status 型の戻り値を持つ全てのルーチンは、 「成功」に対して非ゼロの値を、「失敗」に対してゼロを返す。 XTEST エクステンションがサポートされているとしても、 サーバーがそれらの機能を独断で拒否する場合がある; そのような場合には、それらはゼロを返すことになるであろう。

このエクステンションのためのインクルード・ファイルは <X11/extensions/XTest.h> である。

Bool
XTestQueryExtension(display, event_base, error_base, major_version, minor_version)
     Display *display;
     int *event_base; /* RETURN */
     int *error_base; /* RETURN */
     int *major_version; /* RETURN */
     int *minor_version; /* RETURN */
XTestQueryExtension は、指定されたディスプレイが XTEST エクステンションをサポートしているならば True を、 さもなくば False を返す。 このエクステンションがサポートされていれば、 *event_base にはこのエクステンションのためのイベントの 最初のイベント番号が、 *error_base にはこのエクステンションのためのエラー番号の 最初のエラーが設定されるであろう。 このバージョンのエクステンションではエラーやイベントは規定されていないので、 ここで返される値は規定されない (有効ではない)。 このエクステンションがサポートされていれば、 *major_version、及び *minor_version は、 ディスプレイがサポートしている メジャー、及びマイナー・バージョンに設定される。 さもなくば、いずれの引数も設定されない。

Bool
XTestCompareCursorWithWindow(display, window, cursor)
     Display *display;
     Window window;
     Cursor cursor;
このエクステンションがサポートされていれば、 XTestCompareCursorWithWindowcursor (None かも知れない) で指定された ID のカーソルと window で指定されたウィンドウのカーソルとの比較を行ない、 それらが同一であれば True を、さもなくば False を返す。 このエクステンションがサポートされていなければ、 この要求は無視され、ゼロが返される。

Bool
XTestCompareCurrentCursorWithWindow(display, window)
     Display *display;
     Window window;
このエクステンションがサポートされていれば、 XTestCompareCurrentCursorWithWindow は 現在のカーソルと指定されたウィンドウのカーソルとを比較し、 それらが同一であれば True を、さもなくば False を返す。 このエクステンションがサポートされていなければ、 この要求は無視され、ゼロが返される。

XTestFakeKeyEvent(display, keycode, is_press, delay)
     Display *display;
     unsigned int keycode;
     Bool is_press;
     unsigned long delay;
このエクステンションがサポートされていれば、 XTestFakeKeyEventkeycode で指定されたキーの KeyPress (is_pressTrue である場合)、 もしくは KeyRelease (is_pressFalse である場合) のいずれかのシミュレートをサーバーに要求する; さもなくば、その要求は無視される。

このエクステンションがサポートされていれば、 シミュレートされたイベントは その要求を受け取ってから delay ミリ秒後まで処理されない (delayCurrentTime であれば、 全く遅延させないものと解釈される)。 このクライアントからの他の要求 (もしあれば) は、この遅延時間が経過し、 シミュレートされたイベントの処理が完了するまでは処理されない。

XTestFakeButtonEvent(display, button, is_press, delay)
     Display *display;
     unsigned int button;
     Bool is_press;
     unsigned long delay;
このエクステンションがサポートされていれば、 XTestFakeButtonEventbutton で指定された番号の論理ボタンの ButtonPress (is_pressTrue である場合)、 もしくは ButtonRelease (is_pressFalse である場合) のいずれかのシミュレートをサーバーに要求する; さもなくば、その要求は無視される。

このエクステンションがサポートされていれば、 シミュレートされたイベントは その要求を受け取ってから delay ミリ秒後まで処理されない (delayCurrentTime であれば、 全く遅延させないものと解釈される)。 このクライアントからの他の要求 (もしあれば) は、この遅延時間が経過し、 シミュレートされたイベントの処理が完了するまでは処理されない。

XTestFakeMotionEvent(display, screen_number, x, y, delay)
     Display *display;
     int screen_number;
     int x, y;
     unsigned long delay;
このエクステンションがサポートされていれば、 XTestFakeMotionEventscreen_number のルート・ウィンドウ上での 指定された座標 (x, y) への ポインタの移動のシミュレートをサーバーに要求する; さもなくば、その要求は無視される。 もし screen_number-1 であれば、 現在の (ポインタがある) スクリーン が用いられる。

このエクステンションがサポートされていれば、 シミュレートされたイベントは その要求を受け取ってから delay ミリ秒後まで処理されない (delayCurrentTime であれば、 全く遅延させないものと解釈される)。 このクライアントからの他の要求 (もしあれば) は、この遅延時間が経過し、 シミュレートされたイベントの処理が完了するまでは処理されない。

XTestFakeRelativeMotionEvent(display, screen_number, x, y, delay)
     Display *display;
     int screen_number;
     int x, y;
     unsigned long delay;
このエクステンションがサポートされていれば、 XTestFakeRelativeMotionEvent は 現在のポインタの位置から指定されたオフセット (x, y) だけのポインタの移動のシミュレートをサーバーに要求する; さもなくば、その要求は無視される。 もし screen_number-1 であれば、 現在の (ポインタがある) スクリーン が用いられる。

このエクステンションがサポートされていれば、 シミュレートされたイベントは その要求を受け取ってから delay ミリ秒後まで処理されない (delayCurrentTime であれば、 全く遅延させないものと解釈される)。 このクライアントからの他の要求 (もしあれば) は、この遅延時間が経過し、 シミュレートされたイベントの処理が完了するまでは処理されない。

XTestGrabControl(display, impervious)
     Display *display;
     Bool impervious;
imperviousTrue であれば、 これを実行したクライアントはサーバー・グラブに影響されなくなる。 imperviousFalse であれば、 これを実行したクライアントはサーバー・グラブの影響を受ける 通常の状態に戻る。

Bool
XTestSetGContextOfGC(gc, gid)
     GC gc;
     GContext gid;
XTestSetGContextOfGCgc で参照される隠蔽データ型内の GContext を gid で指定されたものに設定する。

XTestSetVisualIDOfVisual(visual, visualid)
     Visual *visual;
     VisualID visualid;
XTestSetVisualIDOfVisualvisual で参照される隠蔽データ型内の VisualID を visualid で指定されたものに設定する。

Bool
XTestDiscard(display)
     Display *display;
XTestDiscard は 指定されたディスプレイの出力バッファ内にある全ての要求を破棄する。 これは何らかの要求が破棄されたならば True を返す; さもなくば、これは False を返す。

4. 参考

Annicchiarico, D., et al., XTrap: The XTrap Architecture. Digital Equipment Corporation, July 1991.

Drake, K. J., Some Proposals for a Minimum X11 Testing Extension. UniSoft Ltd., June 1991.


Copyright (C) 1992 by UniSoft Group Ltd.

Permission to use, copy, modify, and distribute this documentation for any purpose and without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. UniSoft makes no representations about the suitability for any purpose of the informationin this document. This documentation is provided ``as is'' without express or implied warranty.

Copyright (C) 1992, 1994 X Consortium

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the X Consortium shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from the X Consortium.


Last update: 2001-02-28