Skip to content

Commit d4e96ac

Browse files
committed
add keycode for all events
1 parent 44da5fc commit d4e96ac

File tree

1 file changed

+35
-11
lines changed

1 file changed

+35
-11
lines changed

evdev/events.py

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -130,15 +130,23 @@ def __repr__(s):
130130
class RelEvent(object):
131131
'''A relative axis event (e.g moving the mouse 5 units to the left).'''
132132

133-
__slots__ = 'event'
133+
__slots__ = 'event', 'keycode'
134+
135+
def __init__(self, event, allow_unknown=False):
136+
try:
137+
self.keycode = REL[event.code]
138+
except KeyError:
139+
if allow_unknown:
140+
self.keycode = '0x{:02X}'.format(event.code)
141+
else:
142+
raise
134143

135-
def __init__(self, event):
136144
#: Reference to an :class:`InputEvent` instance.
137145
self.event = event
138146

139147
def __str__(self):
140-
msg = 'relative axis event at {:f}, {} '
141-
return msg.format(self.event.timestamp(), REL[self.event.code])
148+
msg = 'relative axis event at {:f}, {} {} '
149+
return msg.format(self.event.timestamp(), self.keycode, self.event.value)
142150

143151
def __repr__(s):
144152
return '{}({!r})'.format(s.__class__.__name__, s.event)
@@ -147,15 +155,23 @@ def __repr__(s):
147155
class AbsEvent(object):
148156
'''An absolute axis event (e.g the coordinates of a tap on a touchscreen).'''
149157

150-
__slots__ = 'event'
158+
__slots__ = 'event', 'keycode'
159+
160+
def __init__(self, event, allow_unknown=False):
161+
try:
162+
self.keycode = ABS[event.code]
163+
except KeyError:
164+
if allow_unknown:
165+
self.keycode = '0x{:02X}'.format(event.code)
166+
else:
167+
raise
151168

152-
def __init__(self, event):
153169
#: Reference to an :class:`InputEvent` instance.
154170
self.event = event
155171

156172
def __str__(self):
157-
msg = 'absolute axis event at {:f}, {} '
158-
return msg.format(self.event.timestamp(), ABS[self.event.code])
173+
msg = 'absolute axis event at {:f}, {} {} '
174+
return msg.format(self.event.timestamp(), self.keycode, self.event.value)
159175

160176
def __repr__(s):
161177
return '{}({!r})'.format(s.__class__.__name__, s.event)
@@ -169,15 +185,23 @@ class SynEvent(object):
169185
the multitouch protocol.
170186
'''
171187

172-
__slots__ = 'event'
188+
__slots__ = 'event', 'keycode'
189+
190+
def __init__(self, event, allow_known):
191+
try:
192+
self.keycode = SYN[event.code]
193+
except KeyError:
194+
if allow_unknown:
195+
self.keycode = '0x{:02X}'.format(event.code)
196+
else:
197+
raise
173198

174-
def __init__(self, event):
175199
#: Reference to an :class:`InputEvent` instance.
176200
self.event = event
177201

178202
def __str__(self):
179203
msg = 'synchronization event at {:f}, {} '
180-
return msg.format(self.event.timestamp(), SYN[self.event.code])
204+
return msg.format(self.event.timestamp(), self.keycode)
181205

182206
def __repr__(s):
183207
return '{}({!r})'.format(s.__class__.__name__, s.event)

0 commit comments

Comments
 (0)