常见类型¶
LISTofFoo¶
LISTofFOO形式的类型名表示类型为FOO的元素的列表。length字段的大小可能不同(它不一定与FOO的大小相同),并且在某些情况下,它可能是隐式的。在附录b中有详细说明,除非特别注明,否则零长度列表是合法的。
BITMASK LISTofVALUE¶
BITMASK 和 LISTofVALUE 类型有些特殊。各种请求包含如下形式的参数:
value-mask: BITMASK
value-list: LISTofVALUE
这些参数用于允许客户端指定可选参数的异构集合的子集。
value-mask指定要提供哪些参数;每个这样的参数被分配一个唯一的bit位置。
BITMASK的表示通常会包含比定义的参数更多的位。掩码中未使用的位必须为零(否则服务器会产生一个Value错误)。从掩码中最低位到最高位,每个被设置为1的位都包含一个值。每个值都用四个字节表示,但实际值只占用所需的最低有效字节。未使用字节的值无关紧要。
OR¶
一种形式 “T1 or … or Tn” 表示所指示类型的并集。单元素类型作为不带大括号的元素给出。
WINDOW¶
32-bit 值,确保高 3 位为0
WINDOW¶
32-bit 值,确保高 3 位为0
PIXMAP¶
32-bit 值,确保高 3 位为0
CURSOR¶
32-bit 值,确保高 3 位为0
FONT¶
32-bit 值,确保高 3 位为0
GCONTEXT¶
32-bit 值,确保高 3 位为0
COLORMAP¶
32-bit 值,确保高 3 位为0
DRAWABLE¶
WINDOW 或 PIXMAP
FONTABLE¶
FONT 或 GCONTEXT
ATOM¶
32-bit 值,确保高 3 位为0
VISUALID¶
32-bit 值,确保高 3 位为0
VALUE¶
32位数量(仅在LISTofVALUE中使用)
BYTE¶
8 bit 值
INT8¶
8-bit 有符号整数
INT16¶
16-bit 有符号整数
INT32¶
32-bit 有符号整数
CARD8¶
8-bit 无符号整数
CARD16¶
16-bit 无符号整数
CARD32¶
32-bit 无符号整数
TIMESTAMP¶
CARD32
BITGRAVITY¶
{
Forget,
Static,
NorthWest,
North,
NorthEast,
West,
Center,
East,
SouthWest,
South,
SouthEast
}
WINGRAVITY¶
{
Unmap,
Static,
NorthWest,
North,
NorthEast,
West,
Center,
East,
SouthWest,
South,
SouthEast
}
BOOL¶
{
True,
False
}
EVENT¶
{
KeyPress,
KeyRelease,
OwnerGrabButton,
ButtonPress,
ButtonRelease,
EnterWindow,
LeaveWindow,
PointerMotion,
PointerMotionHint,
Button1Motion,
Button2Motion,
Button3Motion,
Button4Motion,
Button5Motion,
ButtonMotion,
Exposure,
VisibilityChange,
StructureNotify,
ResizeRedirect,
SubstructureNotify,
SubstructureRedirect,
FocusChange,
PropertyChange,
ColormapChange,
KeymapState
}
POINTEREVENT¶
{
ButtonPress,
ButtonRelease,
EnterWindow,
LeaveWindow,
PointerMotion,
PointerMotionHint,
Button1Motion,
Button2Motion,
Button3Motion,
Button4Motion,
Button5Motion,
ButtonMotion,
KeymapState
}
DEVICEEVENT¶
{
KeyPress,
KeyRelease,
ButtonPress,
ButtonRelease,
PointerMotion,
Button1Motion,
Button2Motion,
Button3Motion,
Button4Motion,
Button5Motion,
ButtonMotion
}
KEYSYM¶
32-bit 高三位为0
KEYCODE¶
CARD8
KEYMASK¶
{
Shift,
Lock,
Control,
Mod1,
Mod2,
Mod3,
Mod4,
Mod5
}
BUTMASK¶
{
Button1,
Button2,
Button3,
Button4,
Button5
}
KEYBUTMASK¶
KEYMASK or BUTMASK
STRING8¶
LISTofCARD8
STRING16¶
LISTofCHAR2B
CHAR2B¶
[ byte1, byte2: CARD8 ]
POINT¶
[ x, y: INT16]
RECTANGLE¶
[x, y: INT16, width, height: CARD16]
ARC¶
[x, y: INT16, width, height: CARD16, angle1, angle2: INT16]
HOST¶
[
family: {
Internet,
InternetV6,
ServerInterpreted,
DECnet,
Chaos
}
address: LISTofBYTE
]
RECTANGLE 的[x,y]坐标指定了其左上角。
对STRING16中大字符的主要解释是,它们由两个字节组成,用于索引二维矩阵,因此使用CHAR2B而不是CARD16。这对应于JIS/ISO索引2字节字符的方法。预计大多数大字体将使用2字节矩阵索引来定义。对于使用线性索引构造的大型字体,可以通过将byte1视为最高有效字节来将CHAR2B解释为16位数字。这意味着客户机应该总是先传输最重要字节的16位字符值,因为服务器永远不会对CHAR2B数量进行字节交换。
主机地址的长度、格式和解释是特定于family的(参见ChangeHosts请求)。