マニュアルページ xdrecord.1
名前
xdrecord - Motif/Xt プログラムに対して行なったユーザーのアク
ションを記録します。
形式
xdrecord [-x] [-f <スクリプト>] [-lang <ロケール>] [-wViIO]
[-use n] <プログラム> [<引数>...]
入力形式
<スクリプト> 出力を書き込むファイル (デフォルトは標準出力)
<ロケール> 使用する言語のロケール名
<プログラム> 捕獲する実行可能ファイル
<引数> 実行可能ファイルに渡す引数
機能説明
xdrecord は、起動中の Motif/Xt アプリケーションを モ ニ ター
し、 そのアプリケーションに対してユーザーが行なったアクショ
ンの記録を取ります。 xdrecord は、X サーバーから送られるイベ
ン ト列を解釈し、ユーザーが アプリケーションのウィジェットに
対して行なったアクションを「高級な」記述に 翻訳します。
引数
-x xdrecord のコマンド行からの使用方法を表示します。
-f 記録した情報を指定したスクリプトに保存します。-i オプ
ションと組み合わせて使用することはできません。
-lang GUI (グラフィカルユーザーインタフェース) やエラーメッ
セージを含む xdrecord を、指定したロケールで起動し
ます。LANG 設定は無視されます。
-w ディスプレイ、サーバー、ウィンドウマネージャの概要情報
を表示します。
-V xdrecord のバージョン情報を表示します。
-i xdrecord の GUI を表示します。
-I 捕獲するアプリケーションが捕獲するアプリケーションが
xdcapture のインタフェースを読み込むことができない
場合でも、xdcapture の GUI を強制的に表示します。
-O 捕獲しようとしたアプリケーションが Motif とリンクして
いない場合でも、xdrecord を終了しません。
-use n
n 番目に表示されるアプリケーションシェルを使用します。
このオプションは、初期画面用のアプリケーションシェルが
表示される、あるいは、最初に設定画面用のアプリケーショ
ンシェルが使用されるプログラムに対して使用します。
使用法
xdrecord は、デフォルトではスクリプトを記録し、標準出力に 表
示 します。-i オプションを指定すると、X-Designer Replay イン
タフェースを 使用した対話型の記録/再現ツールが起動します。-i
の 代わりに -f <スクリプト> と入力すると、記録された内容が指
定されたスクリプトファイルに保存 されます。既存のスクリプ ト
ファイルを上書きすることはできません。
-O は、Motif に準拠していないアプリケーションを記録しよう と
し た 場 合でも、 プログラムが終了しないようにします。アプリ
ケーションが Motif に リンクしていないと、ほとんどの場 合 は
xdrecord の 使 用 す る Motif ルーチンがコアダンプします。
xdrecord は、デフォルトでは Motif に準拠していないアプリケー
ショ ンには動作しないよう設定されています。 この設定は変更可
能で、変更後でも -O オプションを使用することで 有益なデ バッ
グ 情報を入手することができます。ただし、Motif を 必要とする
ような処理は行わないことをお勧めします。
使用例
xdrecord ダイアログを表示するには、次にように入力します。
$ xdrecord -i <アプリケーション>
アプリケーションに対して行なったアクションをスクリプトファイ
ルに 記録するには、次にように入力します。
$ xdrecord -f <スクリプト> <アプリケーション>
アプリケーションに対して行なったアクションを記録して、その内
容を 標準出力に表示するには、次のように入力します。
$ xdrecord <アプリケーション>
TIPS
xdreplay、xdrecord、xdcapture に関して 頻繁に問い合わせの あ
る内容について説明します。
1. なぜ Netscape などの特定のアプリケーションは記録および 再
現することができないのですか ?
典型的な原因としては、次のいずれかの場合が考えられます。
a) アプリケーションが、Xt ライブラリと動的にでなく、静的 に
リンクされている。
b) アプリケーションが、Xt 動作手続きを許可しない独自の マル
チスレッド方式を採用している。
c) その製品が複数のアプリケーションシェルを使用している (質
問 4 を 参照してください)。
ご自身で作成したソフトウェアを記録および再現できない場合は、
そ の ソフトウェアが libXt.so を使用するように再度リンクを行
なってください。
2. なぜテキストウィジェット上でクリックした位置は、記録さ れ
ないのですか ?
すべての「位置に敏感な」Motif ウィジェットの記録および再現に
は、 特別な xdreplay ルーチンが使用されます。 このようなルー
チンのソースコードは、src/examples/replay/libcvtXm ディレ ク
トリに あります。
XmText および XmTextField に対する変換ルーチンは、デフォルト
で は構築されません。 テストという目的に関しては、ほとんどの
場合、テキストフィールドを単なるデー タ入力フィールドと見 な
し、 内容を自由に置き換えるようにするだけで十分です。 たとえ
ば、例 1 の方が例 2 よりも明確です。
<例 1>
1. doubleclick mytextwidget
2. type halloworld
<例 2>
1. doubleclick mytextwidget( position, 25)
2. type halloworld
また、特定の位置の文字をダブルクリックすることで、すべて の
テキストが選択されるかどうかを確認することは、困難でもありま
す。
テストによっては、テキストフィールドの内容を変更する場合もあ
り ます。 重要なものはテキストウィジェットの名前であって、そ
の中に入力する値ではありません。
アプリケーション内で XmText ウィジェットの編集機能をテストし
た い 場合は、cc コマンドに -DHANDLE_TEXT オプションを追加し
て libcvtXm ディレクトリを再構築する必要があります。次に、共
有オブジェクト libcvtXm.so を lib/xds にコピーして標準のライ
ブラリを上書きしてください。
3. xdreplay の著作権に関するメッセージは表示されますがその後
xdreplay が終了してしまいます。
xdreplay は、再現しようとしているアプリケーションが Motif で
はないと 判断した場合には、終了します。
-O オプションを使用すると、Motif 以外のアプリケーションを 再
現 しようと した場合にも xdreplay は終了せず、強制的にそのア
プリケーションの機能を 再現することができます。
注: 再現しようとするアプリケーションが Motif であっても、 ア
プリケーションシェル が複数存在する場合は、xdreplay が終了す
る場合があります (以下の内容を 参照してください)。
4. xdreplay は起動しましたが、動作しないようです。
典型的な原因としては、次のいずれかの場合が考えられます。
a) アプリケーションに、起動直後に瞬間的に表示されるア プ リ
ケーションシェルが 存在する、または 1 つ以上のアプリケーショ
ンシェルが起動直後に一時的に作成される。 デフォル ト で は、
xdreplay は 1 番目のアプリケーションシェルを 記憶し、参照対
象として使用します。通常は、最初に表示された アプリケーショ
ンシェルが 1 番目のシェルとして認識されますが、 次のようにオ
プションを指定して、4 番目のシェルを記憶するように 変更す る
ことができます。
コマンド行で次のように入力します。
-use 4
または、環境変数 XDSUSESHELL を次にように設定します。
setenv XDSUSESHELL 4
注:「本当の」アプリケーションシェルが参照対象として使用さ れ
て いる かどうかを確認するには、そのアプリケーションを記録し
てください。 正しいアプリケーションシェルが使用されている 場
合は、記録されたログに 次にように記述されています。
in ApplicationShell
......
次のように記述されている場合は、正しいアプリケーションシェル
が 参照対象として使用されていない可能性があります。
in myapp
.....
ただし、記録したアプリケーションに、マップされていないアプリ
ケー ション シェルがあり、かつ最上位シェルが複数存在する場合
は、上述の例でも問題は ありません。
現在の設定が正しくない場合は、-use オプションで現在よりも 大
き な値を指定 します。再度アプリケーションを記録し、記録され
たログの in myapp が in ApplicationShell に変更されたかどう
か を確認します。 本当のアプリケーションシェルが何番目のシェ
ルか確認できない場合は、 すべてのアプリケーションシェルを 無
視 するように設定します。このように 設定すると、いずれのアプ
リケーションシェルも記録、再現、捕獲されません。
b) 記録しようとしたアプリケーションが、Xt イベント処理を 再
実行または 破壊した。
具体的には、次のような例が挙げられます。
-i オプションで xdreplay を起動した。再現しようとした アプリ
ケーションは表示されたが、xdreplay のダイアログは 表示されな
い。
-I オプションで xdreplay を起動した。xdreplay のダイアログの
方が、 再現するアプリケーションよりも先に表示された。
このような場合には、デザインを捕獲することはできますが、再現
することはできま せん。
c) 捕獲/再現しようとするアプリケーションが Motif にリンクし
ていない。
この場合、デフォルトでは、xdreplay は異常終了します。 -O オ
プ ションを指定すると、この設定は変更することができます。 た
だし、Motif に依存する機能は、記録または再現することができま
せん。
5. 他社製のウィジェットを使用したアプリケーションを捕獲し た
いのですがどのようにすればよいでしょうか ?
捕獲機構では、捕獲したデザインのファイルを xdesigner の .xd
形 式 で作成します。つまり、標準の xdesigner が使用されてい
て、Motif 以外の ウィジェットが追加されていないと仮定してい
ま す。デフォルトでは、Motif 以外の ウィジェットは、捕獲ファ
イルの中では Motif の描画領域ウィジェットに置き換え られてい
ます。
他社製のウィジェットも捕獲できるような xdesigner を使用す る
には、 リソースを次のように設定する必要があります。
*xdsCaptureUserWidgets:true
6. xdreplay で日本語やその他の言語および入力メソッドを使用す
ることはできますか ?
はい、できます。テキストフィールドに入力されたテキストの内容
が記録され、 テキストの入力がそのまま再現されます。
この機能は、Motif のテキストウィジェットおよびテキストフィー
ル ドウィジェット に対してのみ有効であるように設定されていま
す。 設定ソフトウェアは、以下の場所にありますす。
src/examples/replay/motif/motif4.c
また、このソフトウェアを登録するための機構は、以下のとおりで
す。
src/examples/replay/motif/register.c
この構成機能には、データの取得/設定 (get/put) ルーチンが含ま
れ ています。 入力メソッドによっては、このルーチンにアクセス
できる場合があります。 デフォルトの動作は「ウィジェットの 中
にある文字列にアクセスする」です。
Control + Space キーは、入力メソッドに対する作成要求にハード
コードされて います。また、代替手段の "compose" キーシムのリ
ソースが、デフォルトで変換キーに 設定されています。
たとえば、作成キーが F3 キーである入力メソッドを持つソ フ ト
ウェ アを記録する 場合は、次のように設定してソフトウェアを実
行してください。
-xrm *xdsImComposeKeySym:F3
または、このリソースを defaults ファイルに設定する か、 xrdb
を使用して設定 してください。
7. 自分が開発したアプリケーションは、一般ユーザーによって 記
録/再現が可能でしょうか ?
一般ユーザーが xdreplay を使用して、あなたの作成したア プ リ
ケー ションを 記録および再現できるようにするには、コードに次
の行を挿入し、さらに アプリケーションを libxdsclient.a ラ イ
ブラリとリンクする必要があります。
xdsAllowUserAccess()
関連項目
xdreplay(1) xdcapture(1)