435 lines
15 KiB
Python
435 lines
15 KiB
Python
|
# Xlib.protocol.event -- definitions of core events
|
||
|
#
|
||
|
# 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
|
||
|
|
||
|
|
||
|
class AnyEvent(rq.Event):
|
||
|
_code = None
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Card8('detail'),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.FixedBinary('data', 28),
|
||
|
)
|
||
|
|
||
|
class KeyButtonPointer(rq.Event):
|
||
|
_code = None
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Card8('detail'),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.Card32('time'),
|
||
|
rq.Window('root'),
|
||
|
rq.Window('window'),
|
||
|
rq.Window('child', (X.NONE, )),
|
||
|
rq.Int16('root_x'),
|
||
|
rq.Int16('root_y'),
|
||
|
rq.Int16('event_x'),
|
||
|
rq.Int16('event_y'),
|
||
|
rq.Card16('state'),
|
||
|
rq.Card8('same_screen'),
|
||
|
rq.Pad(1),
|
||
|
)
|
||
|
|
||
|
class KeyPress(KeyButtonPointer):
|
||
|
_code = X.KeyPress
|
||
|
|
||
|
class KeyRelease(KeyButtonPointer):
|
||
|
_code = X.KeyRelease
|
||
|
|
||
|
class ButtonPress(KeyButtonPointer):
|
||
|
_code = X.ButtonPress
|
||
|
|
||
|
class ButtonRelease(KeyButtonPointer):
|
||
|
_code = X.ButtonRelease
|
||
|
|
||
|
class MotionNotify(KeyButtonPointer):
|
||
|
_code = X.MotionNotify
|
||
|
|
||
|
class EnterLeave(rq.Event):
|
||
|
_code = None
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Card8('detail'),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.Card32('time'),
|
||
|
rq.Window('root'),
|
||
|
rq.Window('window'),
|
||
|
rq.Window('child', (X.NONE, )),
|
||
|
rq.Int16('root_x'),
|
||
|
rq.Int16('root_y'),
|
||
|
rq.Int16('event_x'),
|
||
|
rq.Int16('event_y'),
|
||
|
rq.Card16('state'),
|
||
|
rq.Card8('mode'),
|
||
|
rq.Card8('flags'),
|
||
|
)
|
||
|
|
||
|
class EnterNotify(EnterLeave):
|
||
|
_code = X.EnterNotify
|
||
|
|
||
|
class LeaveNotify(EnterLeave):
|
||
|
_code = X.LeaveNotify
|
||
|
|
||
|
|
||
|
class Focus(rq.Event):
|
||
|
_code = None
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Card8('detail'),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.Window('window'),
|
||
|
rq.Card8('mode'),
|
||
|
rq.Pad(23),
|
||
|
)
|
||
|
|
||
|
class FocusIn(Focus):
|
||
|
_code = X.FocusIn
|
||
|
|
||
|
class FocusOut(Focus):
|
||
|
_code = X.FocusOut
|
||
|
|
||
|
class Expose(rq.Event):
|
||
|
_code = X.Expose
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Pad(1),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.Window('window'),
|
||
|
rq.Card16('x'),
|
||
|
rq.Card16('y'),
|
||
|
rq.Card16('width'),
|
||
|
rq.Card16('height'),
|
||
|
rq.Card16('count'),
|
||
|
rq.Pad(14),
|
||
|
)
|
||
|
|
||
|
class GraphicsExpose(rq.Event):
|
||
|
_code = X.GraphicsExpose
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Pad(1),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.Drawable('drawable'),
|
||
|
rq.Card16('x'),
|
||
|
rq.Card16('y'),
|
||
|
rq.Card16('width'),
|
||
|
rq.Card16('height'),
|
||
|
rq.Card16('minor_event'),
|
||
|
rq.Card16('count'),
|
||
|
rq.Card8('major_event'),
|
||
|
rq.Pad(11),
|
||
|
)
|
||
|
|
||
|
class NoExpose(rq.Event):
|
||
|
_code = X.NoExpose
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Pad(1),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.Drawable('window'),
|
||
|
rq.Card16('minor_event'),
|
||
|
rq.Card8('major_event'),
|
||
|
rq.Pad(21),
|
||
|
)
|
||
|
|
||
|
class VisibilityNotify(rq.Event):
|
||
|
_code = X.VisibilityNotify
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Pad(1),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.Window('window'),
|
||
|
rq.Card8('state'),
|
||
|
rq.Pad(23),
|
||
|
)
|
||
|
|
||
|
class CreateNotify(rq.Event):
|
||
|
_code = X.CreateNotify
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Pad(1),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.Window('parent'),
|
||
|
rq.Window('window'),
|
||
|
rq.Int16('x'),
|
||
|
rq.Int16('y'),
|
||
|
rq.Card16('width'),
|
||
|
rq.Card16('height'),
|
||
|
rq.Card16('border_width'),
|
||
|
rq.Card8('override'),
|
||
|
rq.Pad(9),
|
||
|
)
|
||
|
|
||
|
class DestroyNotify(rq.Event):
|
||
|
_code = X.DestroyNotify
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Pad(1),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.Window('event'),
|
||
|
rq.Window('window'),
|
||
|
rq.Pad(20),
|
||
|
)
|
||
|
|
||
|
class UnmapNotify(rq.Event):
|
||
|
_code = X.UnmapNotify
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Pad(1),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.Window('event'),
|
||
|
rq.Window('window'),
|
||
|
rq.Card8('from_configure'),
|
||
|
rq.Pad(19),
|
||
|
)
|
||
|
|
||
|
class MapNotify(rq.Event):
|
||
|
_code = X.MapNotify
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Pad(1),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.Window('event'),
|
||
|
rq.Window('window'),
|
||
|
rq.Card8('override'),
|
||
|
rq.Pad(19),
|
||
|
)
|
||
|
|
||
|
class MapRequest(rq.Event):
|
||
|
_code = X.MapRequest
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Pad(1),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.Window('parent'),
|
||
|
rq.Window('window'),
|
||
|
rq.Pad(20),
|
||
|
)
|
||
|
|
||
|
class ReparentNotify(rq.Event):
|
||
|
_code = X.ReparentNotify
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Pad(1),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.Window('event'),
|
||
|
rq.Window('window'),
|
||
|
rq.Window('parent'),
|
||
|
rq.Int16('x'),
|
||
|
rq.Int16('y'),
|
||
|
rq.Card8('override'),
|
||
|
rq.Pad(11),
|
||
|
)
|
||
|
|
||
|
class ConfigureNotify(rq.Event):
|
||
|
_code = X.ConfigureNotify
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Pad(1),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.Window('event'),
|
||
|
rq.Window('window'),
|
||
|
rq.Window('above_sibling', (X.NONE, )),
|
||
|
rq.Int16('x'),
|
||
|
rq.Int16('y'),
|
||
|
rq.Card16('width'),
|
||
|
rq.Card16('height'),
|
||
|
rq.Card16('border_width'),
|
||
|
rq.Card8('override'),
|
||
|
rq.Pad(5),
|
||
|
)
|
||
|
|
||
|
class ConfigureRequest(rq.Event):
|
||
|
_code = X.ConfigureRequest
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Card8('stack_mode'),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.Window('parent'),
|
||
|
rq.Window('window'),
|
||
|
rq.Window('sibling', (X.NONE, )),
|
||
|
rq.Int16('x'),
|
||
|
rq.Int16('y'),
|
||
|
rq.Card16('width'),
|
||
|
rq.Card16('height'),
|
||
|
rq.Card16('border_width'),
|
||
|
rq.Card16('value_mask'),
|
||
|
rq.Pad(4),
|
||
|
)
|
||
|
|
||
|
class GravityNotify(rq.Event):
|
||
|
_code = X.GravityNotify
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Pad(1),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.Window('event'),
|
||
|
rq.Window('window'),
|
||
|
rq.Int16('x'),
|
||
|
rq.Int16('y'),
|
||
|
rq.Pad(16),
|
||
|
)
|
||
|
|
||
|
class ResizeRequest(rq.Event):
|
||
|
_code = X.ResizeRequest
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Pad(1),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.Window('window'),
|
||
|
rq.Card16('width'),
|
||
|
rq.Card16('height'),
|
||
|
rq.Pad(20),
|
||
|
)
|
||
|
|
||
|
class Circulate(rq.Event):
|
||
|
_code = None
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Pad(1),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.Window('event'),
|
||
|
rq.Window('window'),
|
||
|
rq.Pad(4),
|
||
|
rq.Card8('place'),
|
||
|
rq.Pad(15),
|
||
|
)
|
||
|
|
||
|
class CirculateNotify(Circulate):
|
||
|
_code = X.CirculateNotify
|
||
|
|
||
|
class CirculateRequest(Circulate):
|
||
|
_code = X.CirculateRequest
|
||
|
|
||
|
class PropertyNotify(rq.Event):
|
||
|
_code = X.PropertyNotify
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Pad(1),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.Window('window'),
|
||
|
rq.Card32('atom'),
|
||
|
rq.Card32('time'),
|
||
|
rq.Card8('state'),
|
||
|
rq.Pad(15),
|
||
|
)
|
||
|
|
||
|
class SelectionClear(rq.Event):
|
||
|
_code = X.SelectionClear
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Pad(1),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.Card32('time'),
|
||
|
rq.Window('window'),
|
||
|
rq.Card32('atom'),
|
||
|
rq.Pad(16),
|
||
|
)
|
||
|
|
||
|
class SelectionRequest(rq.Event):
|
||
|
_code = X.SelectionRequest
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Pad(1),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.Card32('time'),
|
||
|
rq.Window('owner'),
|
||
|
rq.Window('requestor'),
|
||
|
rq.Card32('selection'),
|
||
|
rq.Card32('target'),
|
||
|
rq.Card32('property'),
|
||
|
rq.Pad(4),
|
||
|
)
|
||
|
|
||
|
class SelectionNotify(rq.Event):
|
||
|
_code = X.SelectionNotify
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Pad(1),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.Card32('time'),
|
||
|
rq.Window('requestor'),
|
||
|
rq.Card32('selection'),
|
||
|
rq.Card32('target'),
|
||
|
rq.Card32('property'),
|
||
|
rq.Pad(8),
|
||
|
)
|
||
|
|
||
|
class ColormapNotify(rq.Event):
|
||
|
_code = X.ColormapNotify
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Pad(1),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.Window('window'),
|
||
|
rq.Colormap('colormap', (X.NONE, )),
|
||
|
rq.Card8('new'),
|
||
|
rq.Card8('state'),
|
||
|
rq.Pad(18),
|
||
|
)
|
||
|
|
||
|
class MappingNotify(rq.Event):
|
||
|
_code = X.MappingNotify
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Pad(1),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.Card8('request'),
|
||
|
rq.Card8('first_keycode'),
|
||
|
rq.Card8('count'),
|
||
|
rq.Pad(25),
|
||
|
)
|
||
|
|
||
|
class ClientMessage(rq.Event):
|
||
|
_code = X.ClientMessage
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.Format('data', 1),
|
||
|
rq.Card16('sequence_number'),
|
||
|
rq.Window('window'),
|
||
|
rq.Card32('client_type'),
|
||
|
rq.FixedPropertyData('data', 20),
|
||
|
)
|
||
|
|
||
|
class KeymapNotify(rq.Event):
|
||
|
_code = X.KeymapNotify
|
||
|
_fields = rq.Struct( rq.Card8('type'),
|
||
|
rq.FixedList('data', 31, rq.Card8Obj, pad = 0)
|
||
|
)
|
||
|
|
||
|
|
||
|
event_class = {
|
||
|
X.KeyPress: KeyPress,
|
||
|
X.KeyRelease: KeyRelease,
|
||
|
X.ButtonPress: ButtonPress,
|
||
|
X.ButtonRelease: ButtonRelease,
|
||
|
X.MotionNotify: MotionNotify,
|
||
|
X.EnterNotify: EnterNotify,
|
||
|
X.LeaveNotify: LeaveNotify,
|
||
|
X.FocusIn: FocusIn,
|
||
|
X.FocusOut: FocusOut,
|
||
|
X.KeymapNotify: KeymapNotify,
|
||
|
X.Expose: Expose,
|
||
|
X.GraphicsExpose: GraphicsExpose,
|
||
|
X.NoExpose: NoExpose,
|
||
|
X.VisibilityNotify: VisibilityNotify,
|
||
|
X.CreateNotify: CreateNotify,
|
||
|
X.DestroyNotify: DestroyNotify,
|
||
|
X.UnmapNotify: UnmapNotify,
|
||
|
X.MapNotify: MapNotify,
|
||
|
X.MapRequest: MapRequest,
|
||
|
X.ReparentNotify: ReparentNotify,
|
||
|
X.ConfigureNotify: ConfigureNotify,
|
||
|
X.ConfigureRequest: ConfigureRequest,
|
||
|
X.GravityNotify: GravityNotify,
|
||
|
X.ResizeRequest: ResizeRequest,
|
||
|
X.CirculateNotify: CirculateNotify,
|
||
|
X.CirculateRequest: CirculateRequest,
|
||
|
X.PropertyNotify: PropertyNotify,
|
||
|
X.SelectionClear: SelectionClear,
|
||
|
X.SelectionRequest: SelectionRequest,
|
||
|
X.SelectionNotify: SelectionNotify,
|
||
|
X.ColormapNotify: ColormapNotify,
|
||
|
X.ClientMessage: ClientMessage,
|
||
|
X.MappingNotify: MappingNotify,
|
||
|
}
|