@@ -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