JPH0667902A - Method and apparatus for automatically generating computer program - Google Patents
Method and apparatus for automatically generating computer programInfo
- Publication number
- JPH0667902A JPH0667902A JP3263151A JP26315191A JPH0667902A JP H0667902 A JPH0667902 A JP H0667902A JP 3263151 A JP3263151 A JP 3263151A JP 26315191 A JP26315191 A JP 26315191A JP H0667902 A JPH0667902 A JP H0667902A
- Authority
- JP
- Japan
- Prior art keywords
- computer
- card16
- window
- length
- monitoring
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
Abstract
Description
【0001】[0001]
【産業上の利用分野】本発明は、プロセス間コンピュー
タ通信、より詳細には、マルチプロセスコンピュータ環
境内におけるホストとクライアント・プロセスとの間の
監視及び交信の生成に関する。FIELD OF THE INVENTION This invention relates to inter-process computer communication, and more particularly to the generation of monitoring and communication between host and client processes within a multi-process computer environment.
【0002】[0002]
【従来の技術および発明が解決しようとする課題】新し
いコンピュータ・アーキテクチヤを導入するためのコス
トは過去30年間に大きく上昇した。初期のコンピュー
タ・システム(例えば、IBM7094)は、ほんの少
しのソフトウエア支援あるいは全く支援なしに設計、製
造及び販売された。しかし、時間が経過するにつれて、
ハードウエアのみでは不十分となった。新しいマシーン
を顧客に販売するためには、アセンブラ及びローダが要
求されるようになった。すぐに、オペレーティング・シ
ステムを供給することが必要となり、次にはコンパイラ
が要求されるようになった。さらに、ユーザは、前のシ
ステムで利用できたソフトウエアが新しいシステムでも
利用できることを期待するようになった。BACKGROUND OF THE INVENTION The cost of introducing a new computer architecture has risen significantly over the last three decades. Early computer systems (e.g., IBM7094) were designed, manufactured, and sold with little or no software assistance. But over time,
Hardware alone is no longer enough. Assemblers and loaders are now required to sell new machines to customers. Soon it was necessary to supply the operating system and then the compiler was required. In addition, users have come to expect that the software that was available on the previous system will also be available on the new system.
【0003】今日では、どんなシステムも、進んだオペ
レーティング・システム、例えば、ベル研究所によって
開発されたUNIXオペレーティング・システム、幾つ
かの最も一般的なソフトウエア・プログラミング言語、
例えば、CあるいはPascal用のコンパイラ、標準
ユティリティ、ネットワーキング・サポート、及びグラ
フィック・ユーザ・インターフェースが同時に利用でき
ない限り真剣に販売を行なうことは考えられない。顧客
は、単により高速なCPUあるいは改良されたハードウ
エア・アーキテクチュアではなく、一つの完全なワーキ
ング・システムを望むようになっている。Today, any system is an advanced operating system, such as the UNIX operating system developed by Bell Laboratories, some of the most popular software programming languages,
For example, it would be unthinkable to sell seriously unless a compiler for C or Pascal, standard utilities, networking support, and a graphic user interface were available at the same time. Customers are increasingly looking for a complete working system, rather than a faster CPU or improved hardware architecture.
【0004】完全なシステムを販売することの必要性の
一つの結果として、様々な部分間に依存性のあるさまざ
まなハードウエア及びソフトウエア・プロジェクトが同
時に開発されるようになった。一例として、UNIXオ
ペレーティング・システム上のX11ウインドウ・シス
テム用のCプログラミング言語にて書かれたアプリケー
ション・プログラムが、そのCコンパイラ、X11ウイ
ンドウ・システム、及びUNIXオペレーティング・シ
ステムがまだ開発中であるのに、平行して開発される。
ウインドウ・システムは、ディスプレイ・スクリーンを
複数の領域(ウインドウ)に分割することを可能にす
る。プログラムは、ウインドウを使用して、ユーザと対
話し、結果を表示し、入力を要求することができる。ユ
ーザは、ウインドウのサイズ及びスクリーン上の位置を
制御する。ウインドウ・システムの技術は、現在開発中
であり、したがって新しい、競合するようなウンイドウ
・システムが出現することがある。As a result of the need to sell complete systems, various hardware and software projects have been developed simultaneously with dependencies between the various parts. As an example, an application program written in the C programming language for the X11 window system on the UNIX operating system is being developed while its C compiler, X11 window system, and UNIX operating system are still under development. , Developed in parallel.
The window system allows the display screen to be divided into multiple areas (windows). Programs can use windows to interact with users, display results, and request input. The user controls the size of the window and its position on the screen. Window system technology is currently under development, and thus new, competing Unido systems may emerge.
【0005】X11ウインドウ・システムは、MIT大
学において、アテナ(Athena)プロジェクトの指
導のもとで開発された、一連のウインドウ・システムの
うち最も新しいシステムである。Xウインドウ・システ
ムは、スタンフォード大学からのWウインドウに起源を
持つが、何度も設計が改められ、最も最近では、X10
からX11へと変えられている。X11ウインドウ・シ
ステムは、ウインドウ・サーバである。ウインドウ・サ
ーバは、一つの個別のプロセスとして動作し、ディスプ
レイ・スクリーンの割り当て及びこれへのアクセスを制
御する。クライアントと呼ばれるアプリケーション・プ
ログラムは、プロセス間通信を使用して、恐らくは、網
を通じてウインドウ・サーバと通信するプロセスとして
動作する。結果としてのアーキテクチュアが図1に示さ
れる。The X11 window system is the newest of the series of window systems developed at MIT University under the guidance of the Athena project. The X Window System originates from the W Window from Stanford University, but has been redesigned many times, most recently the X10.
Has been changed from X11 to X11. The X11 window system is a window server. The window server runs as a separate process and controls the allocation and access to display screens. The application program, called the client, uses interprocess communication, possibly acting as a process to communicate with the window server through the network. The resulting architecture is shown in FIG.
【0006】X11ウインドウ・サーバとX11クライ
アントとの間の通信は、X11プロトコルによって定義
される。X11プロトコルは、クライアントがX11サ
ーバに対して行なう要求の形式及び内容、並びにX11
サーバがクライアントにリターンする応答、エラー及び
事象を定義する。プロトコルは、要求、応答、エラー及
び事象内の値のタイプ及びシーケンスを指定する。Communication between the X11 window server and the X11 client is defined by the X11 protocol. The X11 protocol defines the format and content of a request made by a client to an X11 server, and the X11 protocol.
It defines the responses, errors and events that the server returns to the client. The protocol specifies the type and sequence of values in requests, responses, errors and events.
【0007】X11プロトコルはバイト・レベルのプロ
トコルである。有効なプログラミングは、より一般的に
は、シーケンスのより低いレベルのX11要求を発行す
る、より高いレベルの機能のライブラリあるいはツール
キットを使用することによって達成される。例えば、ア
プリケーション・プログラムは、そのユーザとテキス
ト、ボタン、スクロール・バー、及びメニューの形で対
話する。これらのより高いレベルのオブジェクトは、別
個にプログラムされたツールキットによってサポートさ
れる。The X11 protocol is a byte level protocol. Effective programming is more commonly accomplished by using a higher level functional library or toolkit that issues lower level X11 requests for sequences. For example, an application program interacts with its user in the form of text, buttons, scroll bars, and menus. These higher level objects are supported by separately programmed toolkits.
【0008】場合によっては、一つのツールキットがラ
イブラリーを使用して実際のX11要求を発行するもう
一つのツールキットの上に構築されるような複数の層の
ライブラリ及びツールキットが含まれる。この結果とし
て、アプリケーション・プログラムは、サーバに送られ
るX11要求からかなりの距離を持ち、このアプリケー
ション・プログラムをサポートするツールキット内に微
妙なエラーが存在した場合、これらの検出が非常に困難
になる。In some cases, there are multiple layers of libraries and toolkits such that one toolkit is built on top of another toolkit that uses the library to issue the actual X11 request. As a result of this, the application program has a significant distance from the X11 requests sent to the server, and if subtle errors were present in the toolkit supporting this application program, they would be very difficult to detect. .
【0009】ツールキット内の実際のエラーの検出より
もさらに困難なことは、より高いレベルのインターフェ
ースからX11プロトコル・インターフェースへの最適
とは言えない翻訳である。例えば、Gnu Emacs
エディタの初期バージョン(ストールマン、R.M.
(Stallman, R.M.)『GNU Emacsマニュア
ル』、バージョン18、フリーソフトウェア財団、ボス
トン、MA、1988年において説明)は、X10がデ
バッギングのために低速にされるまでは良く機能するよ
うに見えた。この場合は、Emacsエディターがその
ディスプレイを必要とされるよりも2、3回多く再ドロ
ーイング(redrawing )していたことが明らかとなっ
た。より高いX10サーバの通常の速度では、再ディス
プレイは存在するが、人間の目には見ることができな
い。Even more difficult than detecting the actual error in the toolkit is a less than optimal translation of the higher level interface to the X11 protocol interface. For example, Gnu Emacs
Early versions of the editor (Stallman, RM;
(Stallman, RM) "GNU Emacs Manual," version 18, Free Software Foundation, Boston, MA, 1988), appears to work well until the X10 is slowed down for debugging. It was In this case, it became clear that the Emacs editor was redrawing the display a few more times than needed. At the higher speeds of higher X10 servers, the redisplay is present but invisible to the human eye.
【0010】上に記述したウインドウ・システムについ
ては、ロバート,W.シェイフラー(Robert W.Scheifl
er)及びゲティ−ズ(Jim Gettys)による『Xウインド
ウシステム』、トランザクション オン グラフィクス
(Transactions on Graphics)、Vol.63、198
6年;ロバート W.シェイフラーによる『Xウインド
ウ・システム・プロトコル リリース2:Xバージョン
11』、コンピュータ科学研究室、マサチューセッツ工
科大学、1988年;及びフランク G.ハラスズ(Fr
ank G. Halasz )、ロバート S.ペテンギル(Robert
S. Pettengill)、ジェームス L.ピーターソン(Ja
mes L.Peterson)、トム J.スミス(Tom J. Smit
h)、及びズビウィス(ZviWeiss)による『ウインドウ
サーバ独立インターフェース』、テクニカル リポー
トSTP−348−87、ソフトウェア テクノロジー
プログラム、MCC、1987年、10月号において
詳細に説明されているが、これら全ての参考文献が、こ
こでは参考のために背景情報として組み込まれている。
開発中のシステムの性能が悪い場合、性能を向上させ
るための努力をどこに集中すべきかを知る必要がある。
アプリケーション・プログラムをそれが実行される環境
と平行して開発する上の例においては、アプリケーショ
ン・プログラムの計算をウインドウ・システムの計算か
ら分離する必要がある。For the window system described above, see Robert, W .; Schaefler (Robert W.Scheifl
er) and Jim Gettys, "X Window System", Transactions on Graphics, Vol. 63, 198
6 years; Robert W. Scheffler, "X Window System Protocol Release 2: X Version 11," Computer Science Laboratory, Massachusetts Institute of Technology, 1988; and Frank G.L. Harasuzu (Fr
ank G. Halasz), Robert S. Peten Gill (Robert
S. Pettengill), James L. Peterson (Ja
mes L. Peterson), Tom J. Smith (Tom J. Smit
h) and "Window by ZviWeiss"
Server Independent Interface ”, Technical Report STP-348-87, Software Technology Program, MCC, October 1987 issue, all of which are hereby incorporated by reference for background information. It has been incorporated.
If the performance of the system under development is poor, you need to know where to focus your efforts to improve performance.
In the above example of developing an application program in parallel with the environment in which it will be executed, it is necessary to separate the computation of the application program from the computation of the window system.
【0011】[0011]
【課題を解決するための手段および作用】本発明は、上
記の問題を任意のユーザセッションに対してX11クラ
イアントがランするのと同一速度でランするX11プロ
グラムを自動的に生成するためのツールであるXpro
gの開発によって解決する。これは、クライアント計算
の影響をX11サーバ計算から分離することを可能にす
る。これら計算を二つの部分に分離することによって、
全体としてのシステムの任意の部分内の性能の問題を検
出することが簡単になる。クライアント部分を、X11
クライアントによって生成されるであろうデータ流を内
部計算することなく模倣する自動的に生成されたX11
プログラムにて置換することにより、クライアントはシ
ステム内で最大限に速くランでき、これによって、全体
としてのシステムのスループットの計算におけるクライ
アント処理時間の未知の変数を排除することができる。SUMMARY OF THE INVENTION The present invention is a tool for automatically generating an X11 program that runs the above problems at the same speed that an X11 client will run for any user session. A certain Xpro
Solved by developing g. This allows the impact of client computation to be separated from the X11 server computation. By separating these calculations into two parts,
It makes it easy to detect performance problems within any part of the system as a whole. The client part is X11
An automatically generated X11 that mimics the data stream that would be generated by the client without internal computation
By substituting programmatically, the client can run in the system as fast as possible, which eliminates the unknown variable of client processing time in the calculation of overall system throughput.
【0012】Xprogによって達成される解決は、ジ
ェームス L.ピーターソン(James L.Peterson)によ
って『Xscope:X11用のデバッギング及び性能
ツール』、情報処理89、エルスビア科学出版社、19
89年、49−54ページにおいて説明されるXsco
peを使用するアプローチの拡張である。Xprogは
X11クライアントとX11サーバとの間に位置する。
クライアントは、XprogにXprogがあたかもX
11サーバであるかのように接続する。Xprogは、
一方、実際のX11サーバに接続する。クライアントか
らXprogへの全てのバイトは、ただちに、実際のX
11サーバにパスされ、一方、X11サーバからの全て
のバイトは、実際のX11クライアントにパスされる。
こうして、通信コストの僅かな増加を除いては、Xpr
ogはX11クライアント及びX11サーバに対して完
全に見えない。The solution achieved by Xprog is described by James L. et al. By James L. Peterson, "Xscope: Debugging and Performance Tools for X11," Information Processing 89, Elsvia Science Press, 19
Xsco, 1989, pp. 49-54
It is an extension of the approach using pe. Xprog is located between the X11 client and the X11 server.
Client has Xprog in Xprog as if Xprog
11 Connect as if it were a server. Xprog is
Meanwhile, it connects to the actual X11 server. All bytes from the client to the Xprog immediately return the actual X.
11 server is passed while all bytes from the X11 server are passed to the actual X11 client.
Thus, except for a slight increase in communication costs, Xpr
og is completely invisible to the X11 client and X11 server.
【0013】すなわち、クライアントとサーバとの間の
通信は、Xprogがあたかも全く存在しないのと同様
である。That is, the communication between the client and the server is as if Xprog does not exist at all.
【0014】XprogはX11クライアントとX11
サーバとの間の通信に影響を与えないが、この通信を監
視することができる。X11通信の分析から、Xpro
gは、その出力として新たなプログラムを生成する。X
progの出力は、Cプログラムであり、これは、コン
パイル及び実行されたとき、X11サーバと、元のクラ
イアントがその監視されたセッションにおいて行なった
のと全く同一の相互作用を生成する。したがって、こう
して新たに生成されたプログラムは、元のクライアント
と全く同一のディスプレイを再生する。但し、この新た
なプログラムはその他の計算を行なわないため、X11
サーバに可能な限り速い速度でコマンドを発行する。ア
プリケーション・プログラムの計算に起因する遅延は存
在せず、従って、X11サーバが実際にはどの程度速い
かを正確に決定することが可能となる。Xprog is an X11 client and an X11
It does not affect the communication with the server, but this communication can be monitored. From the analysis of X11 communication, Xpro
g produces a new program as its output. X
The output of prog is a C program, which when compiled and executed produces the exact same interaction with the X11 server as the original client had in its monitored session. Therefore, the program thus newly generated reproduces the same display as the original client. However, since this new program does not perform other calculations, X11
Issue commands to the server as fast as possible. There is no delay due to the calculation of the application program, and thus it is possible to accurately determine how fast the X11 server is actually.
【0015】例えば、ヨーロッパの政治勢力地図を概説
するセットのライン・セグメントを読み、ウインドウを
生成し、ライン・セグメントをウインドウに対してスケ
ーリングし、重複ライン・セグメントあるいはスクリー
ンの分解能に対しては小さ過ぎるライン・セグメントを
チェックし、ウインドウの中心に結果を描くX11アプ
リケーション・プログラムを想定する。このライン・ド
ローイング・プログラムに対するXprogのこうして
生成されたプログラム出力は、主に、絶対画素座標によ
って与えられるライン・セグメントのリストを表示する
ためのXlib呼びの長いリストとなる。これは、元の
アプリケーション・プログラムと全く同一のセットのラ
イン・セグメントを表示するが、全てのライン・セグメ
ントは、このプログラム内にXlibライン・ドローイ
ング手順に対するパラメータとして格納される。従っ
て、ポイントを読んだり、スケーリングしたり、あるい
は翻訳するための時間は必要とされない。Xprog出
力は、X11サーバを出来るだけ速く同一のヨーロッパ
のマップを表示するように駆動する。For example, reading a set of line segments outlining a political map of Europe, creating a window, scaling the line segments with respect to the window, small for overlapping line segments or screen resolution. Assume an X11 application program that checks for line segments that pass and draws the result in the center of the window. The Xprog's thus generated program output for this line drawing program is primarily a long list of Xlib calls for displaying a list of line segments given by absolute pixel coordinates. It displays the exact same set of line segments as the original application program, but all line segments are stored as parameters to the Xlib line drawing procedure within this program. Therefore, no time is required to read, scale, or translate points. The Xprog output drives the X11 server to display the same European map as quickly as possible.
【0016】Xprogの出力は元のプログラムと同一
のディスプレイを生成するプログラムであるが、これは
常にこれと全く同一のディスプレイを生成することに注
意するべきである。これは入力を持たないため、他のマ
ップを表示することはできない。また、ウインドウのサ
イズが変化したとき、そのデータをスケーリングあるい
は翻訳することもない。Xprog出力は、単に元のプ
ログラムが生成したのと全く同一のディスプレイを再生
する。これは制約要因のように見えるが、実はこれは予
測可能、反復可能な入力が要求されるサーバのタイミン
グの時のような多くのケースにおいて要求されるのと全
く同一の挙動である。It should be noted that the output of Xprog is a program that produces the same display as the original program, but it always produces the exact same display. It has no input and cannot display other maps. It also does not scale or translate the data when the window size changes. The Xprog output simply reproduces the exact same display as the original program produced. This appears to be a limiting factor, but in fact it is exactly the same behavior that is required in many cases, such as when the server timing requires predictable, repeatable input.
【0017】この型式のプログラムは、実演の目的でも
有効である。自由に配布され、あるいは安全に展示さ
れ、潜在顧客に開放されるようなディスプレイを生成す
るのにしばしば有効である。Xprogの出力は、前の
ディスプレイを完全に複製するが、これを生成したアル
ゴリズムあるいはデータに関する情報は含まず、また、
重要なときにあるいは経験の少ないユーザの動作の結果
として失敗を示すようなテストされてないコードを含む
ことはない。Xprogの出力は、所有権上の危険なし
に、ソースあるいは編集された形式にて自由に配布する
ことができる。This type of program is also useful for demonstration purposes. It is often useful to create displays that are freely distributed or safely displayed and open to potential customers. The output of Xprog is an exact replica of the previous display, but contains no information about the algorithm or data that produced it, and
It does not contain untested code that indicates failure at critical times or as a result of inexperienced user behavior. The output of Xprog can be freely distributed in source or edited form without any risk of ownership.
【0018】従って、本発明の一つの目的は、コンピュ
ータ・システムに対する改良された開発環境を提供する
ことにある。Accordingly, one object of the present invention is to provide an improved development environment for computer systems.
【0019】本発明のさらにもう一つの目的は、アプリ
ケーション・プログラム及びアプリケーション・プログ
ラムがその上で実行されるオペレーティング・システム
を平行して開発することを支援する改良された開発環境
を提供することにある。Yet another object of the present invention is to provide an improved development environment that assists in parallel development of application programs and operating systems upon which application programs execute. is there.
【0020】本発明のさらにもう一つの目的は、コンピ
ュータ環境内でシステムの性能を分析するための改良さ
れた方法を提供することにある。Yet another object of the present invention is to provide an improved method for analyzing system performance within a computing environment.
【0021】本発明のさらにもう一つの目的は、ウイン
ドウ化されたコンピュータ環境内でシステムの性能を分
析するための改良された方法を提供することにある。Yet another object of the present invention is to provide an improved method for analyzing system performance within a windowed computing environment.
【0022】本発明のさらにもう一つの目的は、通信プ
ロトコルを監視するツールを提供することにある。Yet another object of the present invention is to provide a tool for monitoring communication protocols.
【0023】本発明のさらにもう一つの目的は、コンピ
ュータ・プログラムを生成するツールを提供することに
ある。Yet another object of the present invention is to provide a tool for generating a computer program.
【0024】本発明のさらにもう一つの目的は、動作の
応答を通信対話の片方に対して模倣することにある。Yet another object of the invention is to mimic the response of an action to one side of a communication dialogue.
【0025】本発明のさらにもう一つの目的は、デモン
ストレーションの目的でコンピュータ・ソフトウエアを
配布するための改良された方法を提供することにある。Yet another object of the present invention is to provide an improved method for distributing computer software for demonstration purposes.
【0026】本発明の前述及びその他の目的、特徴及び
長所は、以下の本発明の実施例を添付図面を参照しなが
ら読むことによって一層明白になる。The above and other objects, features and advantages of the present invention will become more apparent by reading the following embodiments of the present invention with reference to the accompanying drawings.
【0027】[0027]
【実施例】Xprogの実施は前述したXscopeに
基づく。このために、Xscopeについてこの動作が
理解できるような方法で説明する。EXAMPLES The implementation of Xprog is based on Xscope described above. For this reason, Xscope will be described in such a way that its operation can be understood.
【0028】図2を参照すると、Xscope12はX
11クライアント10とX11サーバ14の間の分析さ
れるべき対話を可能とするためのツールである。Xsc
opeはクライアント10とサーバ14との間に位置
し、これらの間の全ての通信を聞く。Xscopeはこ
の通信のトレースを印刷し、プログラマーが彼らのX1
1の使用の正しさ及び効率を見ることができるように設
計された。これは、特にツールキット、例えば、アンド
ルー・ツールキット(AndrewToolkit )を書くプログラ
マーにとっては価値あるものであるが、このアンドルー
・ツールキットについては、ジェームス H.モリス
(James H.Morris)、マハデブ サティアナラヤナン
(Mahadev Satyanayanan)、マイケル H.コナー(Mi
chael H.Conner)、ジョン H.ハワード(Jhon H.How
ard )、デビットS.H.ロゼンテール(David S.H.Ro
senthel )、及びF.ドネルソン スミス(F.Donelson
Smith)による『アンドルー:分散パーソナルコンピュ
ーティング環境』、ACM通信、Vol.29、No.
3、1986年3月、184−201ページにおいて説
明されている。Referring to FIG. 2, Xscope12 is X
11 is a tool for enabling an interaction to be analyzed between the client 10 and the X11 server 14. Xsc
The ope is located between the client 10 and the server 14 and listens to all communications between them. Xscope prints a trace of this communication and programmers can use their X1
It was designed so that the correctness and efficiency of using 1 could be seen. This is of particular value to programmers writing toolkits, such as AndrewToolkit, which is described by James H. et al. James H. Morris, Mahadev Satyanayanan, Michael H. Morris. Connor (Mi
chael H. Conner), John H. Howard (Jhon H. How
ard), David S. H. Rosentail (David SHRo
senthel), and F. Donelson Smith (F.Donelson
Smith) "Andrew: Distributed Personal Computing Environment", ACM Communications, Vol. 29, No.
3, March 1986, pp. 184-201.
【0029】図3および4は、X11クライアントとX
11サーバとの間のトレースの一部を示す。時間0.0
0において、クライアントは12バイトのデータ20を
サーバに送る。0.04秒の後に、サーバは8バイトの
データ22にて応答し、その0.06秒後(時間0.1
0において)さらに136個のバイト24にて応答す
る。バイトはクライアントとサーバとの間を流れ続け
る。情報がバッファされたものがそのサイズ、それが送
られた時間、及びそれを送ったのがクライアントである
かサーバであるかの区別とともに16進にて印刷され
る。3 and 4 show an X11 client and an X.
11 shows a part of the trace with the 11 server. Time 0.0
At 0, the client sends 12 bytes of data 20 to the server. After 0.04 seconds, the server responds with 8 bytes of data 22, 0.06 seconds later (time 0.1
It responds with an additional 136 bytes 24 (at 0). Bytes continue to flow between the client and server. The buffered information is printed in hexadecimal with its size, the time it was sent, and whether it was sent by the client or the server.
【0030】Xscopeはさらにこれらバイトを翻訳
し、これらがX11プロトコルのもとでは何を意味する
かを示す。図5および6は、Xscopeによって翻訳
されるX11クライアントとX11サーバとの間のトレ
ースを示す。Xscopeにとっては、クライアントか
らX11サーバに送られる最初の12バイト30はX1
1に対するセットアップ・メッセージ32のように見え
る。X11サーバからクライアントに送られる8バイト
及び136バイトのメッセージは、結合されて、セット
アップ応答34を形成し、特定のサーバ構成に関する情
報を与える。このセットアップ交換に続いて、クライア
ントは、グラフィック・コンテキスト36を生成し、資
源マネージャにゲットプロパティ(GetProperty )要求
38を送る。サーバは、例えば、資源マネージャが存在
しないと応答する(40)。Xscope also translates these bytes to indicate what they mean under the X11 protocol. 5 and 6 show traces between an X11 client and an X11 server translated by Xscope. For Xscope, the first 12 bytes 30 sent from the client to the X11 server are X1
Looks like a setup message 32 for 1. The 8-byte and 136-byte messages sent from the X11 server to the client are combined to form the setup response 34, which gives information about the particular server configuration. Following this setup exchange, the client creates a graphic context 36 and sends a GetProperty request 38 to the resource manager. The server responds, for example, that there is no resource manager (40).
【0031】X11及びX11によって使用される基礎
となるTCP/IPソケット接続はネットワーク接続で
あるため、各々のプロセスは、ネットワークを通じて通
信される別個のマシーン上、あるいは同一のマシーン上
で実行される(TCP/IPは周知の産業標準パケット
交換通信方法である)。クライアントがマシーンA上で
ランされ、X11サーバがマシーンB上でランされるも
のと想定する。Xscopeは、マシーンA上でも、マ
シーンB上でも、あるいは別のマシーンC上でも実行で
きる。Xscopeが開始されると、コマンド・ライン
・パラメータは、マシーンの名前をX11サーバ(及び
場合によってはディスプレイ)とともに示す。クライア
ント・プログラムが開始されると、Xscopeマシー
ンの名前が与えられる。Since the underlying TCP / IP socket connections used by X11 and X11 are network connections, each process runs either on a separate machine that communicates over the network or on the same machine ( TCP / IP is a well-known industry standard packet switched communication method). Suppose the client runs on machine A and the X11 server runs on machine B. Xscope can run on machine A, machine B, or another machine C. When Xscope is started, command line parameters indicate the name of the machine along with the X11 server (and possibly the display). When the client program is started, it is given the name of the Xscope machine.
【0032】クライアント・プログラムはXscope
に接続し、Xscopeは直ちにXscopeサーバに
接続する。X11クライアントはXscopeがX11
サーバであると思い、X11サーバはXscopeがX
11クライアントであると思う。実際のX11クライア
ントからXscopeへの全てのバイトは、実際のX1
1サーバに送られ、実際のX11サーバからXscop
eへの全ての応答は実際のX11クライアントに送られ
る。Xscopeは、単に中間に位置し、実際のサーバ
及びクライアントがしていることのトレースを与えるだ
けである。The client program is Xscope
, And Xscope immediately connects to the Xscope server. X11 client is Xscope X11
I think that it is a server, and Xscope is X
I think I have 11 clients. All bytes from the actual X11 client to Xscope are the actual X1
Sent to 1 server, Xscop from the actual X11 server
All responses to e are sent to the actual X11 client. Xscope is just in the middle and gives a trace of what the real server and client are doing.
【0033】図7に示されるように、Xscope64
の主ループ42は、クライアント50、サーバ52、あ
るいは新たなクライアント接続からの入力を待つ。接続
44が新たなクライアントから行なわれたときは、Xs
copeはそのクライアントに対してX11サーバへの
新たな接続を生成し、そのテーブル46を更新する。ク
ライアントから入力54が到着すると、これは直ちに5
8においてこのクライアントのためにX11サーバ52
内に書き込まれ、入力56がX11サーバから到着する
と、これは直ちに60においてクライアント50に書き
込まれる。このように、Xscopeは、サーバ及びク
ライアントの両者に対して透明であり、この性能の影響
は小さい。両方のケースにおいて、データが一旦書き込
まれると、62における更なる処理及び印刷のための手
順にパスされる。As shown in FIG. 7, Xscope64
Main loop 42 waits for input from client 50, server 52, or a new client connection. Xs when connection 44 is made from a new client
The copy creates a new connection to the X11 server for that client and updates its table 46. As soon as input 54 arrives from the client, this is 5
X11 server 52 for this client in 8
As soon as the input 56 arrives from the X11 server, it is written to the client 50 at 60. Thus, Xscope is transparent to both the server and the client, and its performance impact is small. In both cases, once the data has been written, it passes the procedure for further processing and printing at 62.
【0034】この処理コードは、入力データを個々の要
求、応答、エラー、あるいは事象に対して1パケットの
意味のあるパケットに分解し、このパケットを翻訳及び
印刷するためのもう一つのルーチンを呼ぶ。印刷手順で
は、一つの完全なパケットのみを処理できるために、完
全なパケットが与えられるのに十分なバイトが到着する
まで不完全なパケットをバッファすることが必要とな
る。This processing code breaks the input data into one meaningful packet for each request, response, error, or event and calls another routine to translate and print this packet. . Since the printing procedure can only handle one complete packet, it requires buffering incomplete packets until enough bytes arrive to give a complete packet.
【0035】X11プロトコルは、Xscopeがパケ
ット長を決定するため上で、X10プロトコルよりもは
るかに優れている。個々のX11要求は、要求の長さを
語にて(1語は4バイト)与える欄(バイト2及び3)
を含む。但し、バイト0及び1は、有効なデータを含む
ことがあるため、最初の4バイトは、要求の長さを決定
する前に取って保存しておくことが必要である。要求の
長さが要求の最初であるときは、要求の長さはバイトの
保存を要求することなく決定することができる。The X11 protocol is far superior to the X10 protocol in that Xscope determines the packet length. Each X11 request has a field (bytes 2 and 3) giving the length of the request in words (1 word is 4 bytes).
including. However, bytes 0 and 1 may contain valid data, so the first 4 bytes need to be set aside before determining the length of the request. If the request length is the beginning of the request, the request length can be determined without requiring storage of bytes.
【0036】サーバからのパケットはより複雑である。
パケットが前の要求に対する応答であるときは、バイト
4−7は応答長を含む。一方、エラー及び事象は、明確
な長さを持たず、常に32バイト長である。このため、
要求、応答、事象及びエラーは、これらは追跡の目的で
は全て実質的に同一であっても別個に処理されなければ
ならない。Packets from the server are more complex.
If the packet is a response to a previous request, bytes 4-7 contain the response length. On the other hand, errors and events have no explicit length and are always 32 bytes long. For this reason,
Requests, responses, events and errors must be handled separately even if they are all substantially the same for tracking purposes.
【0037】もう一つの困難は、個々のパケットの具体
的なフォーマットの識別である。要求は、これらの最初
のバイト内の要求オプコード(opcode)によって識別さ
れる。同様に、エラー及び事象は、それらの最初あるい
は二番目のバイト内のコードによって識別される。他
方、応答は、何らかの方法を用いて直接に識別されるこ
とはない。図4の要求36と要求38の間に示されるよ
うに、全ての要求が応答を生成するわけではないことに
注意するべきである。120の様々な異なるX11要求
のうち、40個のみが応答を生成する。クライアントと
サーバとの間の通信は非同期であるため、クライアント
は応答を待つことなく数個の応答を生成する要求を行な
うことができる。Another difficulty is the identification of the specific format of individual packets. The request is identified by the request opcode in these first bytes. Similarly, errors and events are identified by the code in their first or second byte. On the other hand, the response is not directly identified using any method. It should be noted that not all requests generate a response, as shown between request 36 and request 38 in FIG. Of the 120 different X11 requests, only 40 generate responses. The communication between the client and the server is asynchronous so that the client can make requests to generate several responses without waiting for a response.
【0038】サーバ応答パケット(あるいはサーバ・エ
ラー・パケットの原因)を識別するためには、クライア
ントは個々の要求の通し番号を記録しなければならない
(要求1は、初期セットアップ通信の後の最初の要求で
ある)。個々の応答(あるいはエラー)は、それを起こ
した要求の通し番号を含む。応答のタイプを識別するた
めには、クライアント(及びXscope)は、未決定
の要求の通し番号のテーブルを保ち、通し番号を合わせ
ることによって、要求のタイプ、及びここから、応答の
タイプを識別する。To identify the server response packet (or the cause of the server error packet), the client must record the serial number of each request (request 1 is the first request after the initial setup communication). Is). Each response (or error) contains the serial number of the request that caused it. To identify the type of response, the client (and Xscope) keeps a table of pending request serial numbers and matches the serial numbers to identify the request type and from there the response type.
【0039】要求、応答、事象、あるいはエラー・コー
ドが一旦識別されると、パケットの内容をパケット及び
そのコードのタイプに従って印刷できる準備が整う。こ
こで、数個の可能性が存在する。乱暴なアプローチとし
ては、手作業によってパケットの個々のタイプに対して
パケットの内容を印刷する手順を書く方法がある。但
し、各々が平均6つの欄を持つ120の異なる要求、4
0の応答、34の事象、及び17のエラーが存在するた
め、これはかなりな量の単調なコードとなる。Once the request, response, event, or error code has been identified, the contents of the packet are ready to be printed according to the type of packet and its code. Here, there are several possibilities. A violent approach is to write a procedure to manually print the packet contents for each type of packet. However, 120 different requests, each with an average of 6 columns, 4
With 0 responses, 34 events, and 17 errors, this is a fair amount of monotonic code.
【0040】X10に対しては、この乱暴な符号化は、
テーブル誘導コードを使用することによって回避され
る。個々の要求、応答、事象、及びエラーは、テーブル
内の項目によって記述される。このテーブルの項目は、
主に欄のリストから成る。各々の欄は、その開始バイ
ト、長さ、タイプ及び名前を示す。一つのルーチンは、
パケット及びその記述をピックアップし、次に、そのパ
ケット内の個々の欄を印刷するルーチンである。X11
に対して同様のアプローチをした場合には、幾つかの問
題が発生する。For X10, this rough encoding is
Avoided by using table derivation code. Each request, response, event, and error is described by an entry in the table. The items in this table are
It mainly consists of a list of columns. Each column indicates its starting byte, length, type and name. One routine is
A routine that picks up a packet and its description and then prints the individual columns within the packet. X11
If you take a similar approach to, some problems occur.
【0041】最初の問題は、タイプに関することであ
る。X10の場合は、4つあるいは5つの異なるタイプ
のオブジェクト、つまり、整数、識別子、ストリング等
が存在するのみである。しかし、X11の場合は、11
2の異なるタイプのオブジェクトが存在する。主な原因
は、X11プロトコルは、X10の場合よりもタイプを
かなり細かく定義するためである。X10において、単
にショートとして扱われるタイプも、X11において
は、(全ての正当値に名前が与えられた)列挙されたタ
イプ、あるいは(各々の正当ビットに名前が与えられ
た)ビットマスク・セット・タイプであり得る。The first issue is of type. In the case of X10, there are only 4 or 5 different types of objects, namely integers, identifiers, strings, etc. However, in the case of X11, 11
There are two different types of objects. The main reason is that the X11 protocol defines types much finer than the X10 case. In X10, types that are simply treated as shorts are also listed in X11 (all legal values are named) or enumerated types (or each legal bit is named). Can be type.
【0042】但し、X11に対する全てのタイプが明示
的に定義されているわけではない。幾つかのタイプは、
それらが使用される記録の中において含蓄的に定義され
る。これらタイプは匿名タイプである。これは、同一タ
イプが、複数の異なるパケット内で使用される場合も同
様である。例えば、同一のCOLORMASK 項目がStoreNamed
Color 要求及びStoreColors 要求内に使用されるCOLORI
TEM タイプのサブ要素としての両者に定義されることが
ある。このタイプは名前によって示すことができないた
め、この定義が両方の使用に対して反復される。However, not all types for X11 are explicitly defined. Some types are
They are implicitly defined in the records in which they are used. These types are anonymous types. This is also the case when the same type is used in multiple different packets. For example, if the same COLORMASK item is StoreNamed
COLORI used in Color and StoreColors requests
May be defined as both as a TEM type sub-element. This definition cannot be represented by name, so this definition is repeated for both uses.
【0043】実際、匿名タイプの使用は、同一タイプを
複数の箇所で再使用する可能性を隠してしまうように思
われる。例えば、GetKeyboardControl要求に対する応答
は、オフに対して0、オンに対して1と匿名にて定義さ
れた欄を持つ。ChangeKeyboardControl は同一の定義を
持つもう一つの匿名タイプ、及びオフに対して0、オン
に対して1、省略時に対して2の定義を持つもう一つの
異なる匿名タイプを持つ。これに加えて、他のタイプ
(これらの殆どは名前を持たない)は、同一の0/1値
を偽/真、いいえ/はい、なし/全て、オフ/オン、設
置されている/設置されていない、不可/可、リセット
/起動、挿入/削除、トップ/ボタム、及び同期/非同
期として定義する。In fact, the use of anonymous types seems to hide the possibility of reusing the same type in multiple places. For example, the response to the GetKeyboardControl request has columns defined as 0 for OFF and 1 for ON anonymously. ChangeKeyboardControl has another anonymous type with the same definition and another different anonymous type with the definitions 0 for off, 1 for on and 2 for default. In addition to this, other types (most of which have no name) have the same 0/1 value as false / true, no / yes, none / all, off / on, installed / installed Not defined, not allowed / not allowed, reset / start, insert / delete, top / bottom, and sync / async.
【0044】さらに幾つかのタイプが資源識別の特定の
値の異なる翻訳によって生成される。例えば、ウインド
ウ識別子は、そのゼロ値を(SetInputFocus 要求に対し
ては)“なし”として翻訳され、(SendEvent 要求に対
しては)“PointerWindow ”として翻訳される。7つの
基本資源識別子が幾つかの値の異なる特定の翻訳を持
つ。Further several types are created by different translations of specific values of resource identification. For example, a window identifier is translated with its zero value as "none" (for SetInputFocus request) and "PointerWindow" (for SendEvent request). The seven basic resource identifiers have specific translations with several different values.
【0045】一方、名前、“MSBfirst ”及び“LS
Bfirst ”は二つの異なる背景内において、0x42及
び0x6C(クライアントからサーバへのセットアップ
メッセージ)あるいは1及び0(サーバからクライアン
トへのセットアップ応答)として定義される。On the other hand, the names "MSBfirst" and "LS"
Bfirst "is defined as 0x42 and 0x6C (client to server setup message) or 1 and 0 (server to client setup response) in two different contexts.
【0046】但し、タイプのリストが与えられると、生
成された大きなセットの手順はタイプを与えられるとそ
のタイプを印刷する。殆どのタイプでは何を印刷すべき
か明白であるが、幾つかの問題が存在する。例えば、I
NT8は符号を持つ8−ビット整数として定義され、C
ARD8は符号を持たない整数である。同様なタイプに
単に8−ビット値として定義されるBYTEがある。B
YTEとCARD8あるいはINT8との間の重要な差
異は、このプロトコル定義によって与えられることは決
してない。However, given a list of types, the generated large set of procedures will print the type given the type. It is obvious what to print for most types, but there are some problems. For example, I
NT8 is defined as a signed 8-bit integer, C
ARD8 is an unsigned integer. Similar types have BYTE defined simply as an 8-bit value. B
No significant difference between YTE and CARD8 or INT8 is ever given by this protocol definition.
【0047】X11タイプのリスト、これらを印刷する
手順、及び様々なパケットの定義が与えられると、テー
ブル誘導印刷機能が書き込まれる。X10プログラムに
基づくと、この名前、開始バイト、長さ及びパケット内
の個々の欄のタイプが知られることが期待される。但
し、すぐに大きな問題に遭遇する。Given the list of X11 types, the procedure for printing these, and the definitions of the various packets, the table-guided printing function is written. Based on the X10 program, it is expected that this name, starting byte, length and type of individual fields within the packet will be known. However, I soon encounter a big problem.
【0048】X11プロトコルのテーブル誘導復号の主
要な困難は、要求及び応答内に可変長さ項目を含めるこ
とである。可変長さ項目の困難は、単に長さが前もって
知ることができず、復号テーブル内に入れることができ
ないと言うことである。The main difficulty of table-guided decoding of the X11 protocol is the inclusion of variable length items in requests and responses. The difficulty with variable length items is that the length cannot simply be known in advance and cannot be put into the decoding table.
【0049】テーブル誘導復号のもう一つの困難な点
は、個々のパケットが一つ以上の可変長リストを持つこ
とがあると言うことである。例えば、AllocColorCells
要求に対する応答は、画素及びマスクの二つのリストを
持つ。画素リストの長さは、バイト8及び9内に与えら
れ、マスクリストの長さはバイト10及び11内に与え
られる。Another difficulty with table guided decoding is that each packet may have more than one variable length list. For example, AllocColorCells
The response to the request has two lists, a pixel and a mask. The length of the pixel list is given in bytes 8 and 9, and the length of the mask list is given in bytes 10 and 11.
【0050】残念なことに、X11プロトコルはその可
変長リストの長さを必ずしも定義しない。特に、QueryC
olors 要求内のリストの長さを考察して見たい。このリ
ストの長さはこの要求内には与えられず、要求の長さか
ら計算しなければならない。具体的には、このリストの
長さがnである場合、この要求の長さは、2+nである
(前述の如く、要求長は、その要求内の4−バイト語の
数であり、2+nの要求長は、要求の固定部分に対して
は、8バイト+n×4バイトリストエントリーであるこ
とに注意する)。他のパケット、例えば、FreeColors要
求及びGetImageに対する要求もまたデータ項目の長さを
要求長から計算することを必要とする。おそらく最も複
雑なのは、ChangeProperty要求である。これら要求は、
可変長ストリングのリストを持つ。ストリングの数は決
して与えられず、単に要求長が可能なストリング見出し
からランアウトしたときに決定されなければならない。Unfortunately, the X11 protocol does not necessarily define the length of its variable length list. In particular, QueryC
Let's consider the length of the list in the olors request. The length of this list is not given in this request and must be calculated from the length of the request. Specifically, if the length of this list is n, then the length of this request is 2 + n (as previously mentioned, the request length is the number of 4-byte words in the request, 2 + n). Note that the request length is 8 bytes + n x 4 bytes list entry for the fixed part of the request). Other packets, such as FreeColors requests and requests for GetImage, also require the length of the data item to be calculated from the requested length. Perhaps the most complex is the ChangeProperty request. These requirements are
Holds a list of variable length strings. The number of strings is never given and must simply be determined when running out of the string header where the requested length is possible.
【0051】X11プロトコルの複雑さのために、テー
ブル誘導手順にて印刷できる可能性はないように見え
る。但し、X11プロトコルに対するテーブルを構築す
る試みの中で、以下について気付いた。テーブルを構築
するためには、要求、応答、エラー、事象、及びプロト
コル資料のトロフ源(troff source)からのタイプの記
述が抽出される。これらテキスト記述が次にテーブル項
目を構築するためにセットの手順呼びに変換される。例
えば、BOOLタイプに対するトロフ源は以下の通りで
ある、 これは、Gnu Emacs エディタを使用して以下のように変
換される。Due to the complexity of the X11 protocol, it does not seem possible to print with the table-guided procedure. However, in an attempt to build a table for the X11 protocol, I noticed the following: To build the table, request, response, error, event, and type descriptions from the troff source of protocol material are extracted. These textual descriptions are then translated into a set of procedure calls to build the table entries. For example, the trough sources for the BOOL type are: This is converted using the Gnu Emacs editor as follows:
【0052】P=DefineTYPE(BOOL,E
NUMERATED,“BOOL”PrintENUM
ERATED); DefineEValue(P,OL,“Fals
e”); DefineEValue(P,1L,“Tru
e”); セットのテーブルを構築するためのセットの手順及びこ
れらテーブルを翻訳するためのルーチンを持つかわり
に、個々のパケット定義がそのパケットを直接に印刷す
るためのルーチンに変換された。これは、約217個の
パケット印刷手順を生成するが、これは一つのテーブル
誘導パケット印刷ルーチンにこのテーブルを初期化する
ためのコードを加えた以上の何物でもない。これに加え
て、このアプローチは非常に複雑なテーブルの設計、構
築、及び翻訳を必要とすることなくX11プロトコルの
複雑さを補う手作業による符号化を可能とする。P = DefineTYPE (BOOL, E
NUMERATED, "BOOL" PrintENUM
ERATED); DefineEValue (P, OL, “Fals
e "); DefineEValue (P, 1L," Tru
e ″); Instead of having a set procedure and a routine for translating these tables to build a table of sets, each packet definition has been translated into a routine for printing that packet directly. Produces about 217 packet printing procedures, which is nothing more than a table-directed packet printing routine plus code to initialize this table. Allows manual encoding to compensate for the complexity of the X11 protocol without requiring the design, construction and translation of very complex tables.
【0053】このアプローチにおいては、様々なパケッ
トの記述が行われ、次に、GnuEmacs テキスト・エディ
タを使用して各々がそのパケットを印刷するルーチンに
変換される。一般変換が一旦設計されると、全ての要
求、応答、事象、及びエラーを自動的にX11プロトコ
ル定義資料内のそれらの記述から直接にそれらを印刷す
るためのルーチンに変換することができる。In this approach, various packet descriptions are made and then converted into routines that each print that packet using the GnuEmacs text editor. Once the general transformations are designed, all requests, responses, events, and errors can be automatically transformed from their description in the X11 protocol definition material into a routine for printing them.
【0054】前述のXscopeコードがXprogに
対する通信ソケットを確立するために使用される。図8
に示されるように、Xprog90はクライアント0と
サーバ52との間に位置し、出力92を生成する。こう
して生成された出力92は、一つのコンピュータ・プロ
グラムであり、編集及び実行されると、X11プログラ
ムを使用してサーバと通信するために使用されるクライ
アント(アプリケーションプログラム)によって生成さ
れるデータ流を模倣する。The Xscope code described above is used to establish a communication socket to Xprog. Figure 8
Xprog 90 is located between client 0 and server 52 and produces output 92, as shown in FIG. The output 92 thus produced is a computer program that, when edited and executed, produces a data stream produced by the client (application program) used to communicate with the server using the X11 program. To imitate.
【0055】図7を参照すると、クライアントがXpr
ogに接続した時、これは直ちにX11サーバ52に接
続し、次に選択待ちループ70に進む。このプログラム
は、クライアント50あるいはサーバ52のいずれかか
らのその入力ファイル記述子(fd)72の一つへの入
力を待つ。入力があると、これは74において読まれ、
直ちにクライアントあるいはサーバのための対応する出
力fd76に書き込まれる。Referring to FIG. 7, the client is Xpr.
When connected to og, it will immediately connect to the X11 server 52 and then proceed to wait for selection loop 70. This program waits for input to one of its input file descriptors (fd) 72 from either client 50 or server 52. With input, this is read at 74,
It is immediately written to the corresponding output fd76 for the client or server.
【0056】これに加えて、78におけるパケット化の
ために、入力バッファが一つのルーチンにパスされる。
このルーチンの主要な機能は、図3の20、22、及び
24の所に示されるように、入力バッファ流を各々のパ
ケットが一つの要求、応答、事象、あるいはエラーを含
むX11パケット流に分解することにある。これらパケ
ット タイプの各々に対するフォーマットが図10に示
される。サーバからの事象及びエラーは常に32バイト
であり、クライアントからの要求は、一つのオプコード
(バイト0)及び要求長を含む一つの早期フィールド
(バイト2−3)を含む。応答もまた一つのオプコード
(バイト0)、それらの長さを定義する長さ欄(バイト
4−7)、及び一つの通し番号欄(バイト2−3)を含
む。個々の可能なX11パケットに対する詳細な定義が
発明の詳細な説明の最後の部分に付けられた参考資料に
示される。In addition to this, the input buffer is passed to one routine for packetization at 78.
The main function of this routine is to decompose the input buffer stream into an X11 packet stream, where each packet contains one request, response, event, or error, as shown at 20, 22, and 24 in FIG. To do. The format for each of these packet types is shown in FIG. Events and errors from the server are always 32 bytes and the request from the client contains one opcode (byte 0) and one early field (bytes 2-3) containing the request length. The response also contains one opcode (byte 0), a length field (bytes 4-7) defining their length, and one serial number field (bytes 2-3). A detailed definition for each possible X11 packet is given in the references attached at the end of the detailed description of the invention.
【0057】図9に戻ると、個々のパケットは、メモリ
内にいったん全部が集まると80において翻訳される。
ここがXprog90がXscopeと異なる点であ
る。Xscopeは、個々のパケットをその内容のダン
プを印刷することによって翻訳する。Xprogは個々
のパケット80を調べ、その機能に対するソースコード
を出力ファイル82に書くことによりそれがパケットを
生成したであろうXlib機能呼びを生成することを試
みる。この逆翻訳技術は、この結果としてのソース コ
ードが編集され、元の要求者のコードのかわりに実行さ
れた場合、この通信リンク上に同一シーケンスのパケッ
トを出現させる。逆翻訳とは、簡単に言うと、実行要求
者プログラムからのデータ流を一連のXlib機能呼び
に翻訳することを意味する。Returning to FIG. 9, individual packets are translated at 80 once they are all assembled in memory.
This is where Xprog90 differs from Xscope. Xscope translates individual packets by printing a dump of their contents. Xprog examines each packet 80 and attempts to generate the Xlib function call it would have generated by writing the source code for that function to output file 82. This reverse translation technique causes the same sequence of packets to appear on this communication link if the resulting source code is edited and executed on behalf of the original requester's code. Back translation simply means translating the data stream from the execution requester program into a series of Xlib function calls.
【0058】例えば、MapWindow コマンドを含むパケッ
トは、XprogにXMapWindow機能呼びを生成させる。
このMapWindow 要求は、長さ(8バイト)、オプコード
(”08”x)、及びどのウインドウをマップすべきか
を指定する32−ビットのウインドウ識別子から成る。
XMapWindow機能は、二つのパラメータ:つまり(i)使
用されるべきディスプレイ、及び(ii)マップするウ
インドウを要求する。従って、この逆翻訳において解決
されるべき主な問題は、XMapWindowのために必要とされ
るこれらパラメータをMapWindow パケット内に含まれる
これら値からいかに生成するかと言うことある。For example, a packet containing a MapWindow command causes Xprog to generate an XMapWindow function call.
This MapWindow request consists of a length (8 bytes), an opcode ("08" x), and a 32-bit window identifier that specifies which window to map.
The XMapWindow function requires two parameters: (i) the display to be used, and (ii) the window to map. Therefore, the main problem to be solved in this back translation is how to generate those parameters needed for the XMapWindow from those values contained in the MapWindow packet.
【0059】XMapWindow及び他のXlibコマンドに対する
ディスプレイ・パラメータは、ウインドウ・サーバへの
接続を指定する。典型的には、サーバへの一つのみの接
続があるだけで、このためXprog出力内にグローバ
ル変数‘dpy’が生成され、これが全てのXlib機
能に対するディスプレイ・パラメータに使用される。こ
の‘dpy’変数は、Xprog出力のmain( )
内のXOpenDisplay機能の結果を以下のようにするよう初
期化される。 main( ){ dpy=XOpenDisplay(getenv(“DISPLAY”)) ; ・・・ XMapWindow(dpy,.?.); ・・・ ウインドウ識別子(ID)は、典型的なクライアント/
サーバ相互作用に含まれる大きな数のオブジェクト識別
子の一つである。X11はウインドウ、フォント、グラ
フィック・コンテキスト、及び多くの他のX11を指す
ための32−ビット識別子を使用する。これら識別子
は、Xlibサポート・コードによって、クライアント
内において、接続が確立されたとき、サーバによって指
定されるレンジから選択される。これら識別子は、C言
語タイプデフ(typedef )によってXlib見出しファ
イルから隠される。このため、クライアント・プログラ
ムはウインドウをタイプ・ウインドウの変数と呼ぶ。X
progにおいては、このウインドウ変数に対する名前
を生成するために数値識別子をIWINDOW() 機能にパスす
るが、これはこのウインドウを表わすストリング(ch
ar*)をリターンする。Display parameters to XMapWindow and other Xlib commands specify the connection to the window server. There is typically only one connection to the server, which creates a global variable'dpy 'in the Xprog output, which is used as the display parameter for all Xlib functions. This'dpy 'variable is the main () of Xprog output
The result of the XOpenDisplay function in is initialized as follows. main () {dpy = XOpenDisplay (getenv (“DISPLAY”)); ... XMapWindow (dpy, ...?); ... The window identifier (ID) is a typical client /
It is one of a large number of object identifiers involved in server interactions. X11 uses 32-bit identifiers to point to windows, fonts, graphic contexts, and many other X11. These identifiers are selected by the Xlib support code within the client from the range specified by the server when the connection is established. These identifiers are hidden from the Xlib header file by the C language typedef. For this reason, the client program calls the window a type window variable. X
In prog, a numeric identifier is passed to the IWINDOW () function to generate the name for this window variable, which is the string (ch
ar *) is returned.
【0060】Xprogに対しては、16進数を指定す
るために数値X11識別子の下位ビットが使用され、こ
の頭にアルファベット・タイプの識別子が加えられる。
こうして、ウインドウ1に対する変数の名前はW1と呼
ばれ、識別子2を持つグラフィック・コンテクストはG
C2と呼ばれ、識別子10を持つフォントはFaと呼ば
れる。X11内の各々の識別子タイプは、そのタイプの
IDを名前に変換する自体の機能を持つ。For Xprog, the low order bits of the numeric X11 identifier are used to specify a hexadecimal number, to which the alphabet type identifier is added.
Thus, the name of the variable for window 1 is called W1 and the graphic context with identifier 2 is G
The font called C2 and having the identifier 10 is called Fa. Each identifier type in X11 has its own function of converting an ID of that type into a name.
【0061】これら名前は二つの方法で使用される。こ
れらは、ある要求がある識別子によって指定されるパラ
メータを必要とするXlib機能に対応する度に使用さ
れる。従って、MapWindow 要求に対するコードは以下の
ようになる。These names are used in two ways. These are used each time a request corresponds to an Xlib function that requires a parameter specified by an identifier. So the code for the MapWindow request would be:
【0062】 MapWindow(buf)unsigned char *buf;{ / * Requset MapWindow is opcode 8 */ char *window=IWINDOW(&buf[4]); fprintf(Codeout,“XMapWindow(%s,%s); \n”, DISPLAY,window); } これは、MapWindow 要求を以下のようなCコードに逆翻
訳する。MapWindow (buf) unsigned char * buf; {/ * Request MapMapwindow is opcode 8 * / char * window = IWINDOW (& buf [4]); ,, DISPLAY, window);} This translates the MapWindow request back into C code as follows:
【0063】XMapWindow(dpy,W8);
このコードは、指定されるX11オブジェクトへの参
照、このケースではそのIDが要求のバイト4から始ま
るウインドウを生成する。この出力が正当なCコードで
あるためには、この変数名(W8)に対する宣言がなく
てはならない。識別子が最初に使用されたとき、Xpr
ogは識別子をタイプ別にXprog記号テーブル内に
登録し、Cコード出力ファイル内に(正しいタイプの)
宣言を生成する。こうして、全ての変数名は、これらが
最初に使用されるときに宣言される。例えば、上のXMap
Window呼内のウインドウは以下のように宣言される。XMapWindow (dpy, W8);
This code creates a window with a reference to the specified X11 object, in this case its ID starting at byte 4 of the request. In order for this output to be valid C code, a declaration for this variable name (W8) must be made. Xpr when the identifier is first used
og registers the identifier by type in the Xprog symbol table, and in the C code output file (of the correct type)
Generate a declaration. Thus, all variable names are declared when they are first used. For example, the XMap above
The window in the Window call is declared as follows.
【0064】Window W8;C言語は勿論、宣言
とコマンドが相互に混合されたものを許さず、そこで、
Xprogの出力は二つのファイルに生成される。第一
のファイルは全ての宣言のために使用され、第二のファ
イルは実行可能なコマンドに対して使用される。Xpr
ogが終了するとき、これはこれら二つのファイルから
最初に全ての宣言をコピーし、次に全てのコマンドをコ
ピーすることによってその出力を生成する。このプロセ
スは全ての宣言及び全てのコマンドを正しい順番で持つ
一つの出力ファイルを生成する。Windows W8; C language, of course, does not allow mixed declarations and commands, where
The output of Xprog is generated in two files. The first file is used for all declarations and the second file is used for executable commands. Xpr
When og finishes, it produces its output by first copying all the declarations from these two files and then copying all the commands. This process produces one output file with all declarations and all commands in the correct order.
【0065】幾つかの要求、例えば、CreateWindowある
いはCreatePixmapがX11サーバへの新たな識別子を定
義するために使用される。この識別子はXlibサポー
ト・コードによって定義され、対応するXlib機能に
よってアプリケーション・プログラムにリターンされ
る。このため、これら要求に対応するXprogコード
は以下に見られるような一つの割当てである。Some requests, such as CreateWindow or CreatePixmap, are used to define a new identifier to the X11 server. This identifier is defined by the Xlib support code and returned to the application program by the corresponding Xlib function. Thus, the Xprog code corresponding to these requests is one allocation as seen below.
【0066】PX30=XCreatePixmap
(dpy,W12,13,13,1);これは、以下の
ようなXprogコードによって生成される。PX30 = XCreatePixmap
(Dpy, W12,13,13,1); this is generated by the following Xprog code:
【0067】fprintf(Codeout,“\t
%s=XCreatePixmap(%s,%s,%
d,%d);\n”,pixmapId,DISPLA
Y,drawable,width,height,d
epth); 類似の技法を他のパラメータ・タイプにも使用すること
ができる。X11要求に対するこれらパラメータ・タイ
プは一般に以下のようである、 (a)識別子はその識別子及びそのタイプから名前を生
成するために使用される。Fprintf (Codeout, "\ t
% S = XCreatePixmap (% s,% s,%
d,% d); \ n ", pixmapId, DISPLA
Y, drawable, width, height, d
epth); Similar techniques can be used for other parameter types. These parameter types for X11 requests are generally as follows: (a) The identifier is used to generate a name from that identifier and its type.
【0068】(b)番号は単に10進法にて印刷され
る。(B) The numbers are simply printed in decimal.
【0069】(c)ストリングは標準Cストリングとし
て二重引用符で区切られて印刷され、内部的にエスケー
プあるいは引用されるべき文字には注意が払われる。(C) The string is printed as a standard C string delimited by double quotes, paying attention to characters that should be internally escaped or quoted.
【0070】(d)記号定数はX11に対して指定され
る多数の列挙されたタイプに対して使用され、X11.
h見出しファイル内に与えられる。(D) Symbolic constants are used for the many enumerated types specified for X11.
h is given in the heading file.
【0071】(e)構造及び値のアレイは生成されたプ
ログラム内に一列に構築される。(E) The structure and array of values are constructed in a row in the generated program.
【0072】構造及びアレイのX11クライアントから
X11サーバへのパラメータとしての使用は最も複雑な
コード生成を要求する。例えば、画素マップからカーソ
ルを生成するためには、CreatePixmapCursor要求が使用
される。この要求は、ソース及びマスク画素マップ(識
別子)、並びに、ソースの原点の位置(数)、及びその
カーソルに対する前景及び背景カラーを指定する。これ
らカラーは4つの値のアレイあるいは構造として定義さ
れ、これらの内の三つは、色の赤、緑、及び青の成分
(RGB)を指定する。このような要求に対するXpr
ogからの出力は以下の通りである。 { static XColor fore={O, OxOOOO,OxOOOO , OxOOOO}; static XColor back={O, Oxffff,Oxffff , Oxffff}; CSR7=XCreatePixmapCursor(dpy,PX3, PX5,&fore,&back,16,6);} 大括弧はローカル命名コンテクストを生成するために使
用されるが、これによって二つのカラー変数、つまり前
景及び背景を生成することが可能になる。前景及び背景
は、前景及び背景カラーを定義する。これらの定義に対
する値はCreatePixmapCursor要求から直接に取られ、1
6進数によって表わされる。これは、Xprogが正し
い値をXlib機能にパスするために、必要に応じて構
造あるいはアレイを生成することを許す。The use of structures and arrays as parameters from the X11 client to the X11 server requires the most complex code generation. For example, the CreatePixmapCursor request is used to create a cursor from a pixel map. This request specifies the source and mask pixel map (identifier) as well as the position (number) of the source origin and the foreground and background colors for that cursor. These colors are defined as an array or structure of four values, three of which specify the red, green, and blue components of the color (RGB). Xpr for such requests
The output from og is: Static XColor fore = {O, OxOOOO, OxOOOO, OxOOOO}; static XColor back = {O, Oxffff, Oxffff, Oxffff}; The parentheses are used to generate the local naming context, which allows two color variables to be generated, the foreground and the background. Foreground and background define foreground and background colors. The values for these definitions are taken directly from the CreatePixmapCursor request, 1
It is represented by a hexadecimal number. This allows Xprog to create structures or arrays as needed to pass the correct values to the Xlib function.
【0073】逆翻訳におけるもう一つの問題は、ある与
えられたX11要求に直接に対応するXlib機能が存
在しないときに起こる。これは、基本となるX11イン
ターフェースの直接の反映ではないXlibインターフ
ェース内におかれた余分の意味論に起因する。つまり、
Xlibは見せ掛けを持たないわけではない。例えば、
X11OpenFont要求に対応するXlib機能はない。最
も近い一致は、OpenFont要求及びQueryFont 要求の両方
を生成するXlib XloadFont機能である。これは、逆翻訳
は完全に正しくその出力を生成するためには要求の順番
を認識しなければならないことを意味する。例えば、フ
ラグ・ビットを使用して、その後の要求が無視されるべ
きであるか否かを覚えておくか、あるいは、単に、完全
とは言えない逆翻訳を受け入れなければならない。Another problem with back translation occurs when there is no Xlib function that directly corresponds to a given X11 request. This is due to the extra semantics placed within the Xlib interface that are not a direct reflection of the underlying X11 interface. That is,
Xlib is not without a sham. For example,
There is no Xlib function corresponding to the X11 OpenFont request. The closest match is the Xlib XloadFont feature, which produces both OpenFont and QueryFont requests. This means that back-translation must know the order of the requests in order to produce its output completely correctly. For example, flag bits must be used to remember whether or not subsequent requests should be ignored, or simply accept less than perfect back translation.
【0074】X11への幾つかの要求は、X11からの
応答を生成する。典型的には、これら要求は、あるオブ
ジェクトのある特性に対するものである。例えば、Quer
yFont 要求は、問い合されたフォントの特性を含む応答
を生成する。要求は、X11要求からXlib機能呼び
へと逆翻訳される。サーバからクライアントへの応答
は、単にXprogによって無視され、破棄される。こ
の応答がそのセッションに与える効果は、将来のX11
要求内にパスされる引き数内に反映される。Xprogが生
成したプログラムは、単にそれを生成したセッションと
同一のコマンド・シーケンスを生成しようとするため、
QueryFont 要求からリターンされる値はそれにとって意
味がない。Some requests to X11 produce a response from X11. Typically, these requirements are for certain properties of certain objects. For example, Quer
The yFont request produces a response containing the characteristics of the queried font. The request is back-translated from the X11 request into an Xlib function call. The response from the server to the client is simply ignored by Xprog and discarded. The effect of this response on the session is that future X11
Reflected in the arguments passed in the request. The program that Xprog creates simply tries to create the same command sequence as the session that created it, so
The value returned from a QueryFont request has no meaning to it.
【0075】例えば、クライアント・プログラムがX1
1サーバに、QueryFont 要求を使用してフォント内の文
字のサイズを尋ね、この情報を使用して、スクリーンを
横断しての文字の間隔を決定するものと想定する。Quer
yFont 要求に対するこの応答内の情報は、この情報がX
progを通じてクライアントにパスされるために、ク
ライアント・プログラムによって表示されるべきテキス
トの位置を計算するために使用される。Xprogはテ
キスト表示要求内に与えられるこの結果としてのクライ
アントによって計算された位置を保存及び使用するが、
これらの値がこの応答メッセージ内の情報からいかにし
て計算されるかと言う方法について知ることはない。従
って、Xprogによって生成された出力内のリターン
された機能値は単に無視される。QueryFont 要求は以下
を生成する。For example, if the client program is X1
Suppose a server is asked to use a QueryFont request to determine the size of characters in a font and this information is used to determine the character spacing across the screen. Quer
The information in this response to the yFont request is that this information is X
Used to calculate the position of the text that should be displayed by the client program to be passed to the client through the prog. Xprog saves and uses the resulting client-calculated position given in the text display request,
We do not know how these values are calculated from the information in this response message. Therefore, the returned function value in the output produced by Xprog is simply ignored. The QueryFont request produces:
【0076】(void)XQueryFont(dp
y,F9);我々は、Xprog出力プログラムを生成
するとき、QueryFont 要求を単に完全に破棄することも
できるが、これを行なうとこのアプリケーションのタイ
ミング特性がX11ネットワークプロトコルとの関連で
変わってしまう。従って、これは破棄されることなく生
成された出力ファイル内に置かれる。(Void) XQueryFont (dp
y, F9); we could just completely drop the QueryFont request when generating the Xprog output program, but doing so would change the timing characteristics of this application in the context of the X11 network protocol. Therefore, it will be placed in the generated output file without being discarded.
【0077】他のXlib機能は、リターンされるべき
幾つかの値を持ち、これら値をリターンするためのコー
ル・バイ・リファレンス(call-by-reference )パラメ
ータを使用する。例えば、XGetGeometry機能は、そのパ
ラメータ内に7つの値をリターンし、さらに一つの機能
値をリターンする。これら値の全ては、以下のコードの
生成によって破棄される。Other Xlib functions have some values to be returned and use call-by-reference parameters to return these values. For example, the XGetGeometry function returns seven values in its parameter and one more function value. All of these values are discarded by the code generation below.
【0078】 { Window a; int b; int c; unsigned int d; unsigned int e; unsigned int f; unsigned int g; (void)XGetGeometry(dpy,W1,&a,&b, &c,&d,&e,&f,&g);} このコードは要求を行ない、その応答値をスタック上の
一時的な変数内に受信するが、この値はその後破棄され
る。これら値のクライアント・プログラムの将来の挙動
への影響は、将来のクライアント要求内に使用されるパ
ラメータ内に含まれる。Unwindowed a; int b; int c; unsigned int d; unsigned int e; unsigned int f; unsigned int g; &G);} This code makes a request and receives its response value in a temporary variable on the stack, which is then discarded. The impact of these values on the future behavior of the client program is included in the parameters used in future client requests.
【0079】エラーはXprog出力内においてはコメ
ントととして言及されるが、出力プログラム内でかなり
の注意を必要とする。エラーを扱うための正しいアプロ
ーチは、エラーの原因となった要求を決定し、これらを
出力プログラムから除去することである。これは、出力
プログラムをこれがエラーが発生しないことが確かにな
るまでバッファすることを要求する。元のセッションに
より忠実であるもう一つのアプローチは、エラーが起こ
ることを許すが、これらを無視するエラー・ハンドラを
出力プログラム内に定義する方法である。Errors are referred to as comments in Xprog output, but require considerable care in the output program. The correct approach to handling errors is to determine the request that caused the error and remove them from the output program. This requires the output program to be buffered until it is certain that it will not generate an error. Another approach that is more faithful to the original session is to define error handlers in the output program that allow errors to occur but ignore them.
【0080】幾つかのプログラムはエラーを生成し、こ
れを処理する。例えば、AndrewToolkit は、命名された
フォントを開く試みをする。そのフォントが存在しない
ときは、X11サーバによってエラーが生成される。こ
のエラーはAndrew Toolkitによってとらえられ、処理さ
れ、結果として、これは存在しないフォントの代わりの
フォントをピックアップする。この挙動には二つの観点
が存在する。第一の観点は、使用されるフォントは開か
れた最後のフォント(エラーを起こさないフォント)で
あり、このため、エラーを生成する要求が正しい挙動の
ために出力プログラムから削除できることである。第二
の観点は、タイミングの問題を考慮すると、全ての要
求、及びこれに続いて起こるエラーが含まれるべきであ
るということである。つまり、多数のエラー・メッセー
ジが生成された場合、これらを除去すると、出力プログ
ラムのタイミング特性に影響を与える。現コードにはエ
ラーを扱うための用意はない。Some programs generate and handle errors. For example, AndrewToolkit attempts to open a named font. If the font does not exist, an error is generated by the X11 server. This error was caught and handled by the Andrew Toolkit and as a result it picks up the font instead of the one that does not exist. There are two aspects to this behavior. The first point is that the font used is the last font opened (the one that does not cause an error), so that the request generating the error can be removed from the output program for the correct behavior. The second aspect is that considering the timing issue, all requests and their subsequent errors should be included. That is, if a large number of error messages are generated, removing them will affect the timing characteristics of the output program. The current code has no provision for handling errors.
【0081】事象は相互作用の出力プログラム内に生成
するのに最も困難な部分である。事象に注意を払わずに
Xprog出力プログラムが実行された場合、典型的に
は有効なディスプレイ動作は得られない。出力プログラ
ムは始動し、X11サーバへの接続を確立し、ウインド
ウを生成し、これらウインドウに出力し、次に、X11
サーバへの接続を破ることによって退出するが、このと
きX11サーバは、この新たに生成されたウインドウへ
の全ての参照を通常、これがスクリーン上にウインドウ
を表示する前に削除する。せいぜい、ユーザはXpro
g出力プログラムが始動し、実行し、そしてほぼ直ちに
退出する間にスクリーン上に瞬間的なフリッカーを見る
程度である。事象処理を行なわないXprog出力プロ
グラムのこの最初の使用は事象を処理すべきであること
を示す。Events are the most difficult parts to generate in the output program of an interaction. If the Xprog output program is run without paying attention to the event, then typically no valid display operation is obtained. The output program starts, establishes a connection to the X11 server, creates windows, outputs to these windows, then X11
Exit by breaking the connection to the server, at which time the X11 server normally removes all references to this newly created window before it displays the window on the screen. At best, the user is Xpro
Only to see a momentary flicker on the screen while the g-output program is starting, running, and exiting almost immediately. This first use of the Xprog output program without event processing indicates that the event should be processed.
【0082】事象はX11プログラムの歩調を整える働
きを持つ。例えば、MapWindow 事象の結果としてのExpo
se事象は、クライアント要求をサーバのこれら要求に対
して何かする能力と同期させる機能を持つ。ユーザがメ
ニュー上のマウスを移動及びクリックさせるために必要
な時間は、ユーザがメニューを読むために必要な時間も
与え、また”ユーザ対話”時間は、このプログラムに対
する自然停止(あるいは少なくとも休止)ポイントを与
える。典型的なX11クライアントは初期ディスプレイ
を生成し、次にユーザ入力(キーボードあるいはマウ
ス)を待つ。ユーザ入力はディスプレイを変化させ、再
び次のユーザ入力を待つ。こうして、X11クライアン
トは二つのフェーズを交番させる。つまり、ユーザ入力
を待つフェーズと、ディスプレイをその入力に対して反
応するように変更するフェーズとの間で交番させる。
(このモデルは、時間もしばしばディスプレイを変化さ
せるもう一つの要因であると言う事実を無視する。例え
ば、ディスプレイ上にクロックを表示するクロック・プ
ログラムではこれが起こる)。The event acts to pace the X11 program. For example, Expo as a result of a MapWindow event
The se event has the ability to synchronize client requests with the server's ability to do something with these requests. The time required for the user to move and click the mouse on the menu also gives the time required for the user to read the menu, and the "user interaction" time is the point of natural stop (or at least pause) for this program. give. A typical X11 client creates an initial display and then waits for user input (keyboard or mouse). The user input changes the display and waits for the next user input again. Thus, the X11 client alternates between the two phases. That is, alternating between waiting for user input and changing the display to respond to that input.
(This model ignores the fact that time is also another factor that often changes the display. This happens, for example, in a clock program that displays a clock on the display).
【0083】これらの考察の結果として、X11事象を
二つのタイプ・つまり、重要な事象と重要でない事象に
分割することが考えられる。重要でない事象には、マウ
スの移動、エンター及び退出通知、及びフォーカス事象
等が含まれる。重要でない事象は、単にXprogによ
って破棄される。重要な事象には、キーボード及びマウ
スボタン入力(ユーザ・ペーシング事象)、及びExpose
事象(X11サーバ・ペーシング事象)が含まれる。X
progは重要な事象を待つコードを生成する。Xpr
ogは、その通信セッション中に発見された個々の重要
な事象に対して、WaitForEvent手順に対する呼びを生成
する。As a result of these considerations, it is conceivable to split the X11 event into two types: significant and minor events. Non-critical events include mouse movements, enter and exit notifications, and focus events. Insignificant events are simply discarded by Xprog. Key events include keyboard and mouse button input (user pacing events), and Expose
Events (X11 server pacing events) are included. X
Prog generates code that waits for significant events. Xpr
og generates a call to the WaitForEvent procedure for each significant event discovered during its communication session.
【0084】WaitForEvent手順は、二つのパラメータ、
つまり、(i)待つべき事象タイプ、及び(ii)プロ
ンプト・メッセージの二つを持つ。プロンプト・メッセ
ージは、ユーザ・コンソール(stderr)にユーザに要求
されるメッセージのタイプを知らせるために書かれる
(事象がユーザ入力、例えばマウスあるいはキーボード
・ボタンを押すことを要求するような場合)。すると、
事象が要求されるタイプの事象が到着するまで受信され
る。要求される事象が既に事象待ち行列内に存在すると
きは、休止は存在しない。要求される事象が事象待ち行
列内に存在しないときは、全ての他の事象がその事象待
ち行列が空になるまで破棄され、次に、この手順は待
つ。同期事象、例えばNapWindow 要求からのExpose事象
は、典型的には事象待ち行列内に存在し、ユーザの動作
を必要としない。ユーザ・ペーシング事象、例えばマウ
ス及びキーボード入力は、メッセージとともにプロンプ
ト状態となり、要求されるユーザ入力を待つ。The WaitForEvent procedure has two parameters:
That is, it has two types: (i) event type to wait for, and (ii) prompt message. Prompt messages are written to inform the user console (stderr) of the type of message required by the user (when the event requires user input, such as pressing a mouse or keyboard button). Then,
Events are received until an event of the required type arrives. There is no pause when the requested event is already in the event queue. If the requested event is not in the event queue, then all other events are discarded until the event queue is empty, then the procedure waits. Sync events, such as Expose events from NapWindow requests, typically reside in the event queue and require no user action. User pacing events, such as mouse and keyboard input, are prompted with a message waiting for the requested user input.
【0085】疑似事象がプログラムの終端において、デ
ィスプレイがユーザが終端することをはっきりと示す前
に消えることを防止するために使用される。この疑似事
象は、”退出(Exit)”のプロンプトメッセージを持
ち、入力デバイス上のButton Pressを待つ。Pseudo-events are used at the end of the program to prevent the display from disappearing before the user clearly indicates the end. This pseudo-event has a "Exit" prompt message and waits for a Button Press on the input device.
【0086】最後に、Xprogは実行するために元の
クライアント・プログラムが持ったものと同一の環境を
必要とする。他の異なる環境内には存在しないような環
境特性をクライアント・プログラムが使用できる程度ま
で、Xprog出力は、変えられたディスプレイ・デバ
イス、あるいは異なるセットのフォントを扱うことは一
般的にはできない。これに加えて、入力事象の順番は、
元のクライアント プログラムにおいて起こった順番と
一致しなければならない。Finally, Xprog needs the same environment as the original client program had in order to execute. To the extent that client programs can use environmental characteristics that do not exist in other different environments, Xprog output is generally unable to handle altered display devices, or different sets of fonts. In addition to this, the order of input events is
Must match the order that occurred in the original client program.
【0087】ここでは本発明の一つの好ましい実施態様
が説明されたが、本発明は、ここに開示されるのと全く
同一の構造に限定されるものではなく、特許請求の範囲
において記述される本発明の範囲に入る全ての変更及び
修正の権利も主張されるものである。以下にX11パケ
ットに対する詳細な定義を示す。While one preferred embodiment of the present invention has been described herein, the present invention is not limited to the exact same structures disclosed herein, but rather is set forth in the following claims. All changes and modifications that come within the scope of the invention are also claimed. The detailed definition for the X11 packet is shown below.
【0088】プロトコルの符号化 〔構文上の約束〕(Syntactic Conventions) 全ての数は#xの接頭語が与えられない限り10進であ
り、この接頭語を持つ場合は16進(基数16)であ
る。要求、応答、エラー、事象及び複合タイプを記述す
るために使用される一般構文は以下の通りである: NameofThing 符号化形式(encode−form) … 符号化形式(encode−form) 各々の符号化形式は単一の要素を記述する。要素に関し
ては、プロトコル内において以下のように記述される: 名称:TYPE この符号化形式は以下の通りである: N TYPE 名称 Nはデータ流内で占拠されるバイトの数であり、TYP
Eはこれらバイトの翻訳である。例えば、 深さ:CARD8 は以下のようになる: 1 CARD8 深さ スタティック数値を持つ要素に関しては、この符号化形
式は、以下の通りである: N 値 名称 値は常にN−バイトの符号を持たない整数として翻訳さ
れる。例えば、ウインドウ・エラーの最初の二つのバイ
トは、常に0(一般的なエラーを示す)及び3(具体的
にウインドウ・エラーを示す)である: 1 0 エラー 1 3 コード 要素に関しては、プロトコル内において以下のように記
述される: 名称{Name1……,NameI} この符号化形式は、以下の通りである: 値は常にN−バイトの符号を持たない整数として翻訳さ
れる。Nのサイズは、しばしばこれら値を符号化するた
めに厳密に要求されるサイズよりも大きくなることに注
意する。例えば、 クラス{InputOutput,InputOnly, CopyFromParent} は以下のようになる: 2 クラス 0 CopyFromParent 1 InputOutput 2 InputOnly 要素に関しては、プロトコル内において以下のように記
述される: NAME:TYPEまたはAlternative1ま
たはAlternativeI この符号化形式は以下の通りである: N TYPE NAME 値1 Alternative1 … 値I AlternativeI TYPEの符号化と衝突しないように代替値が保証され
る。例えば: 宛先:WINDOWまたはPointerWindow
またはInputFocus は以下のようになる。 4 WINDOW 宛先 0 PointerWindow 1 InputFocus 要素に関しては、プロトコル内において以下のように記
述される: 値マスク:BITMASK この符号化形式は以下の通りである: N BITMASK 値マスク mask1 mask−name1 … maskI mask−nameI マスク内の個々のビットは指定され、命名され、そして
Nは2あるいは4である。BITMASK内の最上位ビ
ットは、連鎖された(マルチ語)ビットマスクを拡張増
補現存コア要求として定義するために使用するために予
約される。このビットの厳密な翻訳はここではまだ定義
されない。但し、可能なメカニズムとしては、1−ビッ
トが別のNバイトのビットマスクが続くことを示し、全
体としてのマスク内のビットがN−バイト・ユニットに
て最下位から最上位へと翻訳され、Nバイト・ユニット
がストリームの順番に翻訳され、そして、全体としての
マスクが個々のNバイト・ユニット内においてバイト・
スワップされる。LISTofVALUE符号化に関し
ては、要求に以下の形式のセクションが続き、個々のV
ALUEに対して一つの符号化形式をリストする: VALUEs 符号化形式 … 符号化形式 個々の符号化形式内のNAMEは、対応するBITMA
SKビットへの鍵となる。VALUEの符号化は常に4
バイトを占めるが、符号化形式内に指定されるバイトの
数は幾つの最下位バイトが実際に使用されているかを示
し;残りのバイトは使用されず、それらの値は問題とな
らない。様々なケースにおいて、一つの要素によって占
められるバイトの数は特定の数値によってではなく、単
一の小文字の変数名によって指定され、また、しばしば
他の要素は、これら変数を含む単純な数値表現によって
特定される値を持つ。このような表現と共に特定される
要素は常に符号のない整数として翻訳される。これら変
数の範囲は、通常単に囲い要求、応答、エラー、事象、
あるいは複合バイトである。例えば: 2 3+n 要求長さ 4n LISTofPOINT ポイント 不使用バイト(このバイトの値は定義されず、問題とな
らない)に関しては、符号化形式は典型的には以下の通
りである: N 不使用 不使用バイトの数が可変であるときは、符号化形式は典
型的には次の通りである。 p 不使用、p=pad(E) ここでEはある表現であり、そしてpad(E)は、E
を4の倍数に丸めるために要求されるバイトの数であ
る。 pad(E)=(4−(Emod4))mod4 〔一般タイプ〕(Common Types) LISTofFOO この資料内においては、表記法のLISTは厳密にはF
OO符号化のある数の反復を意味し;リストの実際の長
さはどこか他の所で符号化される。 SETofFOO 一つのセットは常にビットマスクによって表わされ、1
−ビットはそのセット内の存在を示す。 BITMASK:CARD32 WINDOW:CARD32 PIXMAP:CARD32 CURSOR:CARD32 FONT:CARD32 GCONTEXT:CARD32 COLORMAP:CARD32 DRAWABLE:CARD32 FONTABLE:CARD32 ATOM:CARD32 VISUALID:CARD32 BYTE:8ビット値 INT8:8ビット符号付整数 INT16:16ビット符号付整数 INT32:32ビット符号付整数 CARD8:8ビット符号なし整数 CARD16:16ビット符号なし整数 CARD32:32ビット符号なし整数 TIMESTAMP:CARD32 BITGRAVITY 0 Forget 1 NorthWest 2 North 3 NorthEast 4 West 5 Center 6 East 7 SouthWest 8 South 9 SouthEast 10 Static WINGRAVITY 0 Unmap 1 NorthWest 2 North 3 NorthEast 4 Wast 5 Center 6 East 7 SouthWest 8 South 9 SouthEast 10 Static BOOL 0 False 1 True SETofEVENT #x00000001 KeyPress #x00000002 KeyRelease #x00000004 ButtonPress #x00000008 ButtonRelease #x00000010 EnterWindow #x00000020 LeaveWindow #x00000040 PointerMotion #x00000080 PointerMotion
Hint #x00000100 Button1Motion #x00000200 Button2Motion #x00000400 Button3Motion #x00000800 Button4Motion #x00001000 Button5Motion #x00002000 ButtonMotion #x00004000 KeymapState #x00008000 Exposure #x00010000 VisibilityCha
nge #x00020000 StructureNoti
fy #x00040000 ResizeRedirec
t #x00080000 SubstructureN
otify #x00100000 SubstructureR
edirect #x00200000 FocusChange #x00400000 PropertyChang
e #x00800000 ColormapChang
e #x01000000 OwnerGrabButt
on #xfe000000 不使用だが0でなければなら
ない SETofPOINTEREVENT 符号化は、以下を除いて、SETofEVENTと同一
である: #xffff8003 不使用だが0でなければなら
ない SETofDEVICEEVENT 符号化は、以下を除いて、SETofEVENTと同一
である: #xffffc0b0 不使用だが0でなければなら
ない KEYSYM:CARA32 KEYCODE:CARD8 BUTTON:CARA8 SETofKEYBUTMASK #x0001 Shift #x0002 Lock #x0004 Control #x0008 Mod1 #x0010 Mod2 #x0020 Mod3 #x0040 Mod4 #x0080 Mod5 #x0100 Button1 #x0200 Button2 #x0400 Button3 #x0800 Button4 #x1000 Button5 #xc000 不使用だが0でなければなら
ない SETofKEYMASK 符号化は、以下を除いて、SETofKEYBUTMA
SKと同一である: #xff00 不使用だが0でなければなら
ない STRING8:LISTofCARD8 STRING16:LISTofCHAR2B CHAR2B 1 CARD8 byte1 1 CARD8 byte2 POINT 2 INT16 x 2 INT16 y RECTANGLE 2 INT16 x 2 INT16 y 2 CARD16 幅 2 CARD16 高さ ARC 2 INT16 x 2 INT16 y 2 CARD16 幅 2 CARD16 高さ 2 INT16 角度1 2 INT16 角度2 HOST 1 ファミリー 0 Internet 1 DECnet 2 Chaos 1 不使用 2 n アドレスの長さ n LISTofBYTE アドレス p 不使用、p=pad(n) STR 1 n バイト中の名称長さ n STRING8 名称 〔エラー〕(Errors) Request 1 0 Error 1 1 コード 2 CARD16 シーケンス数 4 不使用 2 CARD16 小オプコード 1 CARD8 大オプコード 21 不使用 Value 1 0 Error 1 2 コード 2 CARD16 シーケンス数 4 <32−bits> 不良値 2 CARD16 小オプコード 1 CARD8 大オプコード 21 不使用 Window 1 0 Error 1 3 コード 2 CARD16 シーケンス数 4 CARD32 不良資源id 2 CARD16 小オプコード 1 CARD8 大オプコード 21 不使用 Pixmap 1 0 Error 1 4 コード 2 CARD16 シーケンス数 4 CARD32 不良資源id 2 CARD16 小オプコード 1 CARD8 大オプコード 21 不使用 Atom 1 0 Error 1 5 コード 2 CARD16 シーケンス数 4 CARD32 不良アトムid 2 CARD16 小オプコード 1 CARD8 大オプコード 21 不使用 Cursor 1 0 Error 1 6 コード 2 CARD16 シーケンス数 4 CARD32 不良資源id 2 CARD16 小オプコード 1 CARD8 大オプコード 21 不使用 Font 1 0 Error 1 7 コード 2 CARD16 シーケンス数 4 CARD32 不良資源id 2 CARD16 小オプコード 1 CARD8 大オプコード 21 不使用 Match 1 0 Error 1 8 コード 2 CARD16 シーケンス数 4 不使用 2 CARD16 小オプコード 1 CARD8 大オプコード 21 不使用 Drawable 1 0 Error 1 9 コード 2 CARD16 シーケンス数 4 CARD32 不良資源id 2 CARD16 小オプコード 1 CARD8 大オプコード 21 不使用 Access 1 0 Error 1 10 コード 2 CARD16 シーケンス数 4 不使用 2 CARD16 小オプコード 1 CARD8 大オプコード 21 不使用 Alloc 1 0 Error 1 11 コード 2 CARD16 シーケンス数 4 不使用 2 CARD16 小オプコード 1 CARD8 大オプコード 21 不使用 Colormap 1 0 Error 1 12 コード 2 CARD16 シーケンス数 4 CARD32 不良資源id 2 CARD16 小オプコード 1 CARD8 大オプコード 21 不使用 GContext 1 0 Error 1 13 コード 2 CARD16 シーケンス数 4 CARD32 不良資源id 2 CARD16 小オプコード 1 CARD8 大オプコード 21 不使用 IDChoice 1 0 Error 1 14 コード 2 CARD16 シーケンス数 4 CARD32 不良資源id 2 CARD16 小オプコード 1 CARD8 大オプコード 21 不使用 Name 1 0 Error 1 15 コード 2 CARD16 シーケンス数 4 不使用 2 CARD16 小オプコード 1 CARD8 大オプコード 21 不使用 Length 1 0 Error 1 16 コード 2 CARD16 シーケンス数 4 不使用 2 CARD16 小オプコード 1 CARD8 大オプコード 21 不使用 Implementation 1 0 Error 1 17 コード 2 CARD16 シーケンス数 4 不使用 2 CARD16 小オプコード 1 CARD8 大オプコード 21 不使用 〔キーボード〕KEYCODE値は常に7よりも大きく
(256よりも小さい)。ビット#x10000000
セットを持つKEYSYMは、ベンダー指定として予約
される。標準KEYSYM値の名前及び符号化は付録F
内に含まれる。 〔ポインタ〕BUTTONは1を持つ番号を持つストリ
ングである。〔定義済みアトム〕(Predefined Atoms) PRIMARY 1 SECONDARY 2 ARC 3 ATOM 4 BITMAP 5 CARDINAL 6 COLORMAP 7 CURSOR 8 CUT−BUFFER0 9 CUT−BUFFER1 10 CUT−BUFFER2 11 CUT−BUFFER3 12 CUT−BUFFER4 13 CUT−BUFFER5 14 CUT−BUFFER6 15 CUT−BUFFER7 16 DRAWABLE 17 FONT 18 INTEGER 19 PIXMAP 20 POINT 21 RECTANGLE 22 RESOURCE−MANAGER 23 RGB−COLOR−MAP 24 RGB−BEST−MAP 25 RGB−BLUE−MAP 26 RGB−DEFAULT−MAP 27 RGB−GRAY−MAP 28 RGB−GREEN−MAP 29 RGB−RED−MAP 30 STRING 31 VISUALID 32 WINDOW 33 WM−COMMAND 34 WM−HINTS 35 WM−CLIENT−MACHINE 36 WM−ICON−NAME 37 WM−ICON−SIZE 38 WM−NAME 39 WM−NORMAL−HINTS 40 WM−SIZE−HINTS 41 WM−ZOOM−HINTS 42 MIN−SPACE 43 NORM−SPACE 44 MAX−SPACE 45 END−SPACE 46 SUPERSCRIPT−X 47 SUPERSCRIPT−Y 48 SUBSCRIPT−X 49 SUBSCRIPT−Y 50 UNDERLINE−POSITION 51 UNBDERLINE−THICKNESS 52 STRIKEOUT−ASCENT 53 STRIKEOUT−DESCENT 54 ITALIC−ANGLE 55 X−HEIGHT 56 QUAD−WIDTH 57 WEIGHT 58 POINT−SIZE 59 RESOLUTION 60 COPYRIGHT 61 NOTICE 62 FONT−NAME 63 FAMILY−NAME 64 FULL−NAME 65 CAP−HEIGHT 66 WM−CLASS 67 WM−TRANSIENT−FOR 68 〔接続セット アップ〕(Connection Setup) TCP接続では、任意のホスト上のディスプレイは0か
ら始まる番号を与えられたストリングであり、ディスプ
レイNに対するサーバはポート6000+N上の接続を
聞き、これを受け入れる。DECネット接続では、任意
のホスト上のディスプレイは0からの番号を与えられた
ストリングであり、ディスプレイNに対するサーバ
は,”XSX”をNの10進表現と鎖状につなぐことに
よって得られるオブジェクト名、例えばXSX0及びX
SX1上の接続を聞き、これを受け入れる。接続のセッ
トアップにおいて、クライアントによって送られる情報
は、以下の通りである。 1 バイト順序 #x42 MSBが最初 #x6C LSBが最初 1 不使用 2 CARD16 プロトコル大バージョン 2 CARD16 プロトコル小バージョン 2 n 許可プロトコル名称の長さ 2 d 許可プロトコルデータの長さ 2 不使用 n STRING8 許可プロトコル名称 p 不使用、p=pad(n) d STRING8 許可プロトコルデータ q 不使用、q=pad(d) プロトコル内に明確に示されない限り、クライアントに
よって送られた全ての16−ビット及び32ビット量は
指定されたバイト順に送信されなければならず、サーバ
によってリターンされた全ての16−ビット及び32−
ビット量は、このバイト順に送信される。 許可が下りなかったときクライアントによって受信され
る情報は以下の通りである: 1 0 失敗 1 n バイト中の理由の長さ 2 CARD16 プロトコル大バージョン 2 CARD16 プロトコル小バージョン 2 (n+p)/4 追加データの4バイト単位中の 長さ n STRING8 理由 p 不使用、p=pad(n) 許可が下りたときにクライアントによって受信される情報は以下の通りである 。 1 1 成功 1 不使用 2 CARD16 プロトコル大バージョン 2 CARD16 プロトコル小バージョン 2 8+2n+(v+p+m)/4 追加データの4バイト単位中の 長さ 4 CARD32 リリース数 4 CARD32 資源idベース 4 CARD32 資源idマスク 4 CARD32 モーションバッファサイズ 2 v ベンダの長さ 2 CARD16 最大要求長さ 1 CARD8 ルート中SCREENの数 1 n 画素マップフォーマット中のF ORMATの数 1 画像バイト順序 0 LSBが最初 1 MSBが最初 1 ビットマップ・フォーマットビ ット順序 0 LeastSignificant 1 MostSignificant 1 CARD8 ビットマップフォーマット走査 線ユニット 1 CARD8 ビットマップフォーマット走査 線パッド 1 KEYCODE 最小キーボード 1 KEYCODE 最大キーボード 4 不使用 v STRING8 ベンダ p 不使用、p=pad(v) 8n LISTofFORMAT 画素マップフォーマット m LISTofSCREEN ルート(mはいつも4の倍数) FORMAT 1 CARD8 深さ 1 CARD8 画素あたりビット 1 CARD8 走査線パッド 5 不使用 SCREEN 4 WINDOW ルート 4 COLORMAP 省略時カラーマップ 4 CARD32 白画素 4 CARD32 黒画素 4 SETofEVENT 現在の入力マスク 2 CARD16 画素中の幅 2 CARD16 画素中の高さ 2 CARD16 ミリ単位幅 2 CARD16 ミリ単位高さ 2 CARD16 最小導入マップ 2 CARD16 最大導入マップ 4 VISUALID 視覚ルート 1 支援記憶 0 Never 1 WhenMapped 2 Always 1 BOOL セーブ‐下 1 CARD8 ルート深さ 1 CARD8 許可深さ中DEPTHsの数 n LISTofDEPTH 許可深さ(nは常に4の倍数) DEPTH 1 CARD8 深さ 1 不使用 2 n 視覚中VISUALTYPE の数 4 不使用 24n LISTofVISUALTYPE 視覚 VISUALTYPE 4 視覚id 1 クラス 0 StaticGray 1 GrayScale 2 StaticColor 3 PseudoColor 4 TrueColor 5 DirectColor 1 CARD8 rgb値あたりのビット 2 CARD16 カラーマップ・エントリー 4 CARD32 赤マスク 4 CARD32 緑マスク 4 CARD32 青マスク 4 不使用Protocol Encoding [Syntactic Conventions] All numbers are decimal unless a prefix of #x is given, and with this prefix is hexadecimal (base 16). is there. The general syntax used to describe requests, responses, errors, events and complex types is as follows: NameofThing Encoding Form (encode-form) ... Encoding Form (encode-form) Each Encoding Form Describes a single element. The elements are described in the protocol as follows: Name: TYPE The encoding format is as follows: N TYPE Name N is the number of bytes occupied in the data stream, TYPE
E is a translation of these bytes. For example: Depth: CARD8 becomes: 1 CARD8 Depth For elements with static numeric values, this encoding format is: N value name value always has N-byte sign. Translated as no integer. For example, the first two bytes of a window error are always 0 (indicating a general error) and 3 (indicating a window error specifically): 1 0 error 1 3 Within the protocol for code elements Is described as follows: Name {Name1 ... , NameI} This encoding format is as follows: The value is always translated as an N-byte unsigned integer. Note that the size of N is often larger than the exact size required to encode these values. For example, the class {InputOutput, InputOnly, CopyFromParent} is as follows: 2 Class 0 CopyFromParent 1 InputOutput 2 InputOnly elements are described in the protocol as follows: NAME: TYPEatAlternateAlternateAlternate. The format is as follows: N TYPE NAME value 1 Alternative 1 ... Value I Alternate I TYPE An alternative value is guaranteed so as not to conflict with the encoding of the TYPE. For example: Destination: WINDOW or PointerWindow
Or InputFocus is as follows. 4 WINDOW Destination 0 PointerWindow 1 InputFocus The elements are described in the protocol as follows: Value Mask: BITMASK The encoding format is as follows: N BITMASK Value Mask mask1 mask-name1 ... mask-maskI maskI. The individual bits in the mask are designated and named, and N is 2 or 4. The most significant bit in BITMASK is reserved for use in defining a chained (multi-word) bitmask as an extended augmented existing core request. The exact translation of this bit is not yet defined here. However, a possible mechanism is to indicate that 1-bit is followed by another N-byte bit mask, and the bits in the mask as a whole are translated from the least significant to the most significant in N-byte units. N byte units are translated in stream order, and the mask as a whole contains byte bytes within each N byte unit.
Swapped. For LISTofVALUE encoding, the request is followed by a section of the form:
List one coding format for ALUE: VALUES coding format ... Coding format NAME in each coding format corresponds to BITMA.
The key to the SK bit. VALUE is always 4
Occupies bytes, but the number of bytes specified in the encoded form indicates how many least significant bytes are actually used; the remaining bytes are unused and their value does not matter. In various cases, the number of bytes occupied by one element is specified by a single lowercase variable name, rather than by a particular number, and often other elements are represented by simple numeric expressions containing these variables. It has a specified value. Elements specified with such expressions are always translated as unsigned integers. The ranges for these variables are usually simply enclosure requests, responses, errors, events,
Alternatively, it is a composite byte. For example: 2 3 + n Request Length 4n LISTofPOINT Points For unused bytes (the value of this byte is undefined and does not matter), the encoding format is typically: N unused bytes When the number of is variable, the encoding format is typically as follows. p unused, p = pad (E) where E is some expression and pad (E) is E
Is the number of bytes required to round to a multiple of 4. pad (E) = (4- (Emod4)) mod4 [Common Types] LISTofFOO In this document, the notation LIST is strictly F.
Means a certain number of iterations of OO encoding; the actual length of the list is encoded elsewhere. SETofFOO One set is always represented by a bitmask, 1
-The bit indicates presence in the set. BITMASK: CARD32 WINDOW: CARD32 PIXMAP: CARD32 CURSOR: CARD32 FONT: CARD32 GCONTEXT: CARD32 COLORMAP: CARD32 bit 16: VAR8: CARD32 CODE: 8 bits: CARD32 CODE: 8 bits: CARD32 CODE: 8 bits: CARD32 CODE: 8 bits: CARD32 CODE: 8 bits: 8 bits: CARD 32 Integer 32: 32-bit signed integer CARD8: 8-bit unsigned integer CARD16: 16-bit unsigned integer CARD32: 32-bit unsigned integer TIMESTAMP: CARD32 BITGRAVITY 0 Forget 1 Northwest 2 North 3 NorthEast 5 Center 6 East 7 SouthWest 8 South 9 SouthEast 10 Static WINGRAVITY 0 Unmap 1 NorthWest 2 North 3 NorthEast 4 Wast 5 Center 6 East 7 SouthWest 8 South 9 SouthEast 10 Static BOOL 0 False 1 True SETofEVENT # x00000001 KeyPress # x00000002 KeyRelease # x00000004 ButtonPress # x00000008 Button Release # x00000010 EnterWindow # x00000020 LeaveWindow # x00000040 PointerMotion # x000 0080 PointerMotion
Hint # x00000100 Button1Motion # x00000200 Button2Motion # x00000400 Button3Motion # x00008000 Button5b000x000b000x000V000x0000p000x000E0000p000E000S000th000Motion # x0000000
nge # x00020,000 StructureNoti
fy # x00040000 ResizeRedirec
t # x00080000 SubstructureN
notify # x0010000 SubstructureR
direct # x00200000 FocusChange # x00400000 PropertyChange
e # x00800000 ColormapChange
e # x01000000 OwnerGrabButt
on # xfe000000 Not used but must be 0 The SETofPOINTEREVENT encoding is the same as SETofEVENT except: # xffff8003 Not used but must be 0 SETofDEVICEENT encoding is the same as SETofEVENT except in is: # xffffc0b0's not in use must be a 0 KEYSYM: CARA32 KEYCODE: CARD8 BUTTON: CARA8 SETofKEYBUTMASK # x0001 Shift # x0002 Lock # x0004 Control # x0008 Mod1 # x0010 Mod2 # x0020 Mod3 # x0040 Mod4 # x0080 Mod5 # x0100 Button1 # X02 0 Button2 # x0400 Button3 # x0800 Button4 # x1000 Button5 # xc000 but not used but must be 0 SETofKEYMASK coding, except for the following, SETofKEYBUTMA
Identical to SK: # xff00 Not used but must be 0 STRING8: LISTOfCARD8 STR16 LISTofCHAR2B CHAR2B 1 CARD8 BYTE1 1 CARD8 BY2 CONT2x16C2 ORD2 INT16T2AR2 16T2 2 1616 2R16T2 ORD16D2INT16G2 CONT16x2R1616D2INT16G2C16D2IN16D2INT16INT2INT16G2CT16L2 1616 2 2 16 16 2 2 16 16 2 2 16 ARC 2 INT16 x 2 INT16 y 2 CARD16 Width 2 CARD16 Height 2 INT16 Angle 1 2 INT16 Angle 2 HOST 1 Family 0 Internet 1 DECnet 2 Chaos 1 Not used 2 n Address length n LISTp by address Not used. (N) STR 1 Name in n bytes Length n STRING8 Name [ (Errors) Request 1 0 Error 1 1 code 2 CARD16 sequence number 4 not used 2 CARD16 small opcode 1 CARD8 large opcode 21 not used Value 1 0 Error 1 2 code 2 CARD16 sequence number 4 <32-bits> bad value CARD16 small opcode 1 CARD8 large opcode 21 not used Windows 10 0 Error 1 3 code 2 CARD16 number of sequences 4 CARD32 bad resource id 2 CARD16 small opcode 1 CARD8 large opcode 21 not used Pixmap 1 0 C16 UR2 C4D code 4 CORD 2 CARD Bad resource id 2 CARD16 Small opcode 1 CARD8 Large opcode 21 Not used Atom 10 Erro r 1 5 code 2 CARD16 sequence number 4 CARD32 bad atom id 2 CARD16 small opcode 1 CARD8 large opcode 21 not used Curser 1 0 Error 1 6 code 2 CARD16 sequence number 4 CARD32 bad resource id 2 CARD16 small opcode 1 large code 8 CARD Used Font 1 0 Error 1 7 Code 2 CARD16 Sequence number 4 CARD32 Bad resource id 2 CARD16 Small opcode 1 CARD8 Large opcode 21 Not used Match 1 0 Error 1 8 code 2 CARD16 Sequence number 4 Not used 2 CARD 16 large opcode Small CORD16 small opcode 21 Not Used Drawable 1 0 Error 1 9 Code 2 CARD16 Sike Number 4 CARD32 bad resource id 2 CARD16 small opcode 1 CARD8 large opcode 21 not used Access 1 0 Error 1 10 code 2 CARD16 sequence number 4 not used 2 CARD16 small opcode 1 CARD8 large opcode 21 not used Alloc 1 1 or 11 Er code 2 CARD16 Number of sequences 4 Not used 2 CARD16 Small opcode 1 CARD8 Large opcode 21 Not used Colormap 1 0 Error 1 12 code 2 CARD16 Number of sequences 4 CARD32 Bad resource id 2 CARD16 Small opcode 1 CARD8 Large opcode 21 r1 ortGcontex 13 code 2 CARD16 number of sequences 4 CARD32 bad resource id 2 CAR D16 Small opcode 1 CARD8 Large opcode 21 Not used IDChoice 1 0 Error 1 14 code 2 CARD16 Number of sequences 4 CARD32 Bad resource id 2 CARD16 Small opcode 1 CARD8 Large opcode 21 Not used Name 1 0 Error 4 COR 16 D 2 CARD 16 Code 2 Used 2 CARD16 Small opcode 1 CARD8 Large opcode 21 Not used Length 1 0 Error 1 16 code 2 CARD16 Number of sequences 4 Not used 2 CARD16 Small opcode 1 CARD8 Large opcode 21 Not used Implementation 1 0 Error 4 COR 1 16 Code 2 17 Code 2 Use 2 CARD16 Small opcode 1 CARD8 Large opcode 21 Use [Keyboard] KEYCODE value is always greater than 7 (less than 256). Bit # x10000000
KEYSYM with a set is reserved as a vendor designation. See Appendix F for the name and encoding of standard KEYSYM values.
Contained within. [Pointer] BUTTON is a string having a number of 1. [Predefined atom] (Predefined Atoms) PRIMARY 1 SECONDARY 2 ARC 3 ATOM 4 BITMAP 5 CARDINAL 6 COLORMAP 7 CURSOR 8 CUT - BUFFER0 9 CUT - BUFFER1 10 CUT - BUFFER2 11 CUT - BUFFER3 12 CUT - BUFFER4 13 CUT - BUFFER5 14 CUT - BUFFER6 15 CUT - BUFFER7 16 DRAWABLE 17 FONT 18 INTEGER 19 PIXMAP 20 POINT 21 RECTANGLE 22 RESOURCE - MANAGER 23 RGB - COLOR - MAP 24 RGB - BEST - MAP 25 RGB - BLUE - MAP 26 RGB - DEFAULT - MA P 27 RGB - GRAY - MAP 28 RGB - GREEN - MAP 29 RGB - RED - MAP 30 STRING 31 VISUALID 32 WINDOW 33 WM - COMMAND 34 WM - HINTS 35 WM - CLIENT - MACHINE 36 WM - ICON - NAME 37 WM - ICON - SIZE 38 WM - NAME 39 WM - NORMAL - HINTS 40 WM - SIZE - HINTS 41 WM - ZOOM - HINTS 42 MIN - SPACE 43 NORM - SPACE 44 MAX - SPACE 45 END - SPACE 46 SUPERSCRIPT - X 47 SUPERSCRIPT - Y 48 SUBSCRIPT - X 49 SUBSCRIPT - Y 50 U NDERLINE - POSITION 51 UNBDERLINE - THICKNESS 52 STRIKEOUT - ASCENT 53 STRIKEOUT - DESCENT 54 ITALIC - ANGLE 55 X - HEIGHT 56 QUAD - WIDTH 57 WEIGHT 58 POINT - SIZE 59 RESOLUTION 60 COPYRIGHT 61 NOTICE 62 FONT - NAME 63 FAMILY - NAME 64 FULL - NAME 65 CAP - HEIGHT 66 WM - CLASS 67 WM - TRANSENT-FOR 68 [Connection Setup] In a TCP connection, the display on any host is a numbered string beginning with 0 and the display N. To The corresponding server listens for and accepts connections on port 6000 + N. In a DEC Net connection, the display on any host is a string numbered from 0 and the server for display N is the object name obtained by chaining "XSX" with the decimal representation of N. , For example XSX0 and X
Listen for and accept the connection on SX1. The information sent by the client in setting up the connection is as follows. 1 byte order # x42 MSB first # x6C LSB first 1 Not used 2 CARD16 protocol large version 2 CARD16 protocol small version 2 n Allowed protocol name length 2 d Allowed protocol data length 2 Not used n STRING8 Allowed protocol name p not used, p = pad (n) d STRING8 admission protocol data q not used, q = pad (d) All 16-bit and 32-bit quantities sent by the client are specified unless explicitly indicated in the protocol. All 16-bits and 32-
The bit amount is transmitted in this byte order. The information received by the client when it is not authorized is as follows: 1 0 failure 1 length of reason in n bytes 2 CARD16 protocol large version 2 CARD16 protocol small version 2 (n + p) / 4 of additional data Length in units of 4 bytes n STRING8 Reason p Not used, p = pad (n) The information received by the client when permission is granted is as follows. 1 1 Success 1 Not used 2 CARD16 protocol large version 2 CARD16 protocol small version 2 8 + 2n + (v + p + m) / 4 Length of 4 bytes in additional data 4 CARD32 number of releases 4 CARD32 resource id base 4 CARD32 resource id mask 4 CARD32 motion Buffer size 2 v Vendor length 2 CARD16 Maximum required length 1 CARD8 Number of SCREEN in route 1 n Number of F FORMAT in pixel map format 1 Image byte order 0 LSB first 1 MSB first 1 Bitmap format view Order 0 LeastSignificant 1 MostSignificant 1 CARD8 Bitmap format Scan line unit 1 CARD8 Bitmap format Alignment pad 1 KEYCODE Minimum keyboard 1 KEYCODE Maximum keyboard 4 Not used v STRING8 Vendor p not used, p = pad (v) 8n LISTofFORMAT Pixel map format m LISTofSCREEN root (m is always a multiple of 4) CORD8DARMAT Bits Per Pixel 1 CARD8 Scan Line Pad 5 Not Used SCREEN 4 WINDOW Root 4 COLORMAP Default Color Map 4 CARD32 White Pixels 4 CARD32 Black Pixels 4 SETofEVENT Current Input Mask 2 CARD16 Pixel Width 2 CARD16 Pixel Height 2 CARD 2 CARD Millimeter unit width 2 CARD16 Millimeter unit height 2 CARD16 Minimum introduction map 2 CARD16 maximum introduction map VISUALID Visual Root 1 Support Memory 0 Never 1 WhenMapped 2 Always 1 BOOT Save-Lower 1 CARD8 Root Depth 1 CARD8 Number of Depths in Medium Depth n LISTofDEPTH 1 Depth of depth 8 (n is 4) Not used 2 n Number of VISUAL TYPE in visual 4 Not used 24 n LISTof VISUAL TYPE PE Visual VISUAL TYPE 4 Visual id 1 Class 0 Static Gray 1 Cray rg sr Cor 2 C ur s s s s s s s s s s s s s s s s s 2 s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s 4 s s s s s s s s t s s s s s s s s s s s s s s s s s s s s s s s sssssssss | 4 CARD32 green mask 4 CARD32 blue mask 4 not used
【要求】(Requests) CreateWindow 1 1 オプコード 1 CARD8 深さ 2 8+n 要求長さ 4 WINDOW wid 4 WINDOW 親 2 INT16 x 2 INT16 y 2 CARD16 幅 2 CARD16 高さ 2 CARD16 境界幅 2 クラス 0 CopyFromParent 1 InputOutput 2 InputOnly 4 VISUALID 視覚 0 CopyFromParent 4 BITMASK 視覚マスク(1にセットされた nビットを有する) #x00000001 背景‐画素マップ #x00000002 背景‐画素 #x00000004 境界‐画素マップ #x00000008 境界‐画素 #x00000010 ビット‐グラビティ #x00000020 win‐グラビティ #x00000040 支援記憶 #x00000080 支援プレーン #x00000100 支援画素 #x00000200 オーバライド‐再指示 #x00000400 セーブ‐下 #x00000800 事象‐マスク #x00001000 伝播不可マスク #x00002000 カラーマップ #x00004000 カーソル 4n LISTofVALUE 値リスト VALUEs 4 PIXMAP 背景‐画素マップ 0 None 1 ParentRelative 4 CARD32 背景‐画素 4 PIXMAP 境界‐画素マップ 0 CopyFromParent 4 CARD32 境界‐画素 1 BITGRAVITY ビットグラビティ 1 WINGRAVITY winグラビティ 1 支援記憶 0 NotUseful 1 WhenMapped 2 Always 4 CARD32 支援‐プレーン 4 CARD32 支援‐画素 1 BOOL オーバライド‐再指示 1 BOOL セーブ下 4 SETofEVENT 事象マスク 4 SETofDEVICEEVENT 伝播不可マスク 4 COLORMAP カラーマップ 0 CopyFromParent 4 CURSOR カーソル 0 None ChangeWindowAttributes 1 2 オプコード 1 不使用 2 3+n 要求長さ 4 WINDOW ウィンドウ 4 BITMASK 価値マスク(1にセットされた nビットを有する) 符号化はCreateWindowの場合と同じである。 4n LISTofVALUE 価値リスト 符号化はCreateWindowの場合と同一である。 GetWindowAttributes 1 3 オプコード 1 不使用 2 2 要求長さ 4 WINDOW ウィンドウ => 1 1 Reply 1 支援記憶 0 NotUseful 1 WhenMapped 2 Always 2 CARD16 シーケンス数 4 3 応答長さ 4 VISUALID 視覚 2 クラス 1 InputOutput 2 InputOnly 1 BITGRAVITY ビットグラビティ 1 WINGRAVITY winグラビティ 4 CARD32 支援プレーン 4 CARD32 支援画素 1 BOOL セーブ下 1 BOOL マップは組込まれた 1 マップ状態 0 Unmapped 1 Unviewable 2 Viewable 1 BOOL オーバライド再指示 4 COLORMAP カラーマップ 0 None 4 SETofEVENT 全事象マスク 4 SETofEVENT あなたの事象マスク 2 SETofDEVICEEVENT 伝播不可マスク 2 不使用 DestroyWindow 1 4 オプコード 1 不使用 2 2 要求長さ 4 WINDOW ウィンドウ DestroySubwindows 1 5 オプコード 1 不使用 2 2 要求長さ 4 WINDOW ウィンドウ ChangeSaveSet 1 6 オプコード 1 モード 0 Inset 1 Delete 2 2 要求長さ 4 WINDOW ウィンドウ ReparentWindow 1 7 オプコード 1 不使用 2 4 要求長さ 4 WINDOW ウィンドウ 4 WINDOW 親 2 INT16 x 2 INT16 y MapWindow 1 8 オプコード 1 不使用 2 2 要求長さ 4 WINDOW ウィンドウ MapSubwindows 1 9 オプコード 1 不使用 2 2 要求長さ 4 WINDOW ウィンドウ Unmapwindow 1 10 オプコード 1 不使用 2 2 要求長さ 4 WINDOW ウィンドウ UnmapSubwindows 1 11 オプコード 1 不使用 2 2 要求長さ 4 WINDOW ウィンドウ ConfigureWindow 1 12 オプコード 1 不使用 2 3+n 要求長さ 4 WINDOW ウィンドウ 2 BITMASK 値マスク(1にセットされたn ビットを有する) #x0001 x #x0002 y #x0004 幅 #x0008 高さ #x0010 境界幅 #x0020 同胞 #x0040 スタックモード 2 不使用 4n LISTofVALUE 値リスト VALUEs 2 INT16 x 2 INT16 y 2 CARD16 幅 2 CARD16 高さ 2 CARD16 境界幅 4 WINDOW 同胞 1 スタックモード 0 Above 1 Below 2 Toplf 3 Bottomlf 4 Opposite CirculateWindow 1 13 オプコード 1 方向 0 RaiseLowest 1 LowerHighest 2 2 要求長さ 4 WINDOW ウィンドウ GetGeometry 1 14 オプコード 1 不使用 2 2 要求長さ 4 DRAWABLE 描画可能 => 1 1 Reply 1 CARD8 深さ 2 CARD16 シーケンス数 4 0 応答長さ 4 WINDOW ルート 2 INT16 x 2 INT16 y 2 CARD16 幅 2 CARD16 高さ 2 CARD16 境界幅 10 不使用 QueryTree 1 15 オプコード 1 不使用 2 2 要求長さ 4 WINDOW ウィンドウ => 1 1 Reply 1 不使用 2 CARD16 シーケンス数 4 n 応答長さ 4 WINDOW ルート 4 WINDOW 親 0 None 2 n 子中のfWINDOWの数 14 不使用 4n LISTofWINDOW 子 InternAtom 1 16 オプコード 1 BOOL only−if−exists 2 2+(n+p)/4 要求長さ 2 n 名称長さ 2 不使用 n STRING8 名称 p 不使用、p=pad(n) => 1 1 Reply 1 不使用 2 CARD16 シーケンス数 4 0 応答長さ 4 ATOM アトム 0 None 20 不使用 GetAtomName 1 17 オプコード 1 不使用 2 2 要求長さ 4 ATOM アトム => 1 1 Reply 1 不使用 2 CARD16 シーケンス数 4 (n+p)/4 応答長さ 2 n 名称長さ 22 不使用 n STRING8 名称 p 不使用、p=pad(n) ChangeProperty 1 18 オプコード 1 モード 0 Replace 1 Prepend 2 Append 2 6+(n+p)/4 要求長さ 4 WINDOW ウィンドウ 4 ATOM 特性 4 ATOM タイプ 1 CARD8 フォーマット 3 不使用 4 CARD32 フォーマット単位でのデータ長 (フォーマット=8に対しn) (フォーマット=16に対し n/2) (フォーマット=32に対し n/4) n LISTofBYTE データ (nはフォーマット=16に対し 2の倍数) (nはフォーマット=32に対し 4の倍数) p 不使用、p=pad(n) DeleteProperty 1 19 オプコード 1 不使用 2 3 要求長さ 4 WINDOW ウィンドウ 4 ATOM 特性 GetProperty 1 20 オプコード 1 BOOL 削除 2 6 要求長さ 4 WINDOW ウィンドウ 4 ATOM 特性 4 ATOM タイプ 0 AnyPropertyType 4 CARD32 長オフセット 4 CARD32 長い長さ => 1 1 Reply 1 CARD8 フォーマット 2 CARD16 シーケンス数 4 (n+p)/4 応答長さ 4 ATOM タイプ 0 None 4 CARD32 後バイト 4 CARD32 フォーマット単位での長さ値 (フォーマット=0に対し=0) (フォーマット=8に対し=n) (フォーマット=16に対し= n/2) (フォーマット=32に対し= n/4) 12 不使用 n LISTofBYTE 値 (フォーマット=0に対しnは0 ) (フォーマット=16に対しn は 2の倍数) (フォーマット=32に対しnは 4の倍数) p 不使用、p−pad(n) ListProperties 1 21 オプコード 1 不使用 2 2 要求長さ 4 WINDOW ウィンドウ => 1 1 Reply 1 不使用 2 CARD16 シーケンス数 4 n 応答長さ 2 n アトム中のATOMの数 22 不使用 4n LISTofATOM アトム SetSelectionOwner 1 22 オプコード 1 不使用 2 4 要求長さ 4 WINDOW オーナー 0 None 4 ATOM 選択 4 TIMESTAMP 時間 0 CurrentTime GetSelectionOwner 1 23 オプコード 1 不使用 2 2 要求長さ 4 ATOM 選択 => 1 1 Reply 1 不使用 2 CARD16 シーケンス数 4 0 応答長さ 4 WINDOW オーナー 0 None 20 不使用 ConvertSelection 1 24 オプコード 1 不使用 2 6 要求長さ 4 WINDOW 要求者 4 ATOM 選択 4 ATOM 目標 4 ATOM 特性 0 None 4 TIMESTAMP 時間 0 CurrentTime SendEvent 1 25 オプコード 1 BOOL 伝播 2 11 要求長さ 4 WINDOW 宛先 0 PointerWindow 1 InputFocus 4 SETofEVENT 事象マスク 32 事象 標準事象フォーマット(Events部参照) GrabPointer 1 26 オプコード 1 BOOL オーナー事象 2 6 要求長さ 4 WINDOW 把握ウィンドウ 2 SETofPOINTEREVENT 事象マスク 1 ポインタモード 0 Synchronous 1 Asynchronous 1 キーボードモード 0 Synchronous 1 Asynchronous 4 WINDOW 制限 0 None 4 CURSOR カーソル 0 None 4 TIMESTAMP 時間 0 CurrentTime => 1 1 Reply 1 ステータス 0 Success 1 AlreadyGrabbed 2 InvalidTime 3 NotViewable 4 Frozen 2 CARD16 シーケンス数 4 0 応答長さ 24 不使用 UngrabPointer 1 27 オプコード 1 不使用 2 2 要求長さ 4 TIMESTAMP 時間 0 CurrentTime GrabButton 1 28 オプコード 1 BOOL オーナー事象 2 6 要求長さ 4 WINDOW 把握ウィンドウ 2 SETofPOINTEREVENT 事象マスク 1 ポインタモード 0 Synchronous 1 Asynchronous 1 キーボードモード 0 Synchronous 1 Asynchronous 4 WINDOW 制限 0 None 4 CURSOR カーソル 0 None 1 BUTTON ボタン 0 AnyButton 1 不使用 2 SETofKEYMASK 修飾子 #x8000 AnyModifier UngrabButton 1 29 オプコード 1 BUTTON ボタン 0 AnyButton 2 3 要求長さ 4 WINDOW 把握ウィンドウ 2 SETofKEYMASK 修飾子 #x8000 AnyModifier 2 不使用 ChangeActivePointerGrab 1 30 オプコード 1 不使用 2 4 要求長さ 4 CURSOR カーソル 0 None 4 TIMESTAMP 時間 0 CurrentTime 2 SETofPOINTEREVENT 事象マスク 2 不使用 GrabKeyboard 1 31 オプコード 1 BOOL オーナー事象 2 4 要求長さ 4 WINDOW 把握ウィンドウ 4 TIMESTAMP 時間 0 CurrentTime 1 ポインタモード 0 Synchronous 1 Asynchronous 1 キーボードモード 0 Synchronous 1 Asynchronous 2 不使用 => 1 1 Reply 1 ステータス 0 Success 1 AlreadyGrabbed 2 InvalidTime 3 NotViewable 4 Frozen 2 CARD16 シーケンス数 4 0 応答長さ 24 不使用 UngrabKeyboard 1 32 オプコード 1 不使用 2 2 要求長さ 4 TEMISTAMP 時間 0 CurrentTime GrabKey 1 33 オプコード 1 BOOL オーナー事象 2 4 要求長さ 4 WINDOW 把握ウィンドウ 2 SETofKEYMASK 修飾子 #x8000 AnyModifier 1 KEYCODE キー 0 AnyKey 1 ポインタモード 0 Synchronous 1 Asynchronous 1 キーボードモード 0 Synchronous 1 Asynchronous 3 不使用 UngrabKey 1 34 オプコード 1 KEYCODE キー 0 AnyKey 2 3 要求長さ 4 WINDOW 把握ウィンドウ 2 SETofKEYMASK 修飾子 #x8000 AnyModifier 2 不使用 AllowEvents 1 35 オプコード 1 モード 0 AsynchPointer 1 SynchPointer 2 ReplayPointer 3 AsyncKeyboard 4 SyncKeyboard 5 ReplayKeyboard 6 AsyncBoth 7 SyncBoth 2 2 要求長さ 4 TIMESATMP 時間 0 CurrentTime GrabServer 1 36 オプコード 1 不使用 2 1 要求長さ UngrabServer 1 37 オプコード 1 不使用 2 1 要求長さ QueryPointer 1 38 オプコード 1 不使用 2 2 要求長さ 4 WINDOW ウィンドウ => 1 1 Reply 1 BOOL 同一スクリーン 2 CARD16 シーケンス数 4 0 応答長さ 4 WINDOW ルート 4 WINDOW 子 0 None 2 INT16 ルートx 2 INT16 ルートy 2 INT16 winx 2 INT16 winy 2 SETofKEYBUTMASK マスク 6 不使用 GetMotionEvents 1 39 オプコード 1 不使用 2 4 要求長さ 4 WINDOW ウィンドウ 4 TIMESTAMP スタート 0 CurrentTime 4 TIMESTAMP ストップ 0 CurrentTime => 1 1 Reply 1 不使用 2 CARD16 シーケンス数 4 2n 応答長さ 4 n 事象におけるTIMECOOR Dsの数 20 不使用 8n LISTofTIMECOORD 事象 TIMECOORD 4 TIMESTAMP 時間 2 CARD16 x 2 CARD16 y TranslateCoordinates 1 40 オプコード 1 不使用 2 4 要求長さ 4 WINDOW srcウィンドウ 4 WINDOW dstウィンドウ 2 INT16 src−x 2 INT16 src−y => 1 1 Reply 1 BOOL 同一スクリーン 2 CARD16 シーケンス数 4 0 応答長さ 4 WINDOW 子 0 None 2 INT16 dst−x 2 INT16 dst−y 16 不使用 WarpPointer 1 41 オプコード 1 不使用 2 6 要求長さ 4 WINDOW srcウィンドウ 0 None 4 WINDOW dstウィンドウ 0 None 2 INT16 src−x 2 INT16 src−y 2 CARD16 src幅 2 CARD16 src高さ 2 INT16 dst−x 2 INT16 dst−y SetlnputFocus 1 42 オプコード 1 反転 0 None 1 PointerRoot 2 Parent 2 3 要求長さ 4 WINDOW フォーカス 0 None 1 PointerRoot 4 TIMESTAMP 時間 0 CurrentTime GetlnputFocus 1 43 オプコード 1 不使用 2 1 要求長さ => 1 1 Reply 1 反転 0 None 1 PointerRoot 2 Parent 2 CARD16 シーケンス数 4 0 応答長さ 4 WINDOW フォーカス 0 None 1 PointerRoot 20 不使用 QueryKeymap 1 44 オプコード 1 不使用 2 1 要求長さ => 1 1 Reply 1 不使用 2 CARD16 シーケンス数 4 2 応答長さ 32 LISTofCARD8 キー OpenFont 1 45 オプコード 1 不使用 2 3+(n+p)/4 要求長さ 4 FONT fid 2 n 名称長さ 2 不使用 n STRING8 名称 p 不使用、p=pad(n) CloseFont 1 46 オプコード 1 不使用 2 2 要求長さ 4 FONT フォント QueryFont 1 47 オプコード 1 不使用 2 2 要求長さ 4 FONTABLE フォント => 1 1 Reply 1 不使用 2 CARD16 シーケンス数 4 7+2n+3m 応答長さ 12 CHARINFO 最小境界 4 不使用 12 CHARINFO 最大境界 4 不使用 2 CARD16 最小文字又はバイト2 2 CARD16 最大文字又はバイト2 2 CARD16 文字省略 2 n 特性中のFONTPROPの 数 1 描画方向 0 LeftToRight 1 RightToLeft 1 CARD8 最小バイト1 1 CARD8 最大バイト1 1 BOOL 全文字存在 2 INT16 フォント上昇 2 INT16 フォント下降 4 m char infos中の CHARINFOの数 8n LISTofFONTPROP 特性 12m LISTofCHARINFO char−infos FONTPROP 4 ATOM 名称 4 <32−bits> 価値 CHARINFO 2 INT16 左側ベアリング 2 INT16 右側ベアリング 2 INT16 文字幅 2 INT16 上昇 2 INT16 下降 2 CARD16 アトリビュート QueryTaxExtents 1 48 オプコード 1 BOOL 奇数長、P=2ならば真 2 2+(2n+p)/4 要求長さ 4 FONTABLE フォント 2n STRING16 ストリング p 不使用、p=pad(2n) => 1 1 Reply 1 描画方向 0 LeftToRight 1 RightToLeft 2 CARD16 シーケンス数 4 0 応答長さ 2 INT16 フォント上昇 2 INT16 フォント下降 2 INT16 全体上昇 2 INT16 全体下降 4 INT32 全体幅 4 INT32 全体左 4 INT32 全体右 4 不使用 ListFonts 1 49 オプコード 1 不使用 2 2+(n+p)/4 要求長さ 2 CARD16 最大名称 2 n パターン長さ n STRING8 パターン p 不使用、p=pad(n) => 1 1 Reply 1 不使用 2 CARD16 シーケンス数 4 (n+p)/4 応答長さ 2 CARD16 名称におけるSTRsの数 22 不使用 n LISTofSTR 名称 p 不使用、p=pad(n) ListFontsWithlnfo 1 50 オプコード 1 不使用 2 2+(n+p)/4 要求長さ 2 CARD16 最大名称 2 n パターン長さ n STRING8 パターン p 不使用、p=pad(n) =>(シリーズ中の最新のものを除く) 1 1 Reply 1 n バイト中名称長さ 2 CARD16 シーケンス数 4 7+2m+(n+p)/4 応答長さ 12 CHARINFO 最小境界 4 不使用 12 CHARINFO 最大境界 4 不使用 2 CARD16 最小文字又はバイト2 2 CARD16 最大文字又はバイト2 2 CARD16 文字省略 2 m 特性中のFONTPROPの 数 1 描画方向 0 LeftToRight 1 RightToLeft 1 CARD8 最小バイト1 1 CARD8 最大バイト1 1 BOOL 全文字存在 2 INT16 フォント上昇 2 INT16 フォント下降 4 CARD32 応答ヒント 8m LISTofFONTPROP 特性 n STRING8 名称 p 不使用、p=pad(n) FONTPROP 符号化はQueryFontの場合と同一である CHARINFO 符号化はQueryFontの場合と同一である =>(シリーズ中最新) 1 1 Reply 1 0 最新応答表示子 2 CARD16 シーケンス数 4 7 応答長さ 52 不使用 SetFontPath 1 51 オプコード 1 不使用 2 2+(n+p)/4 要求長さ 2 CARD16 パス中のSTRの数 2 不使用 n LISTofSTR パス p 不使用、p=pad(n) GetFontPath 1 52 オプコード 1 不使用 2 1 要求リスト => 1 1 Reply 1 不使用 2 CARD16 シーケンス数 4 (n+p)/4 応答長さ 2 CARD16 パス中のSTRsの数 22 不使用 n LISTofSTR パス p 不使用、p=pad(n) CreatePixmap 1 53 オプコード 1 CARD8 深さ 2 4 要求長さ 4 PIXMAP ページ識別子 4 DRAWABLE 描画可能 2 CARD16 幅 2 CARD16 高さ FreePixmap 1 54 オプコード 1 不使用 2 2 要求長さ 4 PIXMAP 画素マップ CreateGC 1 55 オプコード 1 不使用 2 4+n 要求長さ 4 GCONTEXT cid 4 DRAWABLE 描画可能 4 BITMASK 値マスク(1にセットされたn ビットを有する) #x00000001 機能 #x00000002 プレーンマスク #x00000004 前景 #x00000008 背景 #x00000010 線幅 #x00000020 線スタイル #x00000040 capスタイル #x00000080 joinスタイル #x00000100 fillスタイル #x00000200 fillルール #x00000400 タイトル #x00000800 点描 #x00001000 タイル−点描−x原点 #x00002000 タイル−点描−y原点 #x00004000 フォント #x00008000 サブウィンドウモード #x00010000 グラフィック提示 #x00020000 x原点をクリップ #x00040000 y原点をクリップ #x00080000 クリップマスク #x00100000 ダッシュオフセット #x00200000 ダッシュ #x00400000 arcモード 4n LISTofVALUE 値リスト VALUEs 1 機能 0 Clear 1 And 2 AndReverse 3 Copy 4 AndInverted 5 NoOp 6 Xor 7 Or 8 Nor 9 Equiv 10 Invert 11 OrReverse 12 CopyInverted 13 OrInverted 14 Nand 15 Set 4 CARD32 プレーンマスク 4 CARD32 前景 4 CARD32 背景 2 CARD16 線幅 1 線スタイル 0 Solid 1 OnOffDash 2 DoubleDash 1 capスタイル 0 NotLast 1 Butt 2 Round 3 Projecting 1 joinスタイル 0 Miter 1 Round 2 Bevel 1 fillスタイル 0 Solid 1 Tiled 2 Stippled 3 OpaqueStippled 1 fillルール 0 EvenOdd 1 Winding 4 PIXMAP タイトル 4 PIXMAP 点描 2 INT16 タイトル−点描−x原点 2 INT16 タイトル−点描−y原点 4 FONT フォント 1 サブウィンドウモード 0 ClipByChildren 1 IncludeInferiors 1 BOOL グラフィック提示 2 INT16 x原点をクリップ 2 INT16 y原点をクリップ 4 PIXMAP クリップマスク 0 None 2 CARD16 ダッシュオフセット 1 CARD8 ダッシュ 1 arcモード 0 Chord 1 PieSlice ChangeGC 1 56 オプコード 1 不使用 2 3+n 要求長さ 4 GCONTEXT gc 4 BITMASK 値マスク(1にセットされたn ビットを持つ) 符号化はCreateGCの場合と同一である 4n LISTofVALUE 符号化はCreateGCの場合と同一である CopyGC 1 57 オプコード 1 不使用 2 4 要求長さ 4 GCONTEXT src−gc 4 GCONTEXT dst−gc 4 BITMASK 値マスク 符号化はCreateGCの場合と同一である SetDashes 1 58 オプコード 1 不使用 2 3+(n+p)/4 要求長さ 4 GCONTEXT gc 2 CARD16 ダッシュオフセット 2 n ダッシュの長さ n LISTofCARDS ダッシュ p 不使用、p=pad(n) SetClipRectangles 1 59 オプコード 1 配列 0 UnSorted 1 YSorted 2 YXSorted 3 YXBanded 2 3+2n 要求長さ 4 GCONTEXT gc 2 INT16 x原点をクリップ 2 INT16 y原点をクリップ 8n LISTofRECTANGLE 長方形 FreeGC 1 60 オプコード 1 不使用 2 2 要求長さ 4 GCONTEXT gc ClearArea 1 61 オプコード 1 BOOL 提示 2 4 要求長さ 4 WINDOW ウィンドウ 2 INT16 x 2 INT16 y 2 CARD16 幅 2 CARD16 高さ CopyArea 1 62 オプコード 1 不使用 2 7 要求長さ 4 DRAWABLE src描画可能 4 DRAWABLE dst描画可能 4 GCONTEXT gc 2 INT16 src−x 2 INT16 src−y 2 INT16 dst−x 2 INT16 dst−y 2 CARD16 幅 2 CARD16 高さ CopyPlane 1 63 オプコード 1 不使用 2 8 要求長さ 4 DRAWABLE src描画可能 4 DRAWABLE dst描画可能 4 GCONTEXT gc 2 INT16 src−x 2 INT16 src−y 2 INT16 dst−x 2 INT16 dst−y 2 CARD16 幅 2 CARD16 高さ 4 CARD32 ビットプレーン PolyPoint 1 64 オプコード 1 座標モード 0 Origin 1 Previous 2 3+n 要求長さ 4 DRAWABLE 描画可能 4 GCONTEXT gc 4n LISTofPOINT 点 PolyLine 1 65 オプコード 1 座標モード 0 Origin 1 Previous 2 3+n 要求長さ 4 DRAWABLE 描画可能 4 GCONTEXT gc 4n LISTofPOINT 点 PolySegment 1 66 オプコード 1 不使用 2 3+2n 要求長さ 4 DRAWABLE 描画可能 4 GCONTEXT gc 8n LISTofSEGMENT セグメント SEGMENT 2 INT16 x1 2 INT16 y1 2 INT16 x2 2 INT16 y2 PolyRectangle 1 67 オプコード 1 不使用 2 3+2n 要求長さ 4 DRAWABLE 描画可能 4 GCONTEXT gc 8n LISTofRECTANGLE 長方形 PolyArc 1 68 オプコード 1 不使用 2 3+3n 要求長さ 4 DRAWABLE 描画可能 4 GCONTEXT gc 12n LISTofARC arcs FillPoly 1 69 オプコード 1 不使用 2 4+n 要求長さ 4 DRAWABLE 描画可能 4 GCONTEXT gc 1 形 0 Complex 1 Nonconvex 2 Convex 1 座標モード 0 Origin 1 Previous 2 不使用 4n LISTofPOINT 点 PolyFillRectangle 1 70 オプコード 1 不使用 2 3+2n 要求長さ 4 DRAWABLE 描画可能 4 GCONTEXT gc 8n LISTofRECTANGLE 長方形 PolyFillArc 1 71 オプコード 1 不使用 2 3+3n 要求長さ 4 DRAWABLE 描画可能 4 GCONTEXT gc 12n LISTofARC arcs Putlmage 1 72 オプコード 1 フォーマット 0 Bitmap 1 XYPixmap 2 ZPixmap 2 6+(n+p)/4 要求長さ 4 DRAWABLE 描画可能 4 GCONTEXT gc 2 CARD16 幅 2 CARD16 高さ 2 INT16 dst−x 2 INT16 dst−y 1 CARD8 左パッド 1 CARD8 深さ 2 不使用 n LISTofBYTE データ p 不使用、p=pad(n) Getlmage 1 73 オプコード 1 フォーマット 1 XYPixmap 2 ZPixmap 2 5 要求長さ 4 DRAWABLE 描画可能 2 INT16 x 2 INT16 y 2 CARD16 幅 2 CARD16 高さ 4 CARD32 プレーンマスク => 1 1 Reply 1 CARD8 深さ 2 CARD16 シーケンス数 4 (n+p)/4 応答長さ 4 VISUALID 視覚 0 None 20 不使用 n LISTofBYTE データ p 不使用、p=pad(n) PolyText8 1 74 オプコード 1 不使用 2 4+(n+p)/4 要求長さ 4 DRAWABLE 描画可能 4 GCONTEXT gc 2 INT16 x 2 INT16 y n LISTofTEXTITEM8 項目 p 不使用、p=pad(n) (pはいつも0か1) TEXTITEM8 1 n ストリング長さ(255にはな り得ない) 1 INT8 デルタ n STRING8 ストリング or 1 255 フォントシフト表示子 1 フォントバイト3(最上位) 1 フォントバイト2 1 フォントバイト1 1 フォントバイト0(最下位) PolyText16 1 75 オプコード 1 不使用 2 4+(n+p)/4 要求長さ 4 DRAWABLE 描画可能 4 GCONTEXT gc 2 INT16 x 2 INT16 y n LISTofTEXTITEM16 項目 p 不使用、p=pad(n) (pはいつも0か1) TEXTITEM16 1 n ストリング中のCHAR2Bs の数(255にはなり得ない) 1 INT8 デルタ n STRING16 ストリング or 1 255 フォント表示子 1 フォントバイト3(最上位) 1 フォントバイト2 1 フォントバイト1 1 フォントバイト0(最下位) ImageText8 1 76 オプコード 1 n ストリング長さ 2 4+(n+p)/4 要求長さ 4 DRAWABLE 描画可能 4 GCONTEXT gc 2 INT16 x 2 INT16 y n STRING8 ストリング p 不使用、p=pad(n) ImageText16 1 77 オプコード 1 n ストリング中のCHAR2Bs の数 2 4+(2n+p)/4 要求長さ 4 DRAWABLE 描画可能 4 GCONTEXT gc 2 INT16 x 2 INT16 y 2n STRING16 ストリング p 不使用、p=pad(2n) CreateColormap 1 78 オプコード 1 alloc 0 None 1 All 2 4 要求長さ 4 COLORMAP mid 4 WINDOW ウィンドウ 4 VISUALID 視覚 FreeColormap 1 79 オプコード 1 不使用 2 2 要求長さ 4 COLORMAP cmap CopyColormapAndFree 1 80 オプコード 1 不使用 2 3 要求長さ 4 COLORMAP mid 4 COLORMAP src−cmap InstallColormap 1 81 オプコード 1 不使用 2 2 要求長さ 4 COLORMAP cmap UninstallColormap 1 82 オプコード 1 不使用 2 2 要求長さ 4 COLORMAP cmap ListlnstalledColormaps 1 83 オプコード 1 不使用 2 2 要求長さ 4 WINDOW ウィンドウ => 1 1 Reply 1 不使用 2 CARD16 シーケンス数 4 n 応答長さ 2 n cmap中のCOLORMAP の数 22 不使用 4n LISTofCOLORMAP cmaps AllocColor 1 84 オプコード 1 不使用 2 4 要求長さ 4 COLORMAP cmap 2 CARD16 赤 2 CARD16 緑 2 CARD16 青 2 不使用 => 1 1 Reply 1 不使用 2 CARD16 シーケンス数 4 0 応答長さ 2 CARD16 赤 2 CARD16 緑 2 CARD16 青 2 不使用 4 CARD32 画素 12 不使用 AllocNamedColor 1 85 オプコード 1 不使用 2 3+(n+p)/4 要求長さ 4 COLORMAP cmap 2 n 名称長さ 2 不使用 n STRING8 名称 p 不使用、p=pad(n) => 1 1 Reply 1 不使用 2 CARD16 シーケンス数 4 0 応答長さ 4 CARD32 画素 2 CARD16 正確な赤 2 CARD16 正確な緑 2 CARD16 正確な青 2 CARD16 視覚上の赤 2 CARD16 視覚上の緑 2 CARD16 視覚上の青 8 不使用 AllocColorCells 1 86 オプコード 1 BOOL 接触 2 3 要求長さ 4 COLORMAP cmap 2 CARD16 色 2 CARD16 プレーン => 1 1 Reply 1 不使用 2 CARD16 シーケンス数 4 n+m 応答長さ 2 n 画素中のCARD32の数 2 m マスク中のCARD32の数 20 不使用 4n LISTofCARD32 画素 4m LISTofCARD32 マスク AllocColorPlanes 1 87 オプコード 1 BOOL 接触 2 4 要求長さ 4 COLORMAP cmap 2 CARD16 色 2 CARD16 赤 2 CARD16 緑 2 CARD16 青 => 1 1 Reply 1 不使用 2 CARD16 シーケンス数 4 n 応答長さ 2 n 画素中のCARD32の数 2 不使用 4 CARD32 赤マスク 4 CARD32 緑マスク 4 CARD32 青マスク 8 不使用 4n LISTofCARD32 画素 FreeColors 1 88 オプコード 1 不使用 2 3+n 要求長さ 4 COLORMAP cmap 4 CARD32 プレーンマスク 4n LISTofCARD32 画素 StoreColors 1 89 オプコード 1 不使用 2 2+3n 要求長さ 4 COLORMAP cmap 12n LISTofCOLORITEM 項目 COLORITEM 4 CARD32 画素 2 CARD16 赤 2 CARD16 緑 2 CARD16 青 1 do−赤、do−緑、do−青 #x01 do−赤(1は真、0は偽) #x02 do−緑(1は真、0は偽) #x04 do−青(1は真、0は偽) #xf8 不使用 1 不使用 StoreNamedColor 1 90 オプコード 1 do−赤、do−緑、do−青 #x01 do−赤(1は真、0は偽) #x02 do−緑(1は真、0は偽) #x04 do−青(1は真、0は偽) #xf8 不使用 2 4+(n+p)/4 要求長さ 4 COLORMAP cmap 4 CARD32 画素 2 n 名称の長さ 2 不使用 n STRING8 名称 p 不使用、p=pad(n) QueryColors 1 91 オプコード 1 不使用 2 2+n 要求長さ 4 COLORMAP cmap 4n LISTofCARD32 画素 => 1 1 Reply 1 不使用 2 CARD16 シーケンス数 4 2n 応答長さ 2 n 色中のRGBの数 22 不使用 8n LISTofRGB 色 RGB 2 CARD16 赤 2 CARD16 緑 2 CARD16 青 2 不使用 LookupColor 1 92 オプコード 1 不使用 2 3+(n+p)/4 要求長さ 4 COLORMAP cmap 2 n 名称長さ 2 不使用 n STRING8 名称 p 不使用、p=pad(n) => 1 1 Reply 1 不使用 2 CARD16 シーケンス数 4 0 応答長さ 2 CARD16 正確な赤 2 CARD16 正確な緑 2 CARD16 正確な青 2 CARD16 視覚上の赤 2 CARD16 視覚上の緑 2 CARD16 視覚上の青 12 不使用 CreateCursor 1 93 オプコード 1 不使用 2 8 応答長さ 4 CURSOR cid 4 PIXMAP ソース 4 PIXMAP マスク 0 None 2 CARD16 前−赤 2 CARD16 前−緑 2 CARD16 前−青 2 CARD16 後−赤 2 CARD16 後−緑 2 CARD16 後−青 2 CARD16 x 2 CARD16 y CreateGlyphCursor 1 94 CreateGlyph −Cursor 1 不使用 2 8 要求長さ 4 CURSOR cid 4 FONT ソースフォント 4 FONT マスクフォント 0 None 2 CARD16 ソース文字 2 CARD16 マスク文字 2 CARD16 前−赤 2 CARD16 前−緑 2 CARD16 前−青 2 CARD16 後−赤 2 CARD16 後−緑 2 CARD16 後−青 FreeCursor 1 95 オプコード 1 不使用 2 2 要求長さ 4 CURSOR カーソル RecolorCursor 1 96 オプコード 1 不使用 2 5 要求長さ 4 CURSOR カーソル 2 CARD16 前−赤 2 CARD16 前−緑 2 CARD16 前−青 2 CARD16 後−赤 2 CARD16 後−緑 2 CARD16 後−青 QueryBestSize 1 97 オプコード 1 クラス 0 Cursor 1 Tile 2 Stipple 2 3 要求長さ 4 DRAWABLE 描画可能 2 CARD16 幅 2 CARD16 高さ => 1 1 Reply 1 不使用 2 CARD16 シーケンス数 4 0 応答長さ 2 CARD16 幅 2 CARD16 高さ 20 不使用 QueryExtension 1 98 オプコード 1 不使用 2 2+(n+p)/4 要求長さ 2 n 名称の長さ 2 不使用 n STRING8 名称 p 不使用 => 1 1 Reply 1 不使用 2 CARD16 シーケンス数 4 0 応答長さ 1 BOOL 現在 1 CARD8 大オプコード 1 CARD8 最初の事象 1 CARD8 最初のエラー 20 不使用 ListExtensions 1 99 オプコード 1 不使用 2 1 要求長さ => 1 1 Reply 1 CARD8 名称中のSTRの数 2 CARD16 シーケンス数 4 (n+p)/4 応答長さ 24 不使用 n LISTofSTR 名称 p 不使用 ChangeKeyboardMapping 1 100 オプコード 1 n キーコードカウント 2 2+nm 要求長さ 1 KEYCODE 第1のキーコード 1 m キーコードあたりの keysym 2 不使用 4nmLISTofKEYSYM keysyms GetKeyboardMapping 1 101 オプコード 1 不使用 2 2 要求長さ 1 KEYCODE 第1のキーコード 1 CARD8 カウント 2 不使用 => 1 1 Reply 1 n キーコードあたりの keysym 2 CARD16 シーケンス数 4 nm 応答長さ(m=要求からの計数 フィールド) 24 不使用 4nmLISTofKEYSYM keysyms ChangeKeyboardControl 1 102 オプコード 1 不使用 2 2+n 要求長さ 4 BITMASK 値マスク(1にセットされたn ビットを有する) #x0001 キークリックパーセント #x0002 ベルパーセント #x0004 ベルピッチ #x0008 ベル期間 #x0010 led #x0020 ledモード #x0040 キー #x0080 オートリピートモード 4n LISTofVALUE 値リスト VALUEs 1 INT8 キークリックパーセント 1 INT8 ベルパーセント 2 INT16 ベルピッチ 2 INT16 ベル期間 1 CARD8 led 1 ledモード 0 Off 1 On 1 KEYCODE キー 1 オートリピートモード 0 Off 1 On 2 Default GetKeyboardControl 1 103 オプコード 1 不使用 2 1 要求長さ => 1 1 Reply 1 グローバルオートリピート 0 Off 1 On 2 CARD16 シーケンス数 4 5 応答長さ 4 CARD32 ledマスク 1 CARD8 キークリックパーセント 1 CARD8 ベルパーセント 2 CARD16 ベルピッチ 2 CARD16 ベル期間 2 不使用 32 LISTofCARD8 オートリピート Bell 1 104 オプコード 1 INT8 パーセント 2 1 要求長さ ChangePointerControl 1 105 オプコード 1 不使用 2 3 要求長さ 2 INT16 加速‐分子 2 INT16 加速‐分母 2 INT16 閾 1 BOOL do 加速 1 BOOL do 閾 GetPointerControl 1 106 オプコード 1 不使用 2 1 要求長さ => 1 1 Reply 1 不使用 2 CARD16 シーケンス数 4 0 応答長さ 2 CARD16 加速‐分子 2 CARD16 加速‐分母 2 CARD16 閾 18 不使用 SetScreenSaver 1 107 オプコード 1 不使用 2 3 要求長さ 2 INT16 タイムアウト 2 INT16 間隔 1 優先ブランキング 0 No 1 Yes 2 Default 1 提示許可 0 No 1 Yes 2 Default 2 不使用 GetScreenSaver 1 108 オプコード 1 不使用 2 1 要求長さ => 1 1 Reply 1 不使用 2 CARD16 シーケンス数 4 0 応答長さ 2 CARD16 タイムアウト 2 CARD16 間隔 1 優先ブランキング 0 No 1 Yes 1 提示許可 0 No 1 Yes 18 不使用 ChangeHosts 1 109 オプコード 1 モード 0 Insert 1 Delete 2 2+(n+p)/4 要求長さ 1 ファミリー 0 Internet 1 DECnet 2 Chaos 1 不使用 2 CARD16 アドレスの長さ n LISTofCARDS アドレス p 不使用 ListHosts 1 110 オプコード 1 不使用 2 1 要求長さ => 1 1 Reply 1 モード 0 Disabled 1 Enabled 2 CARD16 シーケンス数 4 n/4 応答長さ 2 CARD16 ホストでのHOSTの数 22 不使用 n LISofHOST ホスト(nはいつも4の倍数) SetAccessControl 1 111 オプコード 1 モード 0 Disable 1 Enable 2 1 要求長さ SetCloseDownMode 1 112 オプコード 1 モード 0 Destroy 1 RetainPermanent 2 RetainTemporary 2 1 要求長さ KillClient 1 113 オプコード 1 不使用 2 2 要求長さ 4 CARD32 リソース 0 AllTemporary RotateProperties 1 114 オプコード 1 不使用 2 3+n 要求長さ 4 WINDOW ウィンドウ 2 n 特性の数 2 INT16 デルタ 4n LISTofATOM 特性 ForceScreenSaver 1 115 オプコード 1 モード 0 Reset 1 Activate 2 1 要求長さ SetPointerMapping 1 116 オプコード 1 n マップの長さ 2 1+(n+p)/4 要求長さ n LISTofCARD8 マップ p 不使用 => 1 1 Reply 1 ステータス 0 Success 1 Busy 2 CARD16 シーケンス数 4 0 応答長さ 24 不使用 GetPointerMapping 1 117 オプコード 1 不使用 2 1 要求長さ => 1 1 Reply 1 n マップの長さ 2 CARD16 シーケンス数 4 (n+p)/4 応答長さ 24 不使用 n LISTofCARD8 マップ p 不使用 SetModifierMapping 1 118 オプコード 1 n 修飾子あたりのキーコード 2 1+2n 要求長さ 8n LISTofKEYCODE キーコード => 1 1 Reply 1 ステータス 0 Success 1 Busy 2 Failed 2 CARD16 シーケンス数 4 0 応答長さ 24 不使用 GetModifierMapping 1 119 オプコード 1 不使用 2 1 要求長さ => 1 1 Reply 1 n 修飾子あたりのキーコード 2 CARD16 シーケンス数 4 2n 応答長さ 24 不使用 8n LISTofKEYCODE キーコード NoOperation 1 127 オプコード 1 不使用 2 1 要求長さ[Requests] CreateWindow 1 1 Opcode 1 CARD8 Depth 2 8 + n Required Length 4 WINDOW wid 4 WINDOW Parent 2 INT16 x 2 INT16 y 2 CARD16 Width 2 CARD16 Height 2 CARD16 O2CARD16 O2CARD16 O2CARD16 Height 2 CARD16 O2CARD16 Height 2 CARD16 O2CARD16 O2 4 VISUALID Visual 0 CopyFromParent 4 BITMASK Visual Mask (with n bits set to 1) # x00000001 Background-Pixel Map # x00000002 Background-Pixel # x0000004 Boundary-Pixel Map # x00000008 Boundary-Pixel # x00000010 Bit-Gravity 20 Gravity -Gravity # x0 0000040 Supporting memory # x00000080 Supporting plane # x0000100 Supporting pixel # x00000200 Override-redirection # x00000400 Save-Down # x00000080 Event-Mask # x00001000 Non-propagable mask # x00002000 Color map # x00002000 Pixel background 4x LISTofPIVALEM value background 4 List of values 0 None 1 ParentRelative 4 CARD 32 Background-Pixel 4 PIXMAP Boundary-Pixel Map 0 CopyFromParent 4 CARD 32 Boundary-Pixel 1 BITGRAVITY Bit Gravity 1 WINGRAVITY 2 winGravity 1 No Memory 1 Support Memory Always 4 CARD32 Support-Plane 4 CARD32 Support-Pixel 1 BOOL Override-Redirect 1 BOOL Save Under 4 SETofEVENT 2 Op + Even 2COR not Cour Pour 0 COR POINT 0 COR 32 COLOR MAP COR COLOR MAP 4 COLORMAP COR MAP FOR 0 COR MAP COLOR MAP 0 COUNT Request Length 4 WINDOW Window 4 BITMASK Value Mask (with n bits set to 1) The encoding is the same as for CreateWindow. 4n LISTofVALUE Value List Encoding is the same as for CreateWindow. GetWindowAttributes 1 3 Opcode 1 Not Used 2 2 Requested Length 4 WINDOW Window => 1 1 Reply 1 Assisted Memory 0 NotUseful 1 What Map IT 2 Inp 1 O 2 Inp 2 A 1 Ins 2 O 4 Ins 2 CARD 16 2 Inp 1 O 2 Ins 2 CARD 16 Ins 2 U 4 ID 3 V ID 4 Ins 2 CARD 16 Ins 2 C ID 16 4 U 3 ID 4 4 U ID 4 4 U ID 4 Sequence 4 U ID 4 4 U ID 4 Sequences Gravity 1 WINGRAVITY win Gravity 4 CARD32 Support Plane 4 CARD32 Support Pixel 1 BOOT Save under 1 OOL Map is built in 1 Map state 0 Unmapped 1 COO NE Mapo Unoable 2 Unviewable 4 Unviewable 4 Uncharted 0 NT All Event Mask 4 SETofEVENT Your Event Mask 2 SETofDEVICEEVENT Non Propagable Mask 2 Not Used DestroyWindow 1 4 Opcode 1 Not Used 2 2 Requested Length 4 WINDOW Window 1 d s Wed 2 S 1 Wed 2 W 1 Wed 5 S 2 Ops Coded 6 Opcode 1 Mode 0 Insert 1 Delete 2 2 Request Length 4 WINDOW Window ReparentWindow 1 7 Opcode 1 Not Used 2 4 Request Length 4 WINDOW Window 4 WINDOW Parent 2 INT16 x 2 INT16 y 2 No Request 1 Map8 Length 4 WINDOW Window Map ubwindows 1 9 opcode 1 not used 2 2 requested length 4 WINDOW window Unmapwindow 1 10 opcode 1 not used 2 2 requested length 4 WINDOW window UnmapSubwindow ig 1 won 2 WDO 2 WIN Wd 2 CW window required Not used 2 3 + n Request length 4 WINDOW window 2 BITMASK value mask (with n bits set to 1) # x0001 x # x0002 y # x0004 width # x0008 height # x0010 border width # x0020 sibling # x0040 stack mode 2 Not used 4n LISTofVALUE value list VALUEs 2 INT16 x 2 INT16 y 2 CARD 6 Width 2 CARD16 Height 2 CARD16 Boundary Width 4 WINDOW 1 Brother Mode 1 Stack Mode 0 Above 1 Bellow 2 Toplf 3 Bottomlf 4 Opposite Draw 1 Gour 2 Width 1 W 4 Width 1 W 2 Width 1 Width 2 Width 1 Width 1 Width 2 Width 1 Width 2 Width 1 Width 2 Width 1 Width 1 Width 2 Width 1 Width 2 Width 1 Width 2 Width 1 Width 1 Width 1 Width 1 Width 1 Width 1 Width 1 Width 1 Width 1 Width 1 Width 1 Width 1 Width 1 Width 1 Width 1 Width 1 Width 1 Width 1 Width 1 Width 1 Width 1 Width 1 Width 1 Width 1 Width 1 Width 1 Width 1 Width 2 Use 2 2 Requested length 4 DRAWABLE Drawable => 1 1 Reply 1 CARD8 Depth 2 CARD16 Number of sequences 4 0 Response length 4 WINDOW Route 2 INT16 x 2 INT16 y 2 CARD16 Width 2 CARD16 Height 2 Width 10 CARD16 Used QueryTree 1 15 Opcode 1 Not used 2 2 Request Length 4 WINDOW Window => 1 1 Reply 1 Not used 2 CARD16 Number of sequences 4 n Response length 4 WINDOW Root 4 WINDOW Parent 0 None 2 n Number of fWINDOWs in child 14 Not used 4n LISTof WIndOl WINDOWO code 16 n Not used only-if-exists 2 2+ (n + p) / 4 Required length 2 n Name length 2 Not used n STRING8 Name p Not used, p = pad (n) => 1 1 Reply 1 Not used 2 CARD16 Number of sequences 4 0 Response length 4 ATOM atom 0 None 20 Not used GetAtomName 1 17 Opcode 1 Not used 2 2 Requested length 4 ATOM atom => 1 1 Reply 1 Not used 2 CARD16 Number of sequences 4 (n + p) / 4 Response length 2 n Name length 22 Not used n STRING8 Name p Not used, p = pad (n) ChangeProperty 1 18 Opcode 1 Mode 0 Replace 1 Prepend 2 Append 2 6+ (n + p) / 4 Request length 4 WINDOW window 4 ATOM characteristic 4 ATOM type 1 C32 format C 3D AR D format 3 AR 3 Length (n for format = 8) (n / 2 for format = 16) (n / 4 for format = 32) n LISTofBYTE data (n is a multiple of 2 for format = 16) (n is format = 32 Is a multiple of 4) p Not used, p = pad (n) DeleteProperty 1 19 Opcode 1 Not used 2 3 Request length 4 WINDOW window 4 ATOM characteristic GetProperty 1 20 Opcode 1 BOOL Delete 2 6 Request length 4 WINDOW window 4 4 ATO characteristic 4 WINDOW window 4 4ATO characteristic 4 WINDOW window 4 ATO characteristic 4 WINDOW window 4 ATO characteristic Offset 4 CARD32 long length => 1 1 Reply 1 CARD8 format 2 CARD16 number of sequences 4 (n + p) / 4 response length 4 ATOM type 0 None 4 CARD32 after byte 4 length value in CARD32 format unit (format = 0 to (= 0) (for format = 8 = n) (for format = 16 = n / 2) (for format = 32) n / 4) 12 n to nonuse n LISTofBYTE value (format = 0 0) (multiples of n to format = 16 2) (multiples of relative format = 32 n is 4) p unused, p-pad (n) ListProperties 1 21 Opcode 1 Not used 2 2 Required length 4 WINDOW window => 1 1 Reply 1 Not used 2 CARD16 Number of sequences 4 n Response length 2 n Number of ATOM in atom 22 Not used 4n LISTofATOM atom SetSelectionOwner 1 22 Opcode 1 Not used 2 4 Requested length 4 WINDOW Owner 0 None 4 ATOM selected 4 TIMESTAMP time 0 CurrentTime Get 1p 1 1 2 Not used 1 2 Not used 1 opted 1 2 Not requested. 2 CARD16 Number of sequences 4 0 Response length 4 WINDOW Owner 0 None 20 Not used ConvertSel ction 1 24 Opcode 1 Not used 2 6 Request length 4 WINDOW Requester 4 ATOM selection 4 ATOM Target 4 ATOM Characteristics 0 None 4 TIMESTAMP Time 0 CurrentTime in Wo W in W 0 W 0 W 1 W 0 W ID W 2 W 11 W 0 W 1 W 11 W 0 W 1 W 11 W 11 W 11 InputFocus 4 SETofEVENT Event Mask 32 Event Standard Event Format (see Events section) GrabPointer 1 26 Opcode 1 BOOT Owner Event 2 6 Request Length 4 WINDOW Won claw window 2 SET of POINTEREVEN ch n oS Point of Mask 0 event 0 0 hronous 1 Asynchronous 4 WINDOW limit 0 None 4 CURSOR cursor 0 None 4 TIMESTAMP Time 0 CurrentTime => 1 1 Reply 1 Status 0 Success 1 AlreadyGrabbed 2 InvalidTime 3 NotViewable 4 Frozen 2 CARD16 sequence number 4 0 response length 24 nonuse UngrabPointer 1 27 Opcode 1 Not Used 2 2 Request Length 4 TIMESTAMP Time 0 CurrentTime GrabButton 1 28 Opcode 1 OOL Owner Event 2 6 Request Length 4 WINDOW Understanding Window 2 SETofPOINTEREVENT Event Mask 1 Pointer Mode 0 Synch nous 1 Asynchronous 1 keyboard mode 0 Synchronous 1 Asynchronous 4 WINDOW limit 0 None 4 CURSOR cursor 0 None 1 BUTTON button 0 AnyButton 1 Not used 2 SETofKEYMASK qualifier # x8000 AnyModifier UngrabButton 1 29 opcode 1 BUTTON button 0 AnyButton 2 3 request length 4 WINDOW grasp window 2 SETofKEYMASK qualifier # x8000 AnyModifier 2 not used ChangeActivePointerGrab 1 30 opcode 1 not used 2 4 request length 4 cursor cursor 0 none 4 time cursor time ntTime 2 SETofPOINTEREVENT event mask 2 unused GrabKeyboard 1 31 opcode 1 BOOL owner events 2 4 required length 4 WINDOW grasp window 4 TIMESTAMP time 0 CurrentTime 1 pointer mode 0 Synchronous 1 Asynchronous 1 keyboard mode 0 Synchronous 1 Asynchronous 2 Not used => 1 1 Reply 1 Status 0 Success 1 AlreadyGrabbed 2 InvalidTime 3 NotViewable 4 Frozen 2 CARD16 Number of Sequences 4 0 Response Length 24 Not Used UngrabKeyboard 2 S 1 Request 2 Not Used 1 32 Not Required TAMP time 0 CurrentTime GrabKey 1 33 opcode 1 BOOL owner events 2 4 request length 4 WINDOW grasp window 2 SETofKEYMASK qualifier # x8000 AnyModifier 1 KEYCODE key 0 AnyKey 1 pointer mode 0 Synchronous 1 Asynchronous 1 keyboard mode 0 Synchronous 1 Asynchronous 3 non-use UngrabKey 1 34 opcode 1 KEYCODE key 0 AnyKey 2 3 required length 4 WINDOW grasp window 2 SETofKEYMASK modifier # x8000 AnyModifier 1 mode 0 opcodes 1 35 opcode 1 35 opcode 1 ter 1 SynchPointer 2 ReplayPointer 3 AsyncKeyboard 4 SyncKeyboard 5 ReplayKeyboard 6 AsyncBoth 7 SyncBoth 2 2 required length 4 TIMESATMP time 0 CurrentTime GrabServer 1 36 opcode 1 Not used 2 1 request length UngrabServer 1 37 opcode 1 Not used 2 1 request length QueryPointer 1 38 Opcode 1 Not Used 2 2 Request Length 4 WINDOW Window => 1 1 Reply 1 BOOT Same Screen 2 CARD16 Sequence Number 4 0 Response Length 4 WINDOW Route 4 WINDOW Child 0 None 2 INT16 Route x 2 INT16 Route T16 winx 2 INT16 winy 2 SETofKEYBUTMASK mask 6 nonuse GetMotionEvents 1 39 opcode 1 Not used 2 4 required length 4 WINDOW window 4 TIMESTAMP Start 0 CurrentTime 4 TIMESTAMP stop 0 CurrentTime => 1 1 Reply 1 Not used 2 CARD16 sequence number 4 2n Response length 4 n Number of TIMECOOR Ds in event 20 Not used 8n LISTofTIMECOORD Event TIMECOORD 4 TIMESTAMP Time 2 CARD16 x 2 CARD16 y TranslateCoordinates 1 40 opcode 4 W 4 c W DO W1 W2 IN W2 W2 W2 DOW dst window 2 INT16 src-x 2 INT16 src-y => 1 1 Reply 1 OOL same screen 2 CARD16 sequence number 4 0 response length 4 WINDOW child 0 None 2 INT16 dst-x2 wyp16 not used 1 41 Opcode 1 Not used 2 6 Requested length 4 WINDOW src window 0 None 4 WINDOW dst window 0 None 2 INT16 src-x 2 INT16 src-y 2 CARD16 src 16d 2st 16t 2d 16-dst 16 2d -Y SetlnputFocus 1 42 Opcode 1 Inversion 0 None 1 PointerRoot 2 Parent 2 3 Requested length 4 WINDOW Focus 0 None 1 PointerRoot 4 TIMESTAMP Time 0 CurrentTime GetlnputFocus 1 43 Opcode 1 Not Used 2 1 Requested Length => 1 1 1 Wn OW 0 Won 4 Wo 1 Point 4o Point 2o Ron 4 Point 0 Reply 1 PointerRoot 20 Not used QueryKeymap 1 44 Opcode 1 Not used 2 1 Required length => 1 1 Reply 1 Not used 2 CARD16 Number of sequences 4 2 Response length 32 LISTofCARD8 Key 2+ Opn + 1 45 Not used 1 45 Not used 4 Required length 4 FONT fid 2 n Name length 2 Not used n ST ING8 name p non-use, p = pad (n) CloseFont 1 46 Opcode 1 Not used 2 2 Requested length 4 FONT font QueryFont 1 47 Opcode 1 Not used 2 2 Requested length 4 FONTABLE font => 1 1 Reply 1 Not used 2 CARD 16 + 2 n Response length 12 CHARINFO Minimum boundary 4 Not used 12 CHARINFO Maximum boundary 4 Not used 2 CARD16 Minimum character or byte 2 2 CARD16 Maximum character or byte 2 2 CARD16 Character omission 2 n Number of FONTPROP in the characteristic 1 Drawing direction 0 LeftToRightRight1 1 CARD8 Minimum byte 1 1 CARD8 Maximum byte 1 1 OOL All characters present 2 INT16 font up 2 INT16 font down m char number of charinfo in infos 8n LISTofFONTPROP characteristics 12m LISTofCHARINFO char-infos FONTPROP 4 ATOM name 4 <32-bits> value charinfo 2 INT16 left bearings 2 INT16 right bearing 2 INT16 character width 2 INT16 rise 2 INT16 falling 2 CARD16 attribute QueryTaxExtents 1 48 Opcode 1 OOL Odd length, True if P = 2 2 2+ (2n + p) / 4 Required length 4 FONTABLE font 2n STRING16 string p Not used, p = pad (2n) => 1 1 Reply 1 drawing direction 0 LeftToRight 1 RightToLeleft 2 CARD16 number of sequences 4 0 response length 2 INT16 font increase 2 INT16 font increase 2 INT16 overall increase 2 INT4 IN 32 overall INT 4 INT 32 IN16 Left 4 INT32 Entire right 4 Not used ListFonts 1 49 Opcode 1 Not used 2 2+ (n + p) / 4 Required length 2 CARD16 Maximum name 2 n Pattern length n SSTRING8 Pattern p Not used, p = pad (n) => 1 1 Reply 1 not used 2 CARD16 number of sequences 4 (n + p) / 4 response length 2 number of STRs in CARD16 name 22 not used n LISTofSTR name p not used, p = pad (n) ListFontsWithlnfo 1 50 Opcode 1 Not used 2 2+ (n + p) / 4 Required length 2 CARD16 Maximum name 2 n Pattern length n STRING8 Pattern p Not used, p = pad (n) => (excluding the latest in the series) 1 1 Reply 1 n Name in bytes Length 2 CARD16 Number of sequences 4 7 + 2m + (n + p) / 4 Response length 12 CHARINFO Minimum boundary 4 Not used 12 CHARINFO Maximum boundary 4 Not used 2 CARD16 Minimum character or byte 2 2 CARD16 Maximum character or byte 2 2 CARD16 Character omission 2 m Number of FONTPROP in the characteristic 1 Drawing direction 0 LeftToRight 1 RightToLeft 1 CARD8 Minimum byte 1 Maximum byte 1 CARD8 Boolean All characters present 2 INT16 font up 2 INT16 font down 4 CARD32 Response hint 8m LISTofFONTPROP Characteristic n STRING8 Name p Not used, p = pad (n) FONTPROP encoding is the same as in QueryFont CHARINFO encoding is the same as in QueryFont => (latest in series) 1 1 Reply 1 0 Latest response indicator 2 CARD16 Sequence number 4 7 Response length 52 Not used SetFontPath 1 51 Opcode 1 Not used 2 2+ (n + p) / 4 Requested length 2 CARD16 Number of STRs in path 2 Not used n LISTofSTR Path p Not used, p = pad (n) GetFontPath 1 52 Opcode 1 Not used 2 1 Request list => 1 1 Reply 1 Not used 2 CARD16 Number of sequences 4 (n + p) / 4 Response length 2 CARD16 Number of STRs in path 22 Not used n LISTofSTR path p not used, p = pad (n) CreatePixmap 1 53 opcode 1 CARD8 depth 2 4 required length 4 PIXMAP page identifier 4 DRAWABLE drawable 2 CARD16 width 2 CARD16 height FreePixmap 1 pixel opcode length X 2 AP 2 no request 2 CreateGC 1 55 Opcode 1 Not Used 2 4 + n Required Length 4 GCONTEXT cid 4 DRAWABLE Drawable 4 BITMASK Value Mask (with n bits set to 1) # x0000001 Function # x0000001 Function # x0000001 Plain Foreground # x000000004 Foreground # x00004 Width # x00000020 Line style # x00000040 cap style # x000 0080 join style # x00000100 fill style # x00000200 fill rule # x00000400 Title # x00004000 Stipple # x00001000 Tile-stipple-x origin # x00002000 Tile-stipple-y origin # x00004000 Font # x00008000 Sub window mode # x00000000 Origin of graphics # x00000000 Graphic presentation # X00040000 y Clip origin point # x00080000 Clip mask # x0010000 Dash offset # x00200000 Dash # x00400000 arc mode 4n LISTofVALUE value list VALUEs 1 Function 0 Clear 1 And 2 AndReverse 3 Cop y 4 AndInverted 5 NoOp 6 Xor 7 Or 8 Nor 9 Equiv 10 Invert 11 OrReverse 12 CopyInverted 13 OrInverted 14 Nand 15 Set 4 CARD32 planemasks 4 CARD32 foreground 4 CARD32 background 2 CARD16 line width 1 line styles 0 Solid 1 OnOffDash 2 DoubleDash 1 cap Style 0 NotLast 1 Butt 2 Round 3 Projecting 1 join Style 0 Miter 1 Round 2 Bevel 1 fill Style 0 Solid 1 Tiled 2 Striped Extended 3 OpaqueStippled 0 1 Ittle 4 PIXMAP Stippling 2 INT16 Title-Stipple-x Origin 2 INT16 Title-Stipple-y Origin 4 FONT Font 1 Sub-window Mode 0 ClipByChildren 1 IncludeInferiors 1 BOOL Graphic Presentation 2 INT16 xAP Clip 4 Origin Clip Clip 2 INT16 Origin Clip Clip 2 INT 16 0 None 2 CARD16 Dash offset 1 CARD8 Dash 1 arc mode 0 Chord 1 PieSlice ChangeGC 1 56 Opcode 1 Not used 2 3 + n Requested length 4 GCONTEXT gc 4 BITMASK Value mask is set to C bit value C (recoded) C is set to bitCnC bit. 4n LISTofVALUE encoding same as Same as in CreateGC CopyGC 1 57 Opcode 1 Not used 2 4 Requested length 4 GCONTEXT src-gc 4 GCONTEXT dst-gc 4 BITMASK value mask Coding is same as in CreateGC 1st option Not used 58 SetDash 2 3+ (n + p) / 4 request length 4 GCONTEXT gc 2 CARD16 dash offset 2 n dash length n LISTofCARDS dash p not used, p = pad (n) SetClipRectangles 1 59 Opcode 1 Sequence 0 UnSorted 1 YSorted 2 YXSorted 3 YXBanded 2 3 + 2n Requested length 4 G CONTEXT Gc 2 INT fL IN 16 L 8 IN 16 L 2 IN 16 IN 2 IN 16 L 2 IN 16 IN 2 IN 16 IN 2 IN 16 IN 2 IN 16 IN 2 IN 16 IN 2 IN 16 IN 2 IN 16 IN 2 IN 16 IN 2 IN 16 IN 2 IN 16 IN 2 IN 16 IN 2 IN 16 IN 2 IN 16 IN 2 IN 16 IN 2 IN 16 IN 2 IN 16 IN 2 IN 16 IN 2 IN 16 IN 2 IN 16 IN 2 IN 16 IN 2 IN 16 IN 2 IN 16 IN 2 IN 16 IN 2 IN 16 IN 2 IN 16 IN 2 IN 16 IN 2 IN 16 IN IN 2 IN 16 IN G IN 2 IN 16 L IN 16 L IN 16 IN 2 IN 16 L IN 16 L IN CH IN CONTINUE GLIN GLIN. 2 2 Request Length 4 GCONTEXT gc ClearArea 1 61 Opcode 1 Boolean Presentation 2 4 Request Length 4 WINDOW Window 2 INT16 x 2 INT16 y 2 CARD16 Width 2 CARD16 Height 2A DRA 7 A Request Code 7 Area 2 W DRA 7 A Request Code 4 A src drawable 4 DRAWABLE dst drawable 4 GCONTEXT gc 2 INT16 src-x 2 INT16 src-y 2 INT16 dst-x 2 INT16 dst-y 2 CARD16 Width 2 CARD16 Height CopyPlane 1 63 Opcode 1 Not used 2 8 Required length 4 WDR AWR 4 A DR 4 A DRA WA Possible 4 GCONTEXT gc2 INT16 src-x2 INT16 src-y2 INT16 dst-x2 INT16 dst-y2 CARD16 width 2 CARD16 height 4 CARD32 bitplane PolyPoint 1 64 in op 1 Ori code 0 coordinate 1 Ori code O coordinates 1 4 Drawable 4 GCONTEXT gc 4n LISTofPOINT Point PolyL ine 1 65 opcode 1 coordinate mode 0 Origin 1 Previous 2 3 + n required length 4 Drawable drawable 4 GCONTEXT gc 4n LISTofPOINT point PolySegment 1 66 opcode 1 Not used 2 3 + 2n request length 4 Drawable drawable 4 GCONTEXT gc 8n LISTofSEGMENT segments SEGMENT 2 INT16 x1 2 INT16 y1 2 INT16 x2 2 INT16 y2 PolyRectangle 1 67 Opcode 1 Not used 2 3 + 2n Requested length 4 DRAWABLE Drawable 4 GCON CONT 3 G4 8G L CONT ACT not used Gc 8n LISTyc R2G1 8n LISTofc LE drawable 4 GCONTEXT gc 12n LISTofARC arcs FillPoly 1 69 opcode 1 Not used 2 4 + n required length 4 Drawable drawable 4 GContext gc 1 Form 0 Complex 1 Nonconvex 2 Convex 1 coordinate mode 0 Origin 1 Previous 2 unused 4n LISTofPOINT point PolyFillRectangle 1 70 Opcode 1 Not Used 2 3 + 2n Required Length 4 DRABLE Drawable 4 GCONTEXT gc 8n LISTofRECTANGLE Rectangle PolyFillArc 1 71 s Opcode 1 Not Used 2 3 + 3n Required Length 4G 4Cn L 4G 4N CONT 4G RAW 4G Drawable utlmap 1 72 opcode 1 format 0 Bitmap 1 XYPixmap 2 ZPixmap 2 6+ (n + p) / 4 requested length 4 DRAWABLE drawable 4 GCONXT pad 2 C1D 16 16 d 2 CARD 16 width 2 CORD 16 d 2 CARD 16 high 2 CORD 16 d 2 CIND 16 high 2 CORD 16 high 2 CORD 16 high 1 CARD8 depth 2 not used n LISTofBYTE data p not used, p = pad (n) Getlimage 1 73 opcode 1 format 1 XYPixmap 2 ZPixmap 2 5 request length 4 DRAWABLE drawable 2 INT16 x 2 INT16 y 2 CARD16 width 2 CARD16 Re 8 plane 1 CORD16 height 4 CARD 16 width 2 CARD 16 height 1 CARD 16 height 4 CARD 16 2 CARD16 Number of sequences 4 (n + p) / 4 Response length 4 VISUALID Visual 0 None 20 Not used n LISTofBYTE data p Not used, p = pad (n) PolyText8 1 74 Opcode 1 Not used 2 4+ (n + p) / 4 Required length 4 DRAWABLE drawable 4 GCONTEXT gc 2 INT16 x 2 INT16 y n LISTofTEXTITEM 8 Item not used p = pad (n) (p is always 0 or 1) TEXTITEM8 1 n string length (cannot be 255) 1 INT8 delta n STRING8 string or 1 255 font shift indicator 1 font byte 3 (most significant) 1 Font byte 2 1 Font byte 1 1 Font byte 0 (lowest) PolyText16 1 75 Opcode 1 Not used 2 4+ (n + p) / 4 Requested length 4 DRAWABLE Drawable 4 GCONTEXT gc 2 INT16 x 2 INT16 EMn LIST LISTo Not used, p = pad (n) (p is always 0 or 1) TEXTITEM 16 1 n number of CHAR2Bs in the string (cannot be 255) 1 INT8 delta n STRING16 string or 1 255 font indicator 1 font byte 3 (most significant) ) 1 font byte 2 1 font byte 1 1 font byte 0 (least significant) ImageText8 1 76 opcode 1 n string length 2 4+ (n + p) / 4 required length 4 DRAWABLE drawable 4 GCONTEXT gc 2 INT16 x 2 INT16 STRING8 string p not used, p = pad (n) ImageText16 1 77 opcode 1 n number of CHAR2Bs in string 2 4+ (2n + p) / 4 required length 4 DRAWABLE drawable 4 GCONTEXT gc 2 INT16 x 2 INT16 IN 16 G 2 not used p = pad (2n) CreateColormap 1 78 opcode 1 alloc 0 None 1 All 2 4 request length 4 COLORMAP mid 4 WINDOW window 4 VISUALID visual 80 cm pOR cop 1 CO 2 APor COp 1 CO 2 mapp 1 CO 2 CORMAP 1 CO 2 AP 1 CO 2 COP 1 CO 2 COP 1 CO 2 COP 1 CO 2 AP 1 CO 2 COP 1 CO 2 COP 1 CO 2 COP 1 CO 2 COP 1 CO 2 COP COLORMAP 1 CO 2 COP 1 CO 2 COP 1 CO 2 COP 1 CO 2 COP COLORMAP 1 CO 2 COP 1 CO 2 MAP Not used 2 3 Requested length 4 COLORMAP mid 4 COLORMAP src-cmap InstallColormap 1 81 Opcode 1 Not used 2 2 Requested length 4 COLORMAP cmap Unstall COMPorm COL 2 COL map LOR 2 Not required 1 Opcode 1 Not used aps 1 83 Opcode 1 Not used 2 2 Request length 4 WINDOW window => 1 1 1 Reply 1 Not used 2 CARD16 Number of sequences 4 n Response length 2 n Number of COLORMAPs in n cmap 22 Not used 4n LISTofCOLORMAPclC cma cm 1 not used 2 4 requested length 4 COLORMAP cmap 2 CARD16 red 2 CARD16 green 2 CARD16 blue 2 not used => 1 1 Reply 1 not used 2 CARD16 number of sequences 4 0 response length 2 CARD16 red 2 CARD16 green 2 CARD16 blue 2 Not used 4 CARD 32 pixels 12 Not used AllocNamedColor 1 85 Opcode 1 Not used 2 3+ (n + p) / 4 Required length 4 COLORMA cmap 2 n name length 2 nonuse n String8 name p nonuse, p = pad (n) => 1 1 Reply 1 not used 2 CARD16 number of sequences 4 0 response length 4 CARD32 pixels 2 CARD16 accurate red 2 CARD16 accurate green 2 CARD16 accurate blue 2 CARD16 visual red 2 CARD16 visual Top green 2 CARD16 Visual blue 8 Not used AllocColorCells 1 86 Opcode 1 OOL Contact 2 3 Required length 4 COLORMAP cmap 2 CARD 16 colors 2 CARD16 plane => 1 1 Reply 1 Not used 2 C4 m + sequence 4 CARD16 Number of CARD32 in 2 n pixels 2 m Number of CARD32 in mask 20 Not used 4n LISTofCARD32 pixel 4 m LISTofCARD32 mask AllocColorPlane 1 87 opcode 1 BOOL contact 2 4 required length 4 COLORMAP cmap 2 CARD16 color 2 CARD16 red 2 CARD16 green 2 CARD16 blue => 1 1 Reply 1 not used 2 CARD16 number of sequences 4 n response length 2 nD of 32 n pixels Number 2 Not used 4 CARD32 Red mask 4 CARD32 Green mask 4 CARD32 Blue mask 8 Not used 4n LISTofCARD32 Pixel FreeColors 1 88 Opcode 1 Not used 2 3 + n Required length 4 4 Pixels Corp CORp CORD CORD 32L CORP 32 CORD 4 CARD 32 Cor 4 CARD 32 Cord 32 Corp CORD 3 Cn 4 CORD 32 Use 2 2 + 3n Required length 4 COLORMAP cmap 12n LISTofCOLORIT M item COLORITEM 4 CARD32 pixels 2 CARD16 red 2 CARD16 Green 2 CARD16 blue 1 do- red, do-green, do-blue # x01 do-red (1 is true, 0 is false # x02 do-green (1 is true, 0 is false # x04 do-blue (1 is true, 0 is false) # xf8 Not used 1 Not used StoreNamedColor 1 90 Opcode 1 do-red, do-green, do-blue # x01 do-red (1 is true, 0 is false # x02 do-green (1 is true, 0 is false # x04 do-blue (1 is true, 0 is false) # xf8 Not used 2 4+ (n + p) / 4 Required length 4 COLORMAP cmap 4 CARD32 Pixel 2 n Name length 2 Not used n STRING8 Name p Not used, p = pad (n) QueryColors 1 91 Opcode 1 Not used 2 2 + n Required length 4 COLORMAP cmap 4n LISTofCARD32 pixels => 1 1 Reply 1 Not used 2 CARD 16 Number of sequences 4 2n 22 colors of color 2 2n Not used 8n LISTofRGB Color RGB 2 CARD16 Red 2 CARD16 Green 2 CARD16 Blue 2 Not used LookupColor 1 92 Opcode 1 Not used 2 3+ (n + p) / 4 Required length 4 COLORMAP cmap 2 n Name Length 2 Not used RIN Nn Not used, p = pad (n) => 1 1 Reply 1 not used 2 CARD16 number of sequences 4 0 response length 2 CARD16 exact red 2 CARD16 exact green 2 CARD16 exact blue 2 CARD16 visual red 2 CARD16 visual green 2 CARD16 Visual blue 12 Not used CreateCursor 1 93 Opcode 1 Not used 2 8 Response length 4 CURSOR cid 4 PIXMAP source 4 PIXMAP Mask 0 None 2 CARD16 Before-Red 2 CARD16 Before-Green 2 CARD16 Before-Blue 2 CARD -Red 2 CARD16 rear-Green 2 CARD16 rear-blue 2 CARD16 x 2 CARD16 y CreateGlyphCursor 1 94 CreateGlyph-Cursor 1 Not used 2 8 Required length 4 CURSOR cid 4 FONT source font 4 FONT mask font 0 None 2 CARD16 source character 2 CARD16 mask character 2 CARD16 front-red 2 CARD16 front-green 2 CARD16 front-blue 2 CARD16 rear-red 2 CARD16 rear-green 2 CARD16 rear-blue Freecursor 1 95 Opcode 1 Not used 2 2 Requested length 4 CURSOR cursor RecolorCursor 1 96 Opcode 1 not used 2 5 Requested length 4 CURSOR cursor 2 CARD 16 Before-red 2 CARD 16 Before-green 2 CARD 16 Before-blue 2 CARD 16 2 CARD16 Rear-Green 2 CARD16 Rear-Blue QueryBestSize 1 97 Opcode 1 Class 0 Curser 1 Tile 2 Sti ple 2 3 Required length 4 DRAWABLE Drawable 2 CARD16 Width 2 CARD16 Height => 1 1 Reply 1 Not used 2 CARD16 Number of sequences 4 0 Response length 2 CARD16 Width 2 CARD16 Height 20 Not used QueryExtension 1 Not used Query1 Used 2 2+ (n + p) / 4 Required length 2 n Name length 2 Not used n STRING8 Name p Not used => 1 1 Reply 1 Not used 2 CARD16 Sequence number 4 0 Response length 1 BOOL Present 1 CARD8 Large opcode 1 CARD8 First Event 1 CARD8 First Error 20 Not Used ListExtensions 1 99 Opcode 1 Not Used 2 1 Required Length => 1 1 Reply 1 CARD8 Number of STRs in Name 2 CARD16 Number of sequences 4 (n + p) / 4 Response length 24 Not used n LISTofSTR Name p Not used ChangeKeyboardMapping 1 100 Opcode 1 n Key code count 2 2 + nm Required length 1 KEYCODE 1 m 2 m Key code 1 m 2y per key code Used 4nm LISTofKEYSYMY keysyms GetKeyboardMapping 1 101 Opcode 1 Not used 2 2 Requested length 1 KEYCODE 1st key code 1 CARD8 Count 2 Not used => 1 1 Reply 1 Cry 4 Cy 1 keyy C key code 1D Reply 1 CRY8 key 2 Keys keyed m = count field from request) 24 not used 4nm LISTofKEYSYM keysyms ChangeK yboardControl 1 102 Opcode 1 Not used 2 2 + n Request Length 4 BITMASK Value Mask (with n bits set to 1) # x0001 Key Click Percentage # x0002 Bell Percentage # x0004 Bell Pitch # x0008 Bell Duration # x0010 led # x0020 led mode # X0040 Key # x0080 Auto Repeat Mode 4n LISTofVALUE Value List VALUEs 1 INT8 Key Click Percentage 1 INT8 Bell Percentage 2 INT16 Bell Pitch 2 INT16 Bell Period 1 CARD8 led 1 led Mode 0 Off 1 On 1 KEY Off Code 1 2 Default GetKeyboardControl 1 103 Opcode 1 Not used 2 1 Required length => 1 1 1 Reply 1 Global auto repeat 0 Off 1 On 2 CARD16 Number of sequences 4 5 Response length 4 CARD32 led mask 1 CARD8 key click percentage 1 CARD8 bell percentage 2 CARD16 bell pitch 2 CARD16 bell Period 2 Not used 32 LISTofCARD8 Auto-repeat Bell 1 104 Opcode 1 INT8 Percent 2 1 Request length ChangePointerControl 1 105 Opcode 1 Not used 2 3 Request length 2 INT16 Acceleration-IN 0T 1 O 16 Denominator 2 IN 16 O 1-Degree 2 O Boolean do Threshold GetPointerControl 1 106 Opcode 1 Not used 2 1 Required length => 1 1 Reply 1 not used 2 CARD16 number of sequences 4 0 response length 2 CARD16 acceleration-numerator 2 CARD16 acceleration-denominator 2 CARD16 threshold 18 not used SetScreenSaver 1 107 opcode 1 not used 2 3 required length 2 INT16 interval 2 INT 2 timeout 2 INT 2 Priority blanking 0 No 1 Yes 2 Default 1 Presentation permission 0 No 1 Yes 2 Default 2 Not used GetScreenSaver 1 108 Opcode 1 Not used 2 1 Requested length => 1 1 Reply 1 Not used 2 Responses 4 CARD 16 2 CARD16 Timeout 2 CARD16 Interval 1 Priority blanking 0 No 1 Yes 1 Presentation permission 0 No 1 Yes 18 Not used ChangeHosts 1 09 Opcode 1 Mode 0 Insert 1 Delete 2 2+ (n + p) / 4 Requested Length 1 Family 0 Internet 1 DECnet 2 Chaos 1 Not Used 2 CARD16 Address Length n LISTofCARDS Address p Not Used 1st110 Not Used 1List 2 Hosts Request Length => 1 1 Reply 1 Mode 0 Disabled 1 Enabled 2 CARD16 Number of Sequences 4 n / 4 Response Length 2 CARD16 Number of HOSTs on Host 22 Not Used n LISofHOST Host (n is always a multiple of 4) Cont1 Secscet111 Opcode 1 Mode 0 Disable 1 Enable 2 1 Request length SetCloseDownMode 1 112 Opcode Mode 0 Destroy 1 RetainPermanent 2 RetainTemporary 2 1 Request length KillClient 1 113 Opcode 1 Not used 2 2 Request length 4 CARD32 Resources 0 AllTemporary RotateProperties 1 Wn 2 Wn 2 + 1 Wn 2 Request 2 Not required 1 INT16 Delta 4n LISTofATOM Characteristics ForceScreenSaver 1 115 Opcode 1 Mode 0 Reset 1 Activate 2 1 Request Length SetPointerMapping 1 116 Opcode 1 n Map Length 2 f1L4o + np 4 Ip + Ip + Ip + Request 1n + (n +) + 1+ (n +) + 1+ (n +) + 1+ (n +) + 1n + Maps 2n + 1+ (n +). Reply 1 Status 0 Success 1 Busy 2 CARD16 Number of sequences 4 0 Response length 24 Not used GetPointerMapping 1 117 Opcode 1 Not used 2 1 Requested length => 1 1 Reply 1 n Map length 2 CARD16 + Number of sequences 4 (4) Response length 24 Not used n LISTofCARD8 map p Not used SetModifierMapping 1 118 Opcode 1 n Key code per qualifier 2 1 + 2n Requested length 8n LISTofKEY KEYCODE Codes >> 1 1 REPLY Cue UC 1 4 0 Response length 24 Not used GetModifierMapping 1 119 Opcode 1 Not used 2 Request length => 1 1 Reply 1 n keycode per Qualifier 2 CARD16 sequence number 4 2n response length 24 nonuse 8n LISTofKEYCODE keycode NoOperation 1 127 opcode 1 Not used 2 1 request length
【事象】(Events) KeyPress 1 2 コード 1 KEYCODE 詳細 2 CARD16 シーケンス数 4 TIMESTAMP 時間 4 WINDOW ルート 4 WINDOW 事象 4 WINDOW 子 0 None 2 INT16 ルートx 2 INT16 ルートy 2 INT16 事象x 2 INT16 事象y 2 SETofKEYBUTMASK 状態 1 BOOL 同一スクリーン 1 不使用 KeyRelease 1 3 コード 1 KEYCODE 詳細 2 CARD16 シーケンス数 4 TIMESTAMP 時間 4 WINDOW ルート 4 WINDOW 事象 4 WINDOW 子 0 None 2 INT16 ルートx 2 INT16 ルートy 2 INT16 事象x 2 INT16 事象y 2 SETofKEYBUTMASK 状態 1 BOOL 同一スクリーン 1 不使用 ButtonPress 1 4 コード 1 BUTTON 詳細 2 CARD16 シーケンス数 4 TIMESTAMP 時間 4 WINDOW ルート 4 WINDOW 事象 4 WINDOW 子 0 None 2 INT16 ルートx 2 INT16 ルートy 2 INT16 事象x 2 INT16 事象y 2 SETofKEYBUTMASK 状態 1 BOOL 同一スクリーン 1 不使用 ButtonRelease 1 5 コード 1 BUTTON 詳細 2 CARD16 シーケンス数 4 TIMESTAMP 時間 4 WINDOW ルート 4 WINDOW 事象 4 WINDOW 子 0 None 2 INT16 ルートx 2 INT16 ルートy 2 INT16 事象x 2 INT16 事象y 2 SETofKEYBUTMASK 状態 1 BOOL 同一スクリーン 1 不使用 MotionNotify 1 6 コード 1 詳細 0 Normal 1 Hint 2 CARD16 シーケンス数 4 TIMESTAMP 時間 4 WINDOW ルート 4 WINDOW 事象 4 WINDOW 子 0 None 2 INT16 ルートx 2 INT16 ルートy 2 INT16 事象x 2 INT16 事象y 2 SETofKEYBUTMASK 状態 1 BOOL 同一スクリーン 1 不使用 EnterNotify 1 7 コード 1 詳細 0 Ancestor 1 Virtual 2 Inferior 3 Nonlinear 4 NonlinearVirtual 2 CARD16 シーケンス数 4 TIMESTAMP 時間 4 WINDOW ルート 4 WINDOW 事象 4 WINDOW 子 0 None 2 INT16 ルートx 2 INT16 ルートy 2 INT16 事象x 2 INT16 事象y 2 SETofKEYBUTMASK 状態 1 モード 0 Normal 1 Grab 2 Ungrab 1 同一スクリーン、フォーカス #x01 フォーカス(1は真、0は偽) #x02 同一スクリーン(1は真、0は偽) #xfc 不使用 LeaveNotify 1 8 コード 1 詳細 0 Ancestor 1 Virtual 2 Inferior 3 Nonlinear 4 NonlinearVirtual 2 CARD16 シーケンス数 4 TIMESTAMP 時間 4 WINDOW ルート 4 WINDOW 事象 4 WINDOW 子 0 None 2 INT16 ルートx 2 INT16 ルートy 2 INT16 事象x 2 INT16 事象y 2 SETofKEYBUTMASK 状態 1 モード 0 Normal 1 Grab 2 Ungrab 1 同一スクリーン、フォーカス #x01 フォーカス(1は真、0は偽) #x02 同一スクリーン(1は真、0は偽) #xfc 不使用 Focusln 1 9 コード 1 詳細 0 Ancestor 1 Virtual 2 Inferior 3 Nonlinear 4 NonlinearVirtual 5 Pointer 6 PointerRoot 7 None 2 CARD16 シーケンス数 4 WINDOW 事象 1 モード 0 Normal 1 Grab 2 Ungrab 3 WhileGrabbed 23 不使用 FocusOut 1 10 コード 1 詳細 0 Ancestor 1 Virtual 2 Inferior 3 Nonlinear 4 NonlinearVirtual 5 Pointer 6 PointerRoot 7 None 2 CARD16 シーケンス数 4 WINDOW 事象 1 モード 0 Normal 1 Grab 2 Ungrab 3 WhileGrabbed 23 不使用 KeymapNotify 1 11 コード 31 LISTofCARD8 キー(キーコード0−7に対す るバイトは省略) Expose 1 12 コード 1 不使用 2 CARD16 シーケンス数 4 WINDOW ウィンドウ 2 CARD16 x 2 CARD16 y 2 CARD16 幅 2 CARD16 高さ 2 CARD16 カウント 14 不使用 GraphicsExposure 1 13 コード 1 不使用 2 CARD16 シーケンス数 4 DRAWABLE 描画可能 2 CARD16 x 2 CARD16 y 2 CARD16 幅 2 CARD16 高さ 2 CARD16 小オプコード 2 CARD16 カウント 1 CARD8 大オプコード 11 不使用 NoExposure 1 14 コード 1 不使用 2 CARD16 シーケンス数 4 DRAWABLE 描画可能 2 CARD16 小オプコード 1 CARD8 大オプコード 21 不使用 VisibilityNotify 1 15 コード 1 不使用 2 CARD16 シーケンス数 4 WINDOW ウィンドウ 1 状態 0 Unobscured 1 PartiallyObscured 2 FullyObscured 23 不使用 CreateNotify 1 16 コード 1 不使用 2 CARD16 シーケンス数 4 WINDOW 親 4 WINDOW ウィンドウ 2 INT16 x 2 INT16 y 2 CARD16 幅 2 CARD16 高さ 2 CARD16 境界幅 1 BOOL オーバーライド再指示 9 不使用 DestroyNotify 1 17 コード 1 不使用 2 CARD16 シーケンス数 4 WINDOW 事象 4 WINDOW ウィンドウ 20 不使用 UnmaapNotify 1 18 コード 1 不使用 2 CARD16 シーケンス数 4 WINDOW 事象 4 WINDOW ウィンドウ 1 BOOL from構成 19 不使用 MapNotify 1 19 コード 1 不使用 2 CARD16 シーケンス数 4 WINDOW 事象 4 WINDOW ウィンドウ 1 BOOL オーバーライド再指示 19 不使用 MapRequest 1 20 コード 1 不使用 2 CARD16 シーケンス数 4 WINDOW 親 4 WINDOW ウィンドウ 20 不使用 ReparentNotify 1 21 コード 1 不使用 2 CARD16 シーケンス数 4 WINDOW 事象 4 WINDOW ウィンドウ 4 WINDOW 親 2 INT16 x 2 INT16 y 1 BOOL オーバーライド再指示 11 不使用 ConfigureNotify 1 22 コード 1 不使用 2 CARD16 シーケンス数 4 WINDOW 事象 4 WINDOW ウィンドウ 4 WINDOW 上述の同胞 0 None 2 INT16 x 2 INT16 y 2 CARD16 幅 2 CARD16 高さ 2 CARD16 境界幅 1 BOOL オーバーライド再指示 5 不使用 ConfigureRequest 1 23 コード 1 スタックモード 0 Above 1 Below 2 Toplf 3 Bottomlf 4 Opposite 2 CARD16 シーケンス数 4 WINDOW 親 4 WINDOW ウィンドウ 4 WINDOW 同胞 0 None 2 INT16 x 2 INT16 y 2 CARD16 幅 2 CARD16 高さ 2 CARD16 境界幅 2 BITMASK 値マスク #x0001 x #x0002 y #x0004 幅 #x0008 高さ #x0010 境界幅 #x0020 同胞 #x0040 スタックモード 4 不使用 GravityNotify 1 24 コード 1 不使用 2 CARD16 シーケンス数 4 WINDOW 事象 4 WINDOW ウィンドウ 2 INT16 x 2 INT16 y 16 不使用 ResizeRequest 1 25 コード 1 不使用 2 CARD16 シーケンス数 4 WINDOW ウィンドウ 2 CARD16 幅 2 CARD16 高さ 20 不使用 CirculateNotify 1 26 コード 1 不使用 2 CARD16 シーケンス数 4 WINDOW 事象 4 WINDOW ウィンドウ 4 WINDOW 不使用 1 場所 0 Top 1 Bottom 15 不使用 CirculateRequest 1 27 コード 1 不使用 2 CARD16 シーケンス数 4 WINDOW 親 4 WINDOW ウィンドウ 4 不使用 1 場所 0 Top 1 Bottom 15 不使用 PropertyNotify 1 28 コード 1 不使用 2 CARD16 シーケンス数 4 WINDOW ウィンドウ 4 ATOM アトム 4 TIMESTAMP 時間 1 状態 0 NewValue 1 Deleted 15 不使用 SelectionClear 1 29 コード 1 不使用 2 CARD16 シーケンス数 4 TIMESTAMP 時間 4 WINDOW オーナー 4 ATOM 選択 16 不使用 SelectionRequest 1 30 コード 1 不使用 2 CARD16 シーケンス数 4 TIMESTAMP 時間 0 CurrentTime 4 WINDOW オーナー 4 WINDOW 要求子 4 ATOM 選択 4 ATOM 目的 4 ATOM 特性 0 None 4 不使用 SelectionNotify 1 31 コード 1 不使用 2 CARD16 シーケンス数 4 TIMESTAMP 時間 0 CurrentTime 4 WINDOW 要求子 4 ATOM 選択 4 ATOM 目的 4 ATOM 特性 0 None 8 不使用 ColormapNotify 1 32 コード 1 不使用 2 CARD16 シーケンス数 4 WINDOW ウィンドウ 4 COLORMAP カラーマップ 0 None 1 BOOL 新 1 状態 0 Uninstalled 1 Installed 18 不使用 ClientMessage 1 33 コード 1 CARD8 フォーマット 2 CARD16 シーケンス数 4 WINDOW ウィンドウ 4 ATOM タイプ 20 データ MappingNotify 1 34 コード 1 不使用 2 CARD16 シーケンス数 1 要求 0 Modifier 1 Keyboard 2 Pointer 1 KEYCODE 最初のキーコード 1 CARD8 カウント 25 不使用[Events] (Events) KeyPress 1 2 Code 1 KEYCODE Details 2 CARD16 Number of sequences 4 TIMESTAMP Time 4 WINDOW Root 4 WINDOW Event 4 WINDOW Child 0 None 2 INT16 Root x 2 INT16 Root 2x 2y UT 16S 2y UT 2S UT 16y 2U SYN 2U 16S event 1 BOOL same screen 1 not used KeyRelease 1 3 code 1 KEYCODE details 2 CARD16 sequence number 4 TIMESTAMP time 4 WINDOW route 4 WINDOW event 4 WINDOW terminal 0 None 2 INT16 route x 2 INT16 root y 2 INT16 event x 2 INT16 event y 2 SETofKEYBUTMASK State 1 BO OL Same screen 1 Not used ButtonPress 1 4 Code 1 BUTTON Detailed 2 CARD16 Number of sequences 4 TIMESTAMP Time 4 WINDOW Root 4 WINDOW Event 4 WINDOW Child 0 None 2 INT16 Root 16 2x16 INT 2 Root 16 2x16 INT 2 Root 16 2x 16 INT 2 Root 16 2x 16 INT 2 Root 16 2x 16 INT 2 Root 16 2x 16 INT 2 Root 16 2x 16 INT 2 root 1 BOOL Same screen 1 Not used Button Release 1 5 Code 1 BUTTON Detail 2 CARD16 Sequence number 4 TIMESTAMP time 4 WINDOW Root 4 WINDOW event 4 WINDOW Y WIN 2 UT16T 2 SY16 event x 2 INT16 route x 2 INT16 route x 2 INT16 route x 2 INT16 route x 2 INT16 route x 2 INT16 route State 1 Boolean Same screen 1 Not used MotionNotify 1 6 Code 1 Details 0 Normal 1 Hint 2 CARD 16 Sequence number 4 TIMESTAMP Time 4 WINDOW Root 4 WINDOW Event 4 WINDOW 2 IN 16 IN 2 root 16 IN 2 Root 2 IN 16 Root 2 IN 2 Root 16 IN 2 2 IN 16 root 2 IN 2 IN 16 root 2 IN 16 Event y 2 SETofKEYBUTMASK State 1 OOL Same Screen 1 Not Used EnterNotify 1 7 Code 1 Details 0 Ancestor 1 Virtual 2 INTER WORD IN WORW 4 WNW 4 NONLINEAR 4 Nonliner 4 Nonliner 4 Nonliner 4 Nonlinear 4 4 one 2 INT16 route x 2 INT16 route y 2 INT16 event x 2 INT16 event y 2 SETofKEYBUTMASK state 1 mode 0 Normal 1 Grab 2 Ungrab 1 same screen, focus # x01 focus (1 is true, 0 is false # # is false) 1 is true, 0 is false) #xfc Not used LeaveNotify 1 8 Code 1 Details 0 Ancestor 1 Virtual 2 Inferior 3 Nonlinear 4 Nonlinear WIN W 2 IN 4 W 0 IN W 2 W IN W 2 W IN 4 W 4 WIN W IN 4 WIN 4 WIN 4 WIN W IN 4 WIN 4 WIN 4 WIN 4 WIN 4 WIN 4 WIM 4 IN 4 WIN WIN 4 WIN 4 WIM 4 IN 4 WIN WIN 4 WIN WIN 4 WIN 4 WIN WIN 4 WIN 4 WIN 4 WIN 4 WORD 4 WIM IN IN Root 4 WIN 4 WIN 4 WIN of 4 of 4 WIN of WORD 4 of WORD IN of WORD 4 of WORD 4 WIN 4 2 INT16 route y 2 INT16 event x 2 INT16 event 2 SETofKEYBUTMASK State 1 Mode 0 Normal 1 Grab 2 Ungrab 1 Same screen, focus # x01 Focus (1 is true, 0 is false) # x02 Same screen (1 is true, 0 is false) #xfc Not used Focus1 1 9 Code details 0 Ancestor 1 Virtual 2 Inferior 3 Nonlinear 4 NonlinearVirtual 5 Pointer 6 PointerRoot 7 None 2 CARD16 sequence number 4 WINDOW events 1 mode 0 Normal 1 Grab 2 ungrab 3 WhileGrabbed 23 not used FocusOut 1 10 codes 1 details 0 Ancestor 1 Virtual 2 Inferior 3 Nonlinea 4 NonlinearVirtual 5 Pointer 6 PointerRoot 7 None 2 CARD16 Number of sequences 4 WINDOW Event 1 Mode 0 Normal 1 Grab 2 Ungrab 7y 0r 3 Keys 1 3c 8 Whip Grabed 23 a key Keys are not used. 12 Code 1 Not Used 2 CARD16 Sequence Number 4 WINDOW Window 2 CARD16 x 2 CARD16 y 2 CARD16 Width 2 CARD16 Height 2 CARD16 Count 14 Not Used GraphicsExposure 1 13 Code 1 Not Used 2 CARD16 Sequence Number 2 CARD16 WORD 4 D x 2 CARD16 y 2 CARD16 Width 2 CARD16 Height 2 CARD16 Small Opcode 2 CARD16 Count 1 CARD8 Large Opcode 11 Not Used NoExposure 1 14 Code 1 Not Used 2 CARD16 Sequence Number 4 DRAWABLE Drawable 2 CARD16 Small Opcode use VisibilityNotify 1 15 codes 1 not used 2 CARD16 sequence number 4 wINDOW window 1 state 0 Unobscured 1 PartiallyObscured 2 FullyObscured 23 unused CreateNotify 1 16 codes 1 not used 2 CARD16 sequence number 4 wINDOW parent 4 wINDOW window 2 INT16 2 INT16 y 2 CARD16 Width 2 CARD16 Height 2 CARD16 Border width 1 BOOT Override re-instruction 9 Not used DestroyNotify 1 17 Code 1 Not used 2 CARD16 Sequence number 4 WINDOW Event 20 Not used 2 p Not used 18 a Not used CARD16 Number of sequences 4 WINDOW event 4 WINDOW window 1 BOOT from configuration 19 Not used MapNotify 1 19 Code 1 Not used 2 CARD16 Number of sequences 4 WINDOW event 4 WINDOW q 1 COOL u 20 Red code not used Re-instruction not used 19 Sequence number 4 WINDOW Parent 4 W NDOW Window 20 Not Used RepeatNotify 1 21 Code 1 Not Used 2 CARD16 Number of Sequences 4 WINDOW Event 4 WINDOW Window 4 WINDOW Parent 2 INT16 x 2 INT16 y 1 BOOL Override Reindication 11 Not Used Config No 1 Config No Config2 Code2 4 WINDOW Event 4 WINDOW Window 4 WINDOW The same country as above 0 None 2 INT16 x 2 INT16 y 2 CARD16 Width 2 CARD16 Height 2 CARD16 Border Width 1 BOOL VOLE VO2 Stack Override Recode 0 Toplf 3 Botto lf 4 Opposite 2 CARD16 Sequence number 4 WINDOW Parent 4 WINDOW Window 4 WINDOW Brothers 0 None 2 INT16 x 2 INT16 y 2 CARD16 Width 2 CARD16 height 2 CARD16 Height 2 CARDx # BITx # 0002x 0002x # 0002x 0001x 0002x # 0002x 0001x 0002x # 0002x 0001x 0002x 0001x 0002x # 0002x # 0002x 0001x 0002x 0001x 0002x 0001x 0002x 0001x 0002x # # mask. Height # x0010 Border width # x0020 Brotherhood # x0040 Stack mode 4 Not used GravityNotify 1 24 Code 1 Not used 2 CARD16 Number of sequences 4 WINDOW Event 4 WINDOW Window 2 INT16 x 2 INT16 y 16 Not used Resize1 Resque code not used CARD16 Number of sequences 4 WINDOW window 2 CARD 6 Width 2 CARD16 Height 20 Not Used CirculateNotify 1 26 Code 1 Not Used 2 CARD16 Number of Sequences 4 WINDOW Event 4 WINDOW Window 4 WINDOW Not Used 1 Place 0 Top 1 Bottom 15 Not Used 2 CIRC1 Recirculate 4 wINDOW parent 4 wINDOW window 4 not used 1 location 0 Top 1 Bottom 15 unused PropertyNotify 1 28 codes 1 not used 2 CARD16 sequence number 4 wINDOW window 4 aTOM aTOM 4 TIMESTAMP time 1 state 0 NewValue 1 Deleted 15 not used SelectionClear 1 29 Code 1 Misuse 2 CARD16 Number of Sequences 4 TIMESTAMP Time 4 WINDOW Owner 4 ATOM Selection 16 Not Used Selection Request 1 30 Code 1 Not Used 2 CARD16 Number of Sequences 4 TIMESTAMP Time 0 Current Time TO M TO 4 M TOA 4 TOW ID 4 A Requirement 4 WINDOW Owner 4 A 4 Not Used SelectionNotify 1 31 Code 1 Not Used 2 CARD16 Number of Sequences 4 TIMESTAMP Time 0 CurrentTime 4 WINDOW Requester 4 ATOM Selection 4 ATOM Purpose 4 ATOM Characteristic 0 None 8 Not Used Color1Worth Code2 WORD1 Not Used 2 CORD 16 NDOW window 4 COLORMAP color map 0 None 1 Boolean new 1 state 0 Uninstalled 1 Installed 18 not used ClientMessage 1 33 code 1 CARD8 format 2 CARD 16 number 2 CARD16 number of sequences 4 WINDOW window of 4 data type 2 CARD16 number of codes 4 WINDOW window of data type 4 C code 16 CORD 16 No. 1 Request 0 Modifier 1 Keyboard 2 Pointer 1 KEYCODE First Key Code 1 CARD8 Count 25 Not Used
【図1】X11クライアント/サーバ・モデルの一例を
示す図。FIG. 1 is a diagram illustrating an example of an X11 client / server model.
【図2】XscopeがいかにX11システムに接続す
るかを示す図。FIG. 2 is a diagram showing how Xscope connects to an X11 system.
【図3】クライアント/サーバ・プロトコル交換の一例
を示す図。FIG. 3 is a diagram illustrating an example of a client / server protocol exchange.
【図4】クライアント/サーバ・プロトコル交換の一例
を示す図。FIG. 4 is a diagram showing an example of a client / server protocol exchange.
【図5】パケット復号後の図3のプロトコル交換を示す
図。5 shows the protocol exchange of FIG. 3 after packet decoding.
【図6】パケット復号後の図4のプロトコル交換を示す
図。6 shows the protocol exchange of FIG. 4 after packet decoding.
【図7】Xscopeプログラム論理の流れを示すフロ
ーチャート。FIG. 7 is a flow chart showing the flow of Xscope program logic.
【図8】XprogがいかにX11に接続するかを示す
図。FIG. 8 is a diagram showing how Xprog connects to X11.
【図9】Xprogプログラム論理の流れを示すフロー
チャート。FIG. 9 is a flowchart showing the flow of Xprog program logic.
【図10】X11パケットの一般構造を示す図。FIG. 10 is a diagram showing a general structure of an X11 packet.
50 クライアント 52 サーバ 90 XPROG 92 出力 50 client 52 server 90 XPROG 92 output
Claims (20)
・プロセスによって監視するステップ、及び前記コンピ
ュータ・プロセスによって前記データ流を模倣する一連
のコンピュータ命令を生成するステップを含むことを特
徴とするコンピュータ・プログラムの自動生成方法。1. A computer comprising the steps of: monitoring a data stream having a known syntax by a computer process; and generating a series of computer instructions that mimics the data stream by the computer process. Automatic program generation method.
セスを持ち,これらの間でメッセージを交換するコンピ
ュータ・システム内でプロセスをシミュレートするため
の方法において、前記方法が、 前記コンピュータ・システム内の前記クライアント・プ
ロセスと前記サーバ・プロセスの間のプロトコル交換を
監視するステップ、 前記監視の結果として、前記コンピュータ・システム上
で実行された場合、前記クライアント・プロセスを複製
する一連のコンピュータ命令を生成するステップ、及び
前記結果として得られるコンピュータ命令を前記クライ
アント・プロセスの代わりに前記サーバ・プロセスとの
関連で実行するステップを含むことを特徴とする方法。2. A method for simulating processes in a computer system having a client process and a server process and exchanging messages between them, the method comprising: the client in the computer system. Monitoring a protocol exchange between a process and the server process, as a result of the monitoring, generating a series of computer instructions that, when executed on the computer system, replicate the client process; And executing the resulting computer instructions in connection with the server process on behalf of the client process.
使用することを特徴とする請求項2の方法。3. The method of claim 2, wherein the protocol exchange uses the X11 protocol.
イアントであることを特徴とする請求項2の方法。4. The method of claim 2, wherein the client process is an X11 client.
ることを特徴とする請求項2の方法。5. The method of claim 2, wherein the server process is an X11 server.
を生成するための方法において、前記方法が、 前記コンピュータ・ソフトウエアとシステム呼びを持つ
コンピュータ・オペレーティング・システムとの間の情
報の交換を監視するステップ、及び前記監視の結果とし
て配布コンピュータ・プログラムを生成するステップを
含み、前記配布コンピュータ・プログラムが前記コンピ
ュータ・ソフトウエアが行なったのと同一のシーケンス
のシステム呼びを生成することを特徴とする方法。6. A method for producing a distributed copy of computer software, the method monitoring the exchange of information between the computer software and a computer operating system having a system call. , And generating a distribution computer program as a result of the monitoring, the distribution computer program generating the same sequence of system calls as the computer software did.
ーンにて実行可能なプログラムに変換するステップがさ
らに含まれることを特徴とする請求項6の方法。7. The method of claim 6, further comprising the step of converting the distribution computer program into a machine executable program.
を主張できるコンピュータ・ソフトウエアの配布コピー
を生成するための方法において、前記方法が、 前記コンピュータ・ソフトウエアとシステム呼びを持つ
コンピュータ・オペレーティング・システムとの間の情
報の交換を監視するステップ、及び前記監視の結果とし
て配布コンピュータ・プログラムを生成するステップを
含み、前記配布コンピュータ・プログラムが前記コンピ
ュータ・ソフトウエアが行なったのと同一のシーケンス
のシステム呼びを生成することを特徴とする方法。8. A method for producing a distribution copy of claimable computer software including claimable information therein, the method comprising a computer having the computer software and a system call. The same as the distribution computer program did, including the steps of monitoring the exchange of information with the operating system, and generating a distribution computer program as a result of the monitoring. A method of generating a system call of a sequence of.
ーンにて実行可能なプログラムに変換するステップがさ
らに含まれることを特徴とする請求項8の方法。9. The method of claim 8 further comprising the step of converting the distribution computer program into a machine executable program.
タによって監視するための監視手段、及び前記コンピュ
ータによって前記データ流を模倣する一連のコンピュー
タ命令を生成するための生成手段を備えたことを特徴と
するコンピュータ・プログラムをマシーン生成するため
の装置。10. A monitoring means for monitoring a data stream having a known syntax by a computer, and a generating means for generating a series of computer instructions by the computer to mimic the data stream. A device for generating a computer program that executes.
ロセスを持ち、これらの間でメッセージを交換するコン
ピュータ・システム内でプロセスをシミュレートするた
めの装置において、前記装置が、 前記コンピュータ・システム内において前記クライアン
ト・プロセスと前記サーバ・プロセスとの間のプロトコ
ル交換を監視するための監視手段、 前記監視の結果として前記コンピュータ・システム上で
実行された場合、前記クライアント・プロセスを複製す
る一連のコンピュータ命令を生成するための生成手段、
及び前記コンピュータ・システム内で前記結果としての
コンピュータ命令を前記クライアント・プロセスのかわ
りに、前記サーバ・プロセスとの関連で実行するための
実行手段を含むことを特徴とする装置。11. An apparatus for simulating processes in a computer system having a client process and a server process and exchanging messages between them, the apparatus comprising: the client in the computer system. Monitoring means for monitoring protocol exchanges between a process and the server process, generating a series of computer instructions that, when executed on the computer system as a result of the monitoring, replicate the client process Generation means for
And an executing means for executing the resulting computer instructions in the computer system on behalf of the client process in connection with the server process.
を使用することを特徴とする請求項11の装置。12. The apparatus of claim 11, wherein the protocol exchange uses the X11 protocol.
ライアントであることを特徴とする請求項11の装置。13. The apparatus of claim 11, wherein the client process is an X11 client.
あることを特徴とする請求項11の装置。14. The apparatus of claim 11, wherein the server process is an X11 server.
ーを生成するための装置において、前記装置が、 前記コンピュータ・ソフトウエアとシステム呼びを持つ
コンピュータ・オペレーティング・システムとの間の情
報の交換を監視するための監視手段、及び前記監視手段
の結果として配布コンピュータ・プログラムを生成する
ための生成手段を含み、前記配布コンピュータ・プログ
ラムが前記コンピュータ・ソフトウエアが行なったのと
同一の一連のシステム呼びを生成することを特徴とする
装置。15. A device for producing a distributed copy of computer software for monitoring the exchange of information between said computer software and a computer operating system having a system call. Monitoring means, and generating means for generating a distribution computer program as a result of the monitoring means, the distribution computer program generating the same series of system calls as the computer software did. A device characterized by the above.
シーンにて実行可能なプログラムに変換するための変換
手段がさらに含まれることを特徴とする請求項15の装
置。16. The apparatus of claim 15, further comprising conversion means for converting the distribution computer program into a machine executable program.
権を主張できるコンピュータ・ソフトウエアの配布コピ
ーを生成するための装置において、前記装置が、 前記所有権を主張できるコンピュータ・ソフトウエアと
システム呼びを持つコンピュータ・オペレーティング・
システムとの間の情報の交換を監視するための監視手
段、及び前記監視手段の結果として配布コンピュータ・
プログラムを生成するための生成手段を含み、前記配布
コンピュータ・プログラムが前記コンピュータ・ソフト
ウエアが行なったのと同一の一連のシステム呼びを生成
することを特徴とする装置。17. An apparatus for producing a distribution copy of claimable computer software, including claimable information therein, the apparatus comprising: claimable computer software. Computer operating system with system call
Monitoring means for monitoring the exchange of information with the system, and as a result of said monitoring means a distribution computer
An apparatus comprising generating means for generating a program, wherein the distribution computer program generates the same series of system calls as the computer software did.
シーンにて実行可能なプログラムに変換するための変換
手段がさらに含まれることを特徴とする請求項17の装
置。18. The apparatus of claim 17, further comprising conversion means for converting the distributed computer program into a machine executable program.
コンピュータ・プログラムをマシーン生成するためのコ
ンピュータ・プログラム製品において、前記有形のコン
ピュータ媒体が、 既知の構文を持つデータ流をコンピュータによって監視
するための監視手段、及び前記コンピュータによって前
記データ流を模倣する一連のコンピュータ命令を生成す
るための生成手段を含むことを特徴とするコンピュータ
・プログラム製品。19. A computer program product for machine generating a computer program fixed on a tangible computer medium, the tangible computer medium for monitoring by a computer a stream of data having a known syntax. A computer program product comprising monitoring means and generating means for generating a series of computer instructions by the computer that mimics the data stream.
コンピュータ・ソフトウエアの配布コピーを生成するた
めのコンピュータ・プログラム製品において、前記有形
のコンピュータ媒体が、 前記コンピュータ・ソフトウエアとシステム呼びを持つ
コンピュータ・オペレーティング・システムとの間の情
報の交換を監視するための監視手段、及び前記監視手段
の結果として配布コンピュータ・プログラムを生成する
ための生成手段を含み、前記配布コンピュータ・プログ
ラムが前記コンピュータ・ソフトウエアが行なったのと
同一の一連のシステム呼びを生成することを特徴とする
コンピュータ・プログラム製品。20. A computer program product for producing a distribution copy of computer software fixed on a tangible computer medium, wherein the tangible computer medium carries said computer software and a system call. A monitoring means for monitoring the exchange of information with the operating system, and a generating means for generating a distribution computer program as a result of the monitoring means, the distribution computer program being the computer software; A computer program product characterized by producing the same series of system calls as the ware did.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US61476490A | 1990-11-16 | 1990-11-16 | |
US614764 | 1996-03-13 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0667902A true JPH0667902A (en) | 1994-03-11 |
Family
ID=24462607
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP3263151A Pending JPH0667902A (en) | 1990-11-16 | 1991-09-13 | Method and apparatus for automatically generating computer program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0667902A (en) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62151052A (en) * | 1985-12-25 | 1987-07-06 | Nec Corp | Supervisory system for data line |
JPH01261735A (en) * | 1988-04-12 | 1989-10-18 | Nec Software Ltd | Debugging device for distributed processing program |
-
1991
- 1991-09-13 JP JP3263151A patent/JPH0667902A/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62151052A (en) * | 1985-12-25 | 1987-07-06 | Nec Corp | Supervisory system for data line |
JPH01261735A (en) * | 1988-04-12 | 1989-10-18 | Nec Software Ltd | Debugging device for distributed processing program |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9426259B2 (en) | Client server interaction for graphical/audio applications | |
US5261079A (en) | Interface for keyboard emulation provided by an operating system | |
Gosling et al. | The NeWS book: an introduction to the network/extensible window system | |
US8026920B2 (en) | Extensible visual effects on active content in user interfaces | |
RU2439675C2 (en) | Efficient coding of alternative graphical sets | |
US5764241A (en) | Method and system for modeling and presenting integrated media with a declarative modeling language for representing reactive behavior | |
Nye | X Protocol Reference Manual for X11, Release 6 | |
US10002403B2 (en) | Command remoting | |
KR20010020250A (en) | Hardware accelerator for an object-oriented programming language | |
JP2715374B2 (en) | Method for processing multiple mixed data objects in a data processing system | |
JPH10124290A (en) | Method and device for providing object-oriented approach for device-independent graphics control system | |
US5182797A (en) | Multi-processor graphics display system for displaying hierarchical data structures | |
JPH0667902A (en) | Method and apparatus for automatically generating computer program | |
CN114549724A (en) | Graphical construction method and system of GPU shader | |
JPH08329004A (en) | Method for improving terminal operability of application program use | |
Angebranndt et al. | Definition of the porting layer for the X v11 sample server | |
Nishikimi et al. | When fonts do not know everything: an extensible system for multilingual text rendering | |
KR100623305B1 (en) | Method for outputting the letter of open graphics library system on solaris | |
Koutsofios | Editing Pictures with lefty | |
Walmsley | Graphics programming in C++: writing graphics applications for Windows 98 | |
JP3105749B2 (en) | Screen display conversion method | |
Kasuba | Lua Game Development Cookbook | |
Mukherjee et al. | Computer Graphics: Algorithms and Implementations | |
Sweet et al. | FLTK 1.1. 10 Programming Manual | |
Scaplehorn | Marmalade SDK Mobile Game Development Essentials |