X Tutup
Skip to content

Commit 9e457bc

Browse files
committed
Split util.resolve_ecodes() into two functions
1 parent d269505 commit 9e457bc

File tree

4 files changed

+38
-21
lines changed

4 files changed

+38
-21
lines changed

doc/apidoc.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ API Reference
3333
==========
3434

3535
.. automodule:: evdev.util
36-
:members: list_devices, is_device, categorize, resolve_ecodes
36+
:members: list_devices, is_device, categorize, resolve_ecodes, resolve_ecodes_dict
3737
:member-order: bysource
3838

3939
``ecodes``

evdev/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@
77
from evdev.device import DeviceInfo, InputDevice, AbsInfo
88
from evdev.events import InputEvent, KeyEvent, RelEvent, SynEvent, AbsEvent, event_factory
99
from evdev.uinput import UInput, UInputError
10-
from evdev.util import list_devices, categorize, resolve_ecodes
10+
from evdev.util import list_devices, categorize, resolve_ecodes, resolve_ecodes_dict
1111
from evdev import ecodes
1212
from evdev import ff

evdev/device.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ def capabilities(self, verbose=False, absinfo=True):
186186
'''
187187

188188
if verbose:
189-
return dict(util.resolve_ecodes(self._capabilities(absinfo)))
189+
return dict(util.resolve_ecodes_dict(self._capabilities(absinfo)))
190190
else:
191191
return self._capabilities(absinfo)
192192

@@ -217,7 +217,7 @@ def leds(self, verbose=False):
217217
'''
218218
leds = _input.ioctl_EVIOCG_bits(self.fd, ecodes.EV_LED)
219219
if verbose:
220-
return [(ecodes.LED[l] if l in ecodes.LED else '?', l) for l in leds]
220+
return util.resolve_ecodes(ecodes.LED, leds)
221221

222222
return leds
223223

@@ -365,6 +365,6 @@ def active_keys(self, verbose=False):
365365
'''
366366
active_keys = _input.ioctl_EVIOCG_bits(self.fd, ecodes.EV_KEY)
367367
if verbose:
368-
return [(ecodes.KEY[k] if k in ecodes.KEY else '?', k) for k in active_keys]
368+
return util.resolve_ecodes(ecodes.KEY, active_keys)
369369

370370
return active_keys

evdev/util.py

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def categorize(event):
4848
return event
4949

5050

51-
def resolve_ecodes(typecodemap, unknown='?'):
51+
def resolve_ecodes_dict(typecodemap, unknown='?'):
5252
'''
5353
Resolve event codes and types to their verbose names.
5454
@@ -57,7 +57,7 @@ def resolve_ecodes(typecodemap, unknown='?'):
5757
5858
Example::
5959
60-
resolve_ecodes({ 1: [272, 273, 274] })
60+
resolve_ecodes_dict({ 1: [272, 273, 274] })
6161
{ ('EV_KEY', 1): [('BTN_MOUSE', 272),
6262
('BTN_RIGHT', 273),
6363
('BTN_MIDDLE', 274)] }
@@ -66,7 +66,7 @@ def resolve_ecodes(typecodemap, unknown='?'):
6666
:class:`AbsInfo <evdev.device.AbsInfo>` ) the result would look
6767
like::
6868
69-
resolve_ecodes({ 3: [(0, AbsInfo(...))] })
69+
resolve_ecodes_dict({ 3: [(0, AbsInfo(...))] })
7070
{ ('EV_ABS', 3L): [(('ABS_X', 0L), AbsInfo(...))] }
7171
'''
7272

@@ -75,24 +75,41 @@ def resolve_ecodes(typecodemap, unknown='?'):
7575

7676
# ecodes.keys are a combination of KEY_ and BTN_ codes
7777
if etype == ecodes.EV_KEY:
78-
code_names = ecodes.keys
78+
ecode_dict = ecodes.keys
7979
else:
80-
code_names = getattr(ecodes, type_name.split('_')[-1])
80+
ecode_dict = getattr(ecodes, type_name.split('_')[-1])
8181

82-
res = []
83-
for i in codes:
84-
# elements with AbsInfo(), eg { 3 : [(0, AbsInfo(...)), (1, AbsInfo(...))] }
85-
if isinstance(i, tuple):
86-
l = ((code_names[i[0]], i[0]), i[1]) if i[0] in code_names \
87-
else ((unknown, i[0]), i[1])
82+
resolved = resolve_ecodes(ecode_dict, codes, unknown)
83+
yield (type_name, etype), resolved
8884

89-
# just ecodes { 0 : [0, 1, 3], 1 : [30, 48] }
85+
86+
def resolve_ecodes(ecode_dict, ecode_list, unknown='?'):
87+
'''
88+
Resolve event codes and types to their verbose names.
89+
90+
Example::
91+
92+
resolve_ecodes([272, 273, 274])
93+
[('BTN_MOUSE', 272), ('BTN_RIGHT', 273), ('BTN_MIDDLE', 274)]
94+
'''
95+
res = []
96+
for ecode in ecode_list:
97+
# elements with AbsInfo(), eg { 3 : [(0, AbsInfo(...)), (1, AbsInfo(...))] }
98+
if isinstance(ecode, tuple):
99+
if ecode[0] in ecode_dict:
100+
l = ((ecode_dict[ecode[0]], ecode[0]), ecode[1])
90101
else:
91-
l = (code_names[i], i) if i in code_names else (unknown, i)
102+
l = ((unknown, ecode[0]), ecode[1])
92103

93-
res.append(l)
104+
# just ecodes, e.g: { 0 : [0, 1, 3], 1 : [30, 48] }
105+
else:
106+
if ecode in ecode_dict:
107+
l = (ecode_dict[ecode], ecode)
108+
else:
109+
l = (unknown, ecode)
110+
res.append(l)
94111

95-
yield (type_name, etype), res
112+
return res
96113

97114

98-
__all__ = ('list_devices', 'is_device', 'categorize', 'resolve_ecodes')
115+
__all__ = ('list_devices', 'is_device', 'categorize', 'resolve_ecodes', 'resolve_ecodes_dict')

0 commit comments

Comments
 (0)
X Tutup