You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1901 lines
46 KiB

2 years ago
# Xlib.protocol.request -- definitions of core requests
#
# Copyright (C) 2000-2002 Peter Liljenberg <petli@ctrl-c.liu.se>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public License
# as published by the Free Software Foundation; either version 2.1
# of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc.,
# 59 Temple Place,
# Suite 330,
# Boston, MA 02111-1307 USA
# Xlib modules
from .. import X
# Xlib.protocol modules
from . import rq
from . import structs
class CreateWindow(rq.Request):
_request = rq.Struct(
rq.Opcode(1),
rq.Card8('depth'),
rq.RequestLength(),
rq.Window('wid'),
rq.Window('parent'),
rq.Int16('x'),
rq.Int16('y'),
rq.Card16('width'),
rq.Card16('height'),
rq.Card16('border_width'),
rq.Set('window_class', 2, (X.CopyFromParent, X.InputOutput, X.InputOnly)),
rq.Card32('visual'),
structs.WindowValues('attrs'),
)
class ChangeWindowAttributes(rq.Request):
_request = rq.Struct(
rq.Opcode(2),
rq.Pad(1),
rq.RequestLength(),
rq.Window('window'),
structs.WindowValues('attrs'),
)
class GetWindowAttributes(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(3),
rq.Pad(1),
rq.RequestLength(),
rq.Window('window')
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Card8('backing_store'),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Card32('visual'),
rq.Card16('win_class'),
rq.Card8('bit_gravity'),
rq.Card8('win_gravity'),
rq.Card32('backing_bit_planes'),
rq.Card32('backing_pixel'),
rq.Card8('save_under'),
rq.Card8('map_is_installed'),
rq.Card8('map_state'),
rq.Card8('override_redirect'),
rq.Colormap('colormap', (X.NONE, )),
rq.Card32('all_event_masks'),
rq.Card32('your_event_mask'),
rq.Card16('do_not_propagate_mask'),
rq.Pad(2),
)
class DestroyWindow(rq.Request):
_request = rq.Struct(
rq.Opcode(4),
rq.Pad(1),
rq.RequestLength(),
rq.Window('window')
)
class DestroySubWindows(rq.Request):
_request = rq.Struct(
rq.Opcode(5),
rq.Pad(1),
rq.RequestLength(),
rq.Window('window')
)
class ChangeSaveSet(rq.Request):
_request = rq.Struct(
rq.Opcode(6),
rq.Set('mode', 1, (X.SetModeInsert, X.SetModeDelete)),
rq.RequestLength(),
rq.Window('window'),
)
class ReparentWindow(rq.Request):
_request = rq.Struct(
rq.Opcode(7),
rq.Pad(1),
rq.RequestLength(),
rq.Window('window'),
rq.Window('parent'),
rq.Int16('x'),
rq.Int16('y'),
)
class MapWindow(rq.Request):
_request = rq.Struct(
rq.Opcode(8),
rq.Pad(1),
rq.RequestLength(),
rq.Window('window')
)
class MapSubwindows(rq.Request):
_request = rq.Struct(
rq.Opcode(9),
rq.Pad(1),
rq.RequestLength(),
rq.Window('window')
)
class UnmapWindow(rq.Request):
_request = rq.Struct(
rq.Opcode(10),
rq.Pad(1),
rq.RequestLength(),
rq.Window('window')
)
class UnmapSubwindows(rq.Request):
_request = rq.Struct(
rq.Opcode(11),
rq.Pad(1),
rq.RequestLength(),
rq.Window('window')
)
class ConfigureWindow(rq.Request):
_request = rq.Struct(
rq.Opcode(12),
rq.Pad(1),
rq.RequestLength(),
rq.Window('window'),
rq.ValueList( 'attrs', 2, 2,
rq.Int16('x'),
rq.Int16('y'),
rq.Card16('width'),
rq.Card16('height'),
rq.Int16('border_width'),
rq.Window('sibling'),
rq.Set('stack_mode', 1,
(X.Above, X.Below, X.TopIf,
X.BottomIf, X.Opposite))
)
)
class CirculateWindow(rq.Request):
_request = rq.Struct(
rq.Opcode(13),
rq.Set('direction', 1, (X.RaiseLowest, X.LowerHighest)),
rq.RequestLength(),
rq.Window('window'),
)
class GetGeometry(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(14),
rq.Pad(1),
rq.RequestLength(),
rq.Drawable('drawable')
)
_reply = rq.Struct (
rq.ReplyCode(),
rq.Card8('depth'),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Window('root'),
rq.Int16('x'),
rq.Int16('y'),
rq.Card16('width'),
rq.Card16('height'),
rq.Card16('border_width'),
rq.Pad(10)
)
class QueryTree(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(15),
rq.Pad(1),
rq.RequestLength(),
rq.Window('window')
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Pad(1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Window('root'),
rq.Window('parent', (X.NONE, )),
rq.LengthOf('children', 2),
rq.Pad(14),
rq.List('children', rq.WindowObj),
)
class InternAtom(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(16),
rq.Bool('only_if_exists'),
rq.RequestLength(),
rq.LengthOf('name', 2),
rq.Pad(2),
rq.String8('name'),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Pad(1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Card32('atom'),
rq.Pad(20),
)
class GetAtomName(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(17),
rq.Pad(1),
rq.RequestLength(),
rq.Card32('atom')
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Pad(1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.LengthOf('name', 2),
rq.Pad(22),
rq.String8('name'),
)
class ChangeProperty(rq.Request):
_request = rq.Struct(
rq.Opcode(18),
rq.Set('mode', 1, (X.PropModeReplace, X.PropModePrepend, X.PropModeAppend)),
rq.RequestLength(),
rq.Window('window'),
rq.Card32('property'),
rq.Card32('type'),
rq.Format('data', 1),
rq.Pad(3),
rq.LengthOf('data', 4),
rq.PropertyData('data'),
)
class DeleteProperty(rq.Request):
_request = rq.Struct(
rq.Opcode(19),
rq.Pad(1),
rq.RequestLength(),
rq.Window('window'),
rq.Card32('property'),
)
class GetProperty(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(20),
rq.Bool('delete'),
rq.RequestLength(),
rq.Window('window'),
rq.Card32('property'),
rq.Card32('type'),
rq.Card32('long_offset'),
rq.Card32('long_length'),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Format('value', 1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Card32('property_type'),
rq.Card32('bytes_after'),
rq.LengthOf('value', 4),
rq.Pad(12),
rq.PropertyData('value'),
)
class ListProperties(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(21),
rq.Pad(1),
rq.RequestLength(),
rq.Window('window')
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Pad(1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.LengthOf('atoms', 2),
rq.Pad(22),
rq.List('atoms', rq.Card32Obj),
)
class SetSelectionOwner(rq.Request):
_request = rq.Struct(
rq.Opcode(22),
rq.Pad(1),
rq.RequestLength(),
rq.Window('window'),
rq.Card32('selection'),
rq.Card32('time'),
)
class GetSelectionOwner(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(23),
rq.Pad(1),
rq.RequestLength(),
rq.Card32('selection')
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Pad(1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Window('owner', (X.NONE, )),
rq.Pad(20),
)
class ConvertSelection(rq.Request):
_request = rq.Struct(
rq.Opcode(24),
rq.Pad(1),
rq.RequestLength(),
rq.Window('requestor'),
rq.Card32('selection'),
rq.Card32('target'),
rq.Card32('property'),
rq.Card32('time'),
)
class SendEvent(rq.Request):
_request = rq.Struct(
rq.Opcode(25),
rq.Bool('propagate'),
rq.RequestLength(),
rq.Window('destination'),
rq.Card32('event_mask'),
rq.EventField('event'),
)
class GrabPointer(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(26),
rq.Bool('owner_events'),
rq.RequestLength(),
rq.Window('grab_window'),
rq.Card16('event_mask'),
rq.Set('pointer_mode', 1, (X.GrabModeSync, X.GrabModeAsync)),
rq.Set('keyboard_mode', 1, (X.GrabModeSync, X.GrabModeAsync)),
rq.Window('confine_to', (X.NONE, )),
rq.Cursor('cursor', (X.NONE, )),
rq.Card32('time'),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Card8('status'),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Pad(24),
)
class UngrabPointer(rq.Request):
_request = rq.Struct(
rq.Opcode(27),
rq.Pad(1),
rq.RequestLength(),
rq.Card32('time')
)
class GrabButton(rq.Request):
_request = rq.Struct(
rq.Opcode(28),
rq.Bool('owner_events'),
rq.RequestLength(),
rq.Window('grab_window'),
rq.Card16('event_mask'),
rq.Set('pointer_mode', 1, (X.GrabModeSync, X.GrabModeAsync)),
rq.Set('keyboard_mode', 1, (X.GrabModeSync, X.GrabModeAsync)),
rq.Window('confine_to', (X.NONE, )),
rq.Cursor('cursor', (X.NONE, )),
rq.Card8('button'),
rq.Pad(1),
rq.Card16('modifiers'),
)
class UngrabButton(rq.Request):
_request = rq.Struct(
rq.Opcode(29),
rq.Card8('button'),
rq.RequestLength(),
rq.Window('grab_window'),
rq.Card16('modifiers'),
rq.Pad(2),
)
class ChangeActivePointerGrab(rq.Request):
_request = rq.Struct(
rq.Opcode(30),
rq.Pad(1),
rq.RequestLength(),
rq.Cursor('cursor'),
rq.Card32('time'),
rq.Card16('event_mask'),
rq.Pad(2),
)
class GrabKeyboard(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(31),
rq.Bool('owner_events'),
rq.RequestLength(),
rq.Window('grab_window'),
rq.Card32('time'),
rq.Set('pointer_mode', 1, (X.GrabModeSync, X.GrabModeAsync)),
rq.Set('keyboard_mode', 1, (X.GrabModeSync, X.GrabModeAsync)),
rq.Pad(2),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Card8('status'),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Pad(24),
)
class UngrabKeyboard(rq.Request):
_request = rq.Struct(
rq.Opcode(32),
rq.Pad(1),
rq.RequestLength(),
rq.Card32('time')
)
class GrabKey(rq.Request):
_request = rq.Struct(
rq.Opcode(33),
rq.Bool('owner_events'),
rq.RequestLength(),
rq.Window('grab_window'),
rq.Card16('modifiers'),
rq.Card8('key'),
rq.Set('pointer_mode', 1, (X.GrabModeSync, X.GrabModeAsync)),
rq.Set('keyboard_mode', 1, (X.GrabModeSync, X.GrabModeAsync)),
rq.Pad(3),
)
class UngrabKey(rq.Request):
_request = rq.Struct(
rq.Opcode(34),
rq.Card8('key'),
rq.RequestLength(),
rq.Window('grab_window'),
rq.Card16('modifiers'),
rq.Pad(2),
)
class AllowEvents(rq.Request):
_request = rq.Struct(
rq.Opcode(35),
rq.Set('mode', 1, (X.AsyncPointer,
X.SyncPointer,
X.ReplayPointer,
X.AsyncKeyboard,
X.SyncKeyboard,
X.ReplayKeyboard,
X.AsyncBoth,
X.SyncBoth)),
rq.RequestLength(),
rq.Card32('time'),
)
class GrabServer(rq.Request):
_request = rq.Struct(
rq.Opcode(36),
rq.Pad(1),
rq.RequestLength(),
)
class UngrabServer(rq.Request):
_request = rq.Struct(
rq.Opcode(37),
rq.Pad(1),
rq.RequestLength(),
)
class QueryPointer(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(38),
rq.Pad(1),
rq.RequestLength(),
rq.Window('window')
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Card8('same_screen'),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Window('root'),
rq.Window('child', (X.NONE, )),
rq.Int16('root_x'),
rq.Int16('root_y'),
rq.Int16('win_x'),
rq.Int16('win_y'),
rq.Card16('mask'),
rq.Pad(6),
)
class GetMotionEvents(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(39),
rq.Pad(1),
rq.RequestLength(),
rq.Window('window'),
rq.Card32('start'),
rq.Card32('stop'),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Pad(1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.LengthOf('events', 4),
rq.Pad(20),
rq.List('events', structs.TimeCoord),
)
class TranslateCoords(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(40),
rq.Pad(1),
rq.RequestLength(),
rq.Window('src_wid'),
rq.Window('dst_wid'),
rq.Int16('src_x'),
rq.Int16('src_y'),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Card8('same_screen'),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Window('child', (X.NONE, )),
rq.Int16('x'),
rq.Int16('y'),
rq.Pad(16),
)
class WarpPointer(rq.Request):
_request = rq.Struct(
rq.Opcode(41),
rq.Pad(1),
rq.RequestLength(),
rq.Window('src_window'),
rq.Window('dst_window'),
rq.Int16('src_x'),
rq.Int16('src_y'),
rq.Card16('src_width'),
rq.Card16('src_height'),
rq.Int16('dst_x'),
rq.Int16('dst_y'),
)
class SetInputFocus(rq.Request):
_request = rq.Struct(
rq.Opcode(42),
rq.Set('revert_to', 1, (X.RevertToNone, X.RevertToPointerRoot,
X.RevertToParent)),
rq.RequestLength(),
rq.Window('focus'),
rq.Card32('time'),
)
class GetInputFocus(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(43),
rq.Pad(1),
rq.RequestLength(),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Card8('revert_to'),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Window('focus', (X.NONE, X.PointerRoot)),
rq.Pad(20),
)
class QueryKeymap(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(44),
rq.Pad(1),
rq.RequestLength(),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Pad(1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.FixedList('map', 32, rq.Card8Obj),
)
class OpenFont(rq.Request):
_request = rq.Struct(
rq.Opcode(45),
rq.Pad(1),
rq.RequestLength(),
rq.Font('fid'),
rq.LengthOf('name', 2),
rq.Pad(2),
rq.String8('name'),
)
class CloseFont(rq.Request):
_request = rq.Struct(
rq.Opcode(46),
rq.Pad(1),
rq.RequestLength(),
rq.Font('font')
)
class QueryFont(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(47),
rq.Pad(1),
rq.RequestLength(),
rq.Fontable('font')
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Pad(1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Object('min_bounds', structs.CharInfo),
rq.Pad(4),
rq.Object('max_bounds', structs.CharInfo),
rq.Pad(4),
rq.Card16('min_char_or_byte2'),
rq.Card16('max_char_or_byte2'),
rq.Card16('default_char'),
rq.LengthOf('properties', 2),
rq.Card8('draw_direction'),
rq.Card8('min_byte1'),
rq.Card8('max_byte1'),
rq.Card8('all_chars_exist'),
rq.Int16('font_ascent'),
rq.Int16('font_descent'),
rq.LengthOf('char_infos', 4),
rq.List('properties', structs.FontProp),
rq.List('char_infos', structs.CharInfo),
)
class QueryTextExtents(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(48),
rq.OddLength('string'),
rq.RequestLength(),
rq.Fontable('font'),
rq.String16('string'),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Card8('draw_direction'),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Int16('font_ascent'),
rq.Int16('font_descent'),
rq.Int16('overall_ascent'),
rq.Int16('overall_descent'),
rq.Int32('overall_width'),
rq.Int32('overall_left'),
rq.Int32('overall_right'),
rq.Pad(4),
)
class ListFonts(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(49),
rq.Pad(1),
rq.RequestLength(),
rq.Card16('max_names'),
rq.LengthOf('pattern', 2),
rq.String8('pattern'),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Pad(1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.LengthOf('fonts', 2),
rq.Pad(22),
rq.List('fonts', rq.Str),
)
class ListFontsWithInfo(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(50),
rq.Pad(1),
rq.RequestLength(),
rq.Card16('max_names'),
rq.LengthOf('pattern', 2),
rq.String8('pattern'),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.LengthOf('name', 1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Object('min_bounds', structs.CharInfo),
rq.Pad(4),
rq.Object('max_bounds', structs.CharInfo),
rq.Pad(4),
rq.Card16('min_char_or_byte2'),
rq.Card16('max_char_or_byte2'),
rq.Card16('default_char'),
rq.LengthOf('properties', 2),
rq.Card8('draw_direction'),
rq.Card8('min_byte1'),
rq.Card8('max_byte1'),
rq.Card8('all_chars_exist'),
rq.Int16('font_ascent'),
rq.Int16('font_descent'),
rq.Card32('replies_hint'),
rq.List('properties', structs.FontProp),
rq.String8('name'),
)
# Somebody must have smoked some really wicked weed when they
# defined the ListFontsWithInfo request:
# The server sends a reply for _each_ matching font...
# It then sends a special reply (name length == 0) to indicate
# that there are no more fonts in the reply.
# This means that we have to do some special parsing to see if
# we have got the end-of-reply reply. If we haven't, we
# have to reinsert the request in the front of the
# display.sent_request queue to catch the next response.
# Bastards.
def __init__(self, *args, **keys):
self._fonts = []
rq.ReplyRequest.__init__(self, *args, **keys)
def _parse_response(self, data):
if ord(data[1]) == 0:
self._response_lock.acquire()
self._data = self._fonts
del self._fonts
self._response_lock.release()
return
r, d = self._reply.parse_binary(data)
self._fonts.append(r)
self._display.sent_requests.insert(0, self)
# Override the default __getattr__, since it isn't usable for
# the list reply. Instead provide a __getitem__ and a __len__.
def __getattr__(self, attr):
raise AttributeError(attr)
def __getitem__(self, item):
return self._data[item]
def __len__(self):
return len(self._data)
class SetFontPath(rq.Request):
_request = rq.Struct(
rq.Opcode(51),
rq.Pad(1),
rq.RequestLength(),
rq.LengthOf('path', 2),
rq.Pad(2),
rq.List('path', rq.Str),
)
class GetFontPath(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(52),
rq.Pad(1),
rq.RequestLength(),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Pad(1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.LengthOf('paths', 2),
rq.Pad(22),
rq.List('paths', rq.Str),
)
class CreatePixmap(rq.Request):
_request = rq.Struct(
rq.Opcode(53),
rq.Card8('depth'),
rq.RequestLength(),
rq.Pixmap('pid'),
rq.Drawable('drawable'),
rq.Card16('width'),
rq.Card16('height'),
)
class FreePixmap(rq.Request):
_request = rq.Struct(
rq.Opcode(54),
rq.Pad(1),
rq.RequestLength(),
rq.Pixmap('pixmap')
)
class CreateGC(rq.Request):
_request = rq.Struct(
rq.Opcode(55),
rq.Pad(1),
rq.RequestLength(),
rq.GC('cid'),
rq.Drawable('drawable'),
structs.GCValues('attrs'),
)
class ChangeGC(rq.Request):
_request = rq.Struct(
rq.Opcode(56),
rq.Pad(1),
rq.RequestLength(),
rq.GC('gc'),
structs.GCValues('attrs'),
)
class CopyGC(rq.Request):
_request = rq.Struct(
rq.Opcode(57),
rq.Pad(1),
rq.RequestLength(),
rq.GC('src_gc'),
rq.GC('dst_gc'),
rq.Card32('mask'),
)
class SetDashes(rq.Request):
_request = rq.Struct(
rq.Opcode(58),
rq.Pad(1),
rq.RequestLength(),
rq.GC('gc'),
rq.Card16('dash_offset'),
rq.LengthOf('dashes', 2),
rq.List('dashes', rq.Card8Obj),
)
class SetClipRectangles(rq.Request):
_request = rq.Struct(
rq.Opcode(59),
rq.Set('ordering', 1, (X.Unsorted, X.YSorted, X.YXSorted, X.YXBanded)),
rq.RequestLength(),
rq.GC('gc'),
rq.Int16('x_origin'),
rq.Int16('y_origin'),
rq.List('rectangles', structs.Rectangle),
)
class FreeGC(rq.Request):
_request = rq.Struct(
rq.Opcode(60),
rq.Pad(1),
rq.RequestLength(),
rq.GC('gc')
)
class ClearArea(rq.Request):
_request = rq.Struct(
rq.Opcode(61),
rq.Bool('exposures'),
rq.RequestLength(),
rq.Window('window'),
rq.Int16('x'),
rq.Int16('y'),
rq.Card16('width'),
rq.Card16('height'),
)
class CopyArea(rq.Request):
_request = rq.Struct(
rq.Opcode(62),
rq.Pad(1),
rq.RequestLength(),
rq.Drawable('src_drawable'),
rq.Drawable('dst_drawable'),
rq.GC('gc'),
rq.Int16('src_x'),
rq.Int16('src_y'),
rq.Int16('dst_x'),
rq.Int16('dst_y'),
rq.Card16('width'),
rq.Card16('height'),
)
class CopyPlane(rq.Request):
_request = rq.Struct(
rq.Opcode(63),
rq.Pad(1),
rq.RequestLength(),
rq.Drawable('src_drawable'),
rq.Drawable('dst_drawable'),
rq.GC('gc'),
rq.Int16('src_x'),
rq.Int16('src_y'),
rq.Int16('dst_x'),
rq.Int16('dst_y'),
rq.Card16('width'),
rq.Card16('height'),
rq.Card32('bit_plane'),
)
class PolyPoint(rq.Request):
_request = rq.Struct(
rq.Opcode(64),
rq.Set('coord_mode', 1, (X.CoordModeOrigin, X.CoordModePrevious)),
rq.RequestLength(),
rq.Drawable('drawable'),
rq.GC('gc'),
rq.List('points', structs.Point),
)
class PolyLine(rq.Request):
_request = rq.Struct(
rq.Opcode(65),
rq.Set('coord_mode', 1, (X.CoordModeOrigin, X.CoordModePrevious)),
rq.RequestLength(),
rq.Drawable('drawable'),
rq.GC('gc'),
rq.List('points', structs.Point),
)
class PolySegment(rq.Request):
_request = rq.Struct(
rq.Opcode(66),
rq.Pad(1),
rq.RequestLength(),
rq.Drawable('drawable'),
rq.GC('gc'),
rq.List('segments', structs.Segment),
)
class PolyRectangle(rq.Request):
_request = rq.Struct(
rq.Opcode(67),
rq.Pad(1),
rq.RequestLength(),
rq.Drawable('drawable'),
rq.GC('gc'),
rq.List('rectangles', structs.Rectangle),
)
class PolyArc(rq.Request):
_request = rq.Struct(
rq.Opcode(68),
rq.Pad(1),
rq.RequestLength(),
rq.Drawable('drawable'),
rq.GC('gc'),
rq.List('arcs', structs.Arc),
)
class FillPoly(rq.Request):
_request = rq.Struct(
rq.Opcode(69),
rq.Pad(1),
rq.RequestLength(),
rq.Drawable('drawable'),
rq.GC('gc'),
rq.Set('shape', 1, (X.Complex, X.Nonconvex, X.Convex)),
rq.Set('coord_mode', 1, (X.CoordModeOrigin, X.CoordModePrevious)),
rq.Pad(2),
rq.List('points', structs.Point),
)
class PolyFillRectangle(rq.Request):
_request = rq.Struct(
rq.Opcode(70),
rq.Pad(1),
rq.RequestLength(),
rq.Drawable('drawable'),
rq.GC('gc'),
rq.List('rectangles', structs.Rectangle),
)
class PolyFillArc(rq.Request):
_request = rq.Struct(
rq.Opcode(71),
rq.Pad(1),
rq.RequestLength(),
rq.Drawable('drawable'),
rq.GC('gc'),
rq.List('arcs', structs.Arc),
)
class PutImage(rq.Request):
_request = rq.Struct(
rq.Opcode(72),
rq.Set('format', 1, (X.XYBitmap, X.XYPixmap, X.ZPixmap)),
rq.RequestLength(),
rq.Drawable('drawable'),
rq.GC('gc'),
rq.Card16('width'),
rq.Card16('height'),
rq.Int16('dst_x'),
rq.Int16('dst_y'),
rq.Card8('left_pad'),
rq.Card8('depth'),
rq.Pad(2),
rq.Binary('data'),
)
class GetImage(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(73),
rq.Set('format', 1, (X.XYPixmap, X.ZPixmap)),
rq.RequestLength(),
rq.Drawable('drawable'),
rq.Int16('x'),
rq.Int16('y'),
rq.Card16('width'),
rq.Card16('height'),
rq.Card32('plane_mask'),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Card8('depth'),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Card32('visual'),
rq.Pad(20),
rq.Binary('data'),
)
class PolyText8(rq.Request):
_request = rq.Struct(
rq.Opcode(74),
rq.Pad(1),
rq.RequestLength(),
rq.Drawable('drawable'),
rq.GC('gc'),
rq.Int16('x'),
rq.Int16('y'),
rq.TextElements8('items'),
)
class PolyText16(rq.Request):
_request = rq.Struct(
rq.Opcode(75),
rq.Pad(1),
rq.RequestLength(),
rq.Drawable('drawable'),
rq.GC('gc'),
rq.Int16('x'),
rq.Int16('y'),
rq.TextElements16('items'),
)
class ImageText8(rq.Request):
_request = rq.Struct(
rq.Opcode(76),
rq.LengthOf('string', 1),
rq.RequestLength(),
rq.Drawable('drawable'),
rq.GC('gc'),
rq.Int16('x'),
rq.Int16('y'),
rq.String8('string'),
)
class ImageText16(rq.Request):
_request = rq.Struct(
rq.Opcode(77),
rq.LengthOf('string', 1),
rq.RequestLength(),
rq.Drawable('drawable'),
rq.GC('gc'),
rq.Int16('x'),
rq.Int16('y'),
rq.String16('string'),
)
class CreateColormap(rq.Request):
_request = rq.Struct(
rq.Opcode(78),
rq.Set('alloc', 1, (X.AllocNone, X.AllocAll)),
rq.RequestLength(),
rq.Colormap('mid'),
rq.Window('window'),
rq.Card32('visual'),
)
class FreeColormap(rq.Request):
_request = rq.Struct(
rq.Opcode(79),
rq.Pad(1),
rq.RequestLength(),
rq.Colormap('cmap')
)
class CopyColormapAndFree(rq.Request):
_request = rq.Struct(
rq.Opcode(80),
rq.Pad(1),
rq.RequestLength(),
rq.Colormap('mid'),
rq.Colormap('src_cmap'),
)
class InstallColormap(rq.Request):
_request = rq.Struct(
rq.Opcode(81),
rq.Pad(1),
rq.RequestLength(),
rq.Colormap('cmap')
)
class UninstallColormap(rq.Request):
_request = rq.Struct(
rq.Opcode(82),
rq.Pad(1),
rq.RequestLength(),
rq.Colormap('cmap')
)
class ListInstalledColormaps(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(83),
rq.Pad(1),
rq.RequestLength(),
rq.Window('window')
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Pad(1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.LengthOf('cmaps', 2),
rq.Pad(22),
rq.List('cmaps', rq.ColormapObj),
)
class AllocColor(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(84),
rq.Pad(1),
rq.RequestLength(),
rq.Colormap('cmap'),
rq.Card16('red'),
rq.Card16('green'),
rq.Card16('blue'),
rq.Pad(2),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Pad(1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Card16('red'),
rq.Card16('green'),
rq.Card16('blue'),
rq.Pad(2),
rq.Card32('pixel'),
rq.Pad(12),
)
class AllocNamedColor(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(85),
rq.Pad(1),
rq.RequestLength(),
rq.Colormap('cmap'),
rq.LengthOf('name', 2),
rq.Pad(2),
rq.String8('name'),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Pad(1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Card32('pixel'),
rq.Card16('exact_red'),
rq.Card16('exact_green'),
rq.Card16('exact_blue'),
rq.Card16('screen_red'),
rq.Card16('screen_green'),
rq.Card16('screen_blue'),
rq.Pad(8),
)
class AllocColorCells(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(86),
rq.Bool('contiguous'),
rq.RequestLength(),
rq.Colormap('cmap'),
rq.Card16('colors'),
rq.Card16('planes'),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Pad(1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.LengthOf('pixels', 2),
rq.LengthOf('masks', 2),
rq.Pad(20),
rq.List('pixels', rq.Card32Obj),
rq.List('masks', rq.Card32Obj),
)
class AllocColorPlanes(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(87),
rq.Bool('contiguous'),
rq.RequestLength(),
rq.Colormap('cmap'),
rq.Card16('colors'),
rq.Card16('red'),
rq.Card16('green'),
rq.Card16('blue'),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Pad(1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.LengthOf('pixels', 2),
rq.Pad(2),
rq.Card32('red_mask'),
rq.Card32('green_mask'),
rq.Card32('blue_mask'),
rq.Pad(8),
rq.List('pixels', rq.Card32Obj),
)
class FreeColors(rq.Request):
_request = rq.Struct(
rq.Opcode(88),
rq.Pad(1),
rq.RequestLength(),
rq.Colormap('cmap'),
rq.Card32('plane_mask'),
rq.List('pixels', rq.Card32Obj),
)
class StoreColors(rq.Request):
_request = rq.Struct(
rq.Opcode(89),
rq.Pad(1),
rq.RequestLength(),
rq.Colormap('cmap'),
rq.List('items', structs.ColorItem),
)
class StoreNamedColor(rq.Request):
_request = rq.Struct(
rq.Opcode(90),
rq.Card8('flags'),
rq.RequestLength(),
rq.Colormap('cmap'),
rq.Card32('pixel'),
rq.LengthOf('name', 2),
rq.Pad(2),
rq.String8('name'),
)
class QueryColors(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(91),
rq.Pad(1),
rq.RequestLength(),
rq.Colormap('cmap'),
rq.List('pixels', rq.Card32Obj),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Pad(1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.LengthOf('colors', 2),
rq.Pad(22),
rq.List('colors', structs.RGB),
)
class LookupColor(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(92),
rq.Pad(1),
rq.RequestLength(),
rq.Colormap('cmap'),
rq.LengthOf('name', 2),
rq.Pad(2),
rq.String8('name'),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Pad(1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Card16('exact_red'),
rq.Card16('exact_green'),
rq.Card16('exact_blue'),
rq.Card16('screen_red'),
rq.Card16('screen_green'),
rq.Card16('screen_blue'),
rq.Pad(12),
)
class CreateCursor(rq.Request):
_request = rq.Struct(
rq.Opcode(93),
rq.Pad(1),
rq.RequestLength(),
rq.Cursor('cid'),
rq.Pixmap('source'),
rq.Pixmap('mask'),
rq.Card16('fore_red'),
rq.Card16('fore_green'),
rq.Card16('fore_blue'),
rq.Card16('back_red'),
rq.Card16('back_green'),
rq.Card16('back_blue'),
rq.Card16('x'),
rq.Card16('y'),
)
class CreateGlyphCursor(rq.Request):
_request = rq.Struct(
rq.Opcode(94),
rq.Pad(1),
rq.RequestLength(),
rq.Cursor('cid'),
rq.Font('source'),
rq.Font('mask'),
rq.Card16('source_char'),
rq.Card16('mask_char'),
rq.Card16('fore_red'),
rq.Card16('fore_green'),
rq.Card16('fore_blue'),
rq.Card16('back_red'),
rq.Card16('back_green'),
rq.Card16('back_blue'),
)
class FreeCursor(rq.Request):
_request = rq.Struct(
rq.Opcode(95),
rq.Pad(1),
rq.RequestLength(),
rq.Cursor('cursor')
)
class RecolorCursor(rq.Request):
_request = rq.Struct(
rq.Opcode(96),
rq.Pad(1),
rq.RequestLength(),
rq.Cursor('cursor'),
rq.Card16('fore_red'),
rq.Card16('fore_green'),
rq.Card16('fore_blue'),
rq.Card16('back_red'),
rq.Card16('back_green'),
rq.Card16('back_blue'),
)
class QueryBestSize(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(97),
rq.Set('item_class', 1, (X.CursorShape, X.TileShape, X.StippleShape)),
rq.RequestLength(),
rq.Drawable('drawable'),
rq.Card16('width'),
rq.Card16('height'),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Pad(1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Card16('width'),
rq.Card16('height'),
rq.Pad(20),
)
class QueryExtension(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(98),
rq.Pad(1),
rq.RequestLength(),
rq.LengthOf('name', 2),
rq.Pad(2),
rq.String8('name'),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Pad(1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Card8('present'),
rq.Card8('major_opcode'),
rq.Card8('first_event'),
rq.Card8('first_error'),
rq.Pad(20),
)
class ListExtensions(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(99),
rq.Pad(1),
rq.RequestLength(),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.LengthOf('names', 1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Pad(24),
rq.List('names', rq.Str),
)
class ChangeKeyboardMapping(rq.Request):
_request = rq.Struct(
rq.Opcode(100),
rq.LengthOf('keysyms', 1),
rq.RequestLength(),
rq.Card8('first_keycode'),
rq.Format('keysyms', 1),
rq.Pad(2),
rq.KeyboardMapping('keysyms'),
)
class GetKeyboardMapping(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(101),
rq.Pad(1),
rq.RequestLength(),
rq.Card8('first_keycode'),
rq.Card8('count'),
rq.Pad(2),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Format('keysyms', 1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Pad(24),
rq.KeyboardMapping('keysyms'),
)
class ChangeKeyboardControl(rq.Request):
_request = rq.Struct(
rq.Opcode(102),
rq.Pad(1),
rq.RequestLength(),
rq.ValueList( 'attrs', 4, 0,
rq.Int8('key_click_percent'),
rq.Int8('bell_percent'),
rq.Int16('bell_pitch'),
rq.Int16('bell_duration'),
rq.Card8('led'),
rq.Set('led_mode', 1, (X.LedModeOff, X.LedModeOn)),
rq.Card8('key'),
rq.Set('auto_repeat_mode', 1, (X.AutoRepeatModeOff,
X.AutoRepeatModeOn,
X.AutoRepeatModeDefault))
)
)
class GetKeyboardControl(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(103),
rq.Pad(1),
rq.RequestLength(),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Card8('global_auto_repeat'),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Card32('led_mask'),
rq.Card8('key_click_percent'),
rq.Card8('bell_percent'),
rq.Card16('bell_pitch'),
rq.Card16('bell_duration'),
rq.Pad(2),
rq.FixedList('auto_repeats', 32, rq.Card8Obj),
)
class Bell(rq.Request):
_request = rq.Struct(
rq.Opcode(104),
rq.Int8('percent'),
rq.RequestLength(),
)
class ChangePointerControl(rq.Request):
_request = rq.Struct(
rq.Opcode(105),
rq.Pad(1),
rq.RequestLength(),
rq.Int16('accel_num'),
rq.Int16('accel_denum'),
rq.Int16('threshold'),
rq.Bool('do_accel'),
rq.Bool('do_thresh'),
)
class GetPointerControl(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(106),
rq.Pad(1),
rq.RequestLength(),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Pad(1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Card16('accel_num'),
rq.Card16('accel_denom'),
rq.Card16('threshold'),
rq.Pad(18),
)
class SetScreenSaver(rq.Request):
_request = rq.Struct(
rq.Opcode(107),
rq.Pad(1),
rq.RequestLength(),
rq.Int16('timeout'),
rq.Int16('interval'),
rq.Set('prefer_blank', 1, (X.DontPreferBlanking,
X.PreferBlanking,
X.DefaultBlanking)),
rq.Set('allow_exposures', 1, (X.DontAllowExposures,
X.AllowExposures,
X.DefaultExposures)),
rq.Pad(2),
)
class GetScreenSaver(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(108),
rq.Pad(1),
rq.RequestLength(),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Pad(1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Card16('timeout'),
rq.Card16('interval'),
rq.Card8('prefer_blanking'),
rq.Card8('allow_exposures'),
rq.Pad(18),
)
class ChangeHosts(rq.Request):
_request = rq.Struct(
rq.Opcode(109),
rq.Set('mode', 1, (X.HostInsert, X.HostDelete)),
rq.RequestLength(),
rq.Set('host_family', 1, (X.FamilyInternet, X.FamilyDECnet, X.FamilyChaos,
X.FamilyServerInterpreted, X.FamilyInternetV6)),
rq.Pad(1),
rq.LengthOf('host', 2),
rq.List('host', rq.Card8Obj)
)
class ListHosts(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(110),
rq.Pad(1),
rq.RequestLength(),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Card8('mode'),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.LengthOf('hosts', 2),
rq.Pad(22),
rq.List('hosts', structs.Host),
)
class SetAccessControl(rq.Request):
_request = rq.Struct(
rq.Opcode(111),
rq.Set('mode', 1, (X.DisableAccess, X.EnableAccess)),
rq.RequestLength(),
)
class SetCloseDownMode(rq.Request):
_request = rq.Struct(
rq.Opcode(112),
rq.Set('mode', 1, (X.DestroyAll, X.RetainPermanent, X.RetainTemporary)),
rq.RequestLength(),
)
class KillClient(rq.Request):
_request = rq.Struct(
rq.Opcode(113),
rq.Pad(1),
rq.RequestLength(),
rq.Resource('resource')
)
class RotateProperties(rq.Request):
_request = rq.Struct(
rq.Opcode(114),
rq.Pad(1),
rq.RequestLength(),
rq.Window('window'),
rq.LengthOf('properties', 2),
rq.Int16('delta'),
rq.List('properties', rq.Card32Obj),
)
class ForceScreenSaver(rq.Request):
_request = rq.Struct(
rq.Opcode(115),
rq.Set('mode', 1, (X.ScreenSaverReset, X.ScreenSaverActive)),
rq.RequestLength(),
)
class SetPointerMapping(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(116),
rq.LengthOf('map', 1),
rq.RequestLength(),
rq.List('map', rq.Card8Obj),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Card8('status'),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Pad(24),
)
class GetPointerMapping(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(117),
rq.Pad(1),
rq.RequestLength(),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.LengthOf('map', 1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Pad(24),
rq.List('map', rq.Card8Obj),
)
class SetModifierMapping(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(118),
rq.Format('keycodes', 1),
rq.RequestLength(),
rq.ModifierMapping('keycodes')
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Card8('status'),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Pad(24),
)
class GetModifierMapping(rq.ReplyRequest):
_request = rq.Struct(
rq.Opcode(119),
rq.Pad(1),
rq.RequestLength(),
)
_reply = rq.Struct(
rq.ReplyCode(),
rq.Format('keycodes', 1),
rq.Card16('sequence_number'),
rq.ReplyLength(),
rq.Pad(24),
rq.ModifierMapping('keycodes')
)
class NoOperation(rq.Request):
_request = rq.Struct(
rq.Opcode(127),
rq.Pad(1),
rq.RequestLength(),
)
major_codes = {
1: CreateWindow,
2: ChangeWindowAttributes,
3: GetWindowAttributes,
4: DestroyWindow,
5: DestroySubWindows,
6: ChangeSaveSet,
7: ReparentWindow,
8: MapWindow,
9: MapSubwindows,
10: UnmapWindow,
11: UnmapSubwindows,
12: ConfigureWindow,
13: CirculateWindow,
14: GetGeometry,
15: QueryTree,
16: InternAtom,
17: GetAtomName,
18: ChangeProperty,
19: DeleteProperty,
20: GetProperty,
21: ListProperties,
22: SetSelectionOwner,
23: GetSelectionOwner,
24: ConvertSelection,
25: SendEvent,
26: GrabPointer,
27: UngrabPointer,
28: GrabButton,
29: UngrabButton,
30: ChangeActivePointerGrab,
31: GrabKeyboard,
32: UngrabKeyboard,
33: GrabKey,
34: UngrabKey,
35: AllowEvents,
36: GrabServer,
37: UngrabServer,
38: QueryPointer,
39: GetMotionEvents,
40: TranslateCoords,
41: WarpPointer,
42: SetInputFocus,
43: GetInputFocus,
44: QueryKeymap,
45: OpenFont,
46: CloseFont,
47: QueryFont,
48: QueryTextExtents,
49: ListFonts,
50: ListFontsWithInfo,
51: SetFontPath,
52: GetFontPath,
53: CreatePixmap,
54: FreePixmap,
55: CreateGC,
56: ChangeGC,
57: CopyGC,
58: SetDashes,
59: SetClipRectangles,
60: FreeGC,
61: ClearArea,
62: CopyArea,
63: CopyPlane,
64: PolyPoint,
65: PolyLine,
66: PolySegment,
67: PolyRectangle,
68: PolyArc,
69: FillPoly,
70: PolyFillRectangle,
71: PolyFillArc,
72: PutImage,
73: GetImage,
74: PolyText8,
75: PolyText16,
76: ImageText8,
77: ImageText16,
78: CreateColormap,
79: FreeColormap,
80: CopyColormapAndFree,
81: InstallColormap,
82: UninstallColormap,
83: ListInstalledColormaps,
84: AllocColor,
85: AllocNamedColor,
86: AllocColorCells,
87: AllocColorPlanes,
88: FreeColors,
89: StoreColors,
90: StoreNamedColor,
91: QueryColors,
92: LookupColor,
93: CreateCursor,
94: CreateGlyphCursor,
95: FreeCursor,
96: RecolorCursor,
97: QueryBestSize,
98: QueryExtension,
99: ListExtensions,
100: ChangeKeyboardMapping,
101: GetKeyboardMapping,
102: ChangeKeyboardControl,
103: GetKeyboardControl,
104: Bell,
105: ChangePointerControl,
106: GetPointerControl,
107: SetScreenSaver,
108: GetScreenSaver,
109: ChangeHosts,
110: ListHosts,
111: SetAccessControl,
112: SetCloseDownMode,
113: KillClient,
114: RotateProperties,
115: ForceScreenSaver,
116: SetPointerMapping,
117: GetPointerMapping,
118: SetModifierMapping,
119: GetModifierMapping,
127: NoOperation,
}