📄 rfc1013.txt
字号:
clients. Events are typically reported relative to a window.
Event mask
Events are requested relative to a window. The set of event
types a client requests relative to a window described using
an "event mask".
Event sychronization
There are certain race conditions possible when
demultiplexing device events to clients (in particular
deciding where pointer and keyboard events should be sent
when in the middle of window management operations). The
event synchronization mechanism allows synchronous processing
of device events.
M.I.T. [Page 6]
RFC 1013 June 1987
Event propagation
Device-related events "propagate" from the source window to
ancestor windows until some client has expressed interest in
handling that type of event, or until the event is discarded
explicitly.
Event source
The smallest window containing the pointer is the "source"
of a device related event.
Exposure event
Servers do not guarantee to preserve the contents of windows
when windows are obscured or reconfigur contents of regions
of windows have been lost.
Extension
Named "extensions" to the core protocol can be defined to
extend the system. Extension to output requests, resources,
and event types are all possible, and expected.
Font
A "font" is an array of glyphs (typically characters). The
protocol does no translation or interpretation of character
sets. The client simply indicates values used to index the
glyph array. A font contains additional metric information
to determine inter-glyph and inter-line spacing.
Glyph
A "glyph" is an image, typically of a character, in a font.
Grab
Keyboard keys, the keyboard, pointer buttons, the pointer,
and the server can be "grabbed" for exclusive use by a
client. In general, these facilities are not intended to be
used by normal applications, but are intended for various
input and window managers to implement various styles of
user interfaces.
Graphics context
Various information for graphics output is stored in "GC"'s,
such as foreground pixel, background pixel, line width,
clipping region, etc.
Hotspot
A cursor has an associated "hot spot" which defines a point
in the cursor that corresponds to the coordinates reported
for the pointer.
Identifier
Each resource has an "identifier", a unique value associated
with it that clients use to name the resource. An identifier
M.I.T. [Page 7]
RFC 1013 June 1987
can be used over any connection to name the resource.
Inferiors
The "inferiors" of a window are all of the subwindows nested
below it: the children, the children's children, etc.
Input focus
The "input focus" is nominally where keyboard input goes.
Keyboard events are by default sent to the client expressing
interest on the window the pointer is in. This is said to be
a "real estate driven" input focus. It is also possible to
attach the keyboard input to a specific window; events will
then be sent to the appropriate client independent of the
pointer position.
Input manager
Control over keyboard input is typically provided by an
"input manager" client.
InputOnly window
A window that cannot be used for graphics requests.
InputOnly windows are "invisible", and can be used to control
such things as cursors, input event generation, and grabbing.
InputOutput window
The "normal" kind of opaque window, used for both input
and output.
Key grabbing
Keys on the keyboard may be passively "grabbed" by a client.
When the key is pressed, the keyboard is then actively
grabbed by the client.
Keyboard grabbing
A client can actively "grab" control of the keyboard, and key
events will be sent to that client rather than the client the
events would normally have been sent to.
Mapping
A window is said to be "mapped" if a map call has been
performed on it. Unmapped windows are never viewable or
visible.
Modifier keys
Shift, Control, Meta, Super, Hyper, ALT, Compose, Apple,
CapsLock, ShiftLock, and similar keys are called "modifier"
keys.
Obscures
Window A "obscures" window B if both are viewable
InputOutput windows and A is higher in the global stacking
M.I.T. [Page 8]
RFC 1013 June 1987
order, and the rectangle defined by the outside edges of
intersects the rectangle defined by the outside edges of B.
Note the (fine) distinction with "occludes". Also note that
window borders are included in the calculation.
Occludes
Window A "occludes" window B if both are mapped and A is
higher in the global stacking order, and the rectangle
defined by the outside edges of A intersects the rectangle
defined by the outside edges of B. Note the (fine)
distinction with "obscures". Also note that window borders
are included in the calculation.
Padding
Some padding bytes are inserted in the data stream to
maintain alignment of the protocol requests on natural
boundaries. This increases ease of portability to some
machine architectures.
Parent window
If C is a child of P, then P is the "parent" of C.
Passive grab
Grabbing a key or button is a "passive" grab. The grab
activates when the key or button is actually pressed.
Pixel value
A "pixel" is an N-bit value, where N is the number of bit
planes used in a particular window or pixmap. For a window,
a pixel value indexes a colormap to derive an actual color
to be displayed.
Pixmap
A "pixmap" is a three dimensional array of bits. A pixmap
is normally thought of as a two dimensional array of pixels,
where each pixel can be a value from 0 to (2^N)-1, where N
is the depth (z axis) of the pixmap. A pixmap can also be
thought of as a stack of N bitmaps.
Plane mask
Graphics operations can be restricted to only affect a
subset of bit planes of a destination. A "plane mask" is
a bit mask describing which planes are to be modified, and
is stored in a graphics context.
Pointer
The "pointer" is the pointing device attached to the cursor,
and tracked on the screens.
Pointer grabbing
A client can actively "grab" control of the pointer, and
M.I.T. [Page 9]
RFC 1013 June 1987
button and motion events will be sent to that client rather
than the client the events would normally have been sent to.
Pointing device
A "pointing device" is typically a mouse or tablet, or some
other device with effective dimensional motion. There is
only one visible cursor is defined by the core protocol,
and it tracks whatever pointing device is attached as the
pointer.
Property
Windows may have associated "properties", consisting of a
name, a type, a data format, and some data. The protocol
places no interpretation on properties, they are intended
as a general-purpose naming mechanism for clients. For
example, clients might share information such as resize
hints, program names, and icon formats with a window
manager via properties.
Property list
The "property list" of a window is the list of properties
that have been defined for the window.
Redirecting control
Window managers (or client programs) may wish to enforce
window layout policy in various ways. When a client
attempts to change the size or position of a window, the
operation may be "redirected" to a specified client,
rather than the operation actually being performed.
Reply
Information requested by a client program is sent back to
the client with a "reply". Both events and replys are
multipexed on the same connection. Most requests do not
generate replies.
Request
A command to the server is called a "request". It is a
single block of data sent over a connection.
Resource
Windows, pixmaps, cursors, fonts, graphics contexts, and
colormaps are known as "resources". They all have unique
identifiers associated with them for naming purposes. The
lifetime of a resource is bounded by the lifetime of the
connection over which the resource was created.
Root
The "root" of a pixmap or gcontext is the same as the root
of whatever drawable was used when the pixmap or gcontext
was created. The "root" of a window is the root window
M.I.T. [Page 10]
RFC 1013 June 1987
under which the window was created.
Root window
Each screen has a "root window" covering it. It cannot be
reconfigured or unmapped, but otherwise acts as a full
fledged window. A root window has no parent.
Save set
The "save set" of a client is a list of other client's
windows which, if they are inferiors of one of the client's
windows at connection close, should not be destroyed, and
which should be remapped if it is unmapped. Save sets are
typically used by window managers to avoid lost windows if
the manager should terminate abnormally.
Screen
A server may provide several independent "screens", which
typically have physically independent monitors. This would
be the expected configuration when there is only a single
keyboard and pointer shared among the screens.
Server
The "server" provides the basic windowing mechanism. It
handles IPC connections from clients, demultipexes graphics
requests onto the screens, and multiplexes input back to the
appropriate clients.
Server grabbing
The server can be "grabbed" by a single client for exclusive
use. This prevents processing of any requests from other
client connections until the grab is complete. This is
typically only a transient state for such things as
rubber-banding and pop-up menus, or to execute requests
indivisibly.
Sibling
Children of the same parent window are known as "sibling"
windows.
Stacking order
Sibling windows may "stack" on top of each other. Windows
above both obscure and occlude lower windows. This is
similar to paper on a desk. The relationship between
sibling windows is known as the "stacking order".
Stipple
A "stipple pattern" is a bitmap that is used to tile a
region to serve as an additional clip mask for a fill
operation with the foreground color.
M.I.T. [Page 11]
RFC 1013 June 1987
Tile
A pixmap can be replicated in two dimensions to "tile"
a region. The pixmap itself is also known as a "tile".
Timestamp
A time value, expressed in milliseconds, typically since
the last server reset. Timestamp values wrap around (after
about 49.7 days). The server, given its current time is
represented by timestamp T, always interprets timestamps
from clients by treating half of the timestamp space as
being earlier in time than T, and half of the timestamp
space as being later in time than T. One timestamp value
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -