2121A very incomplete implementation of the XInput extension.
2222'''
2323
24- import sys , array , struct
24+ import sys
25+ import array
26+ import struct
2527
2628# Python 2/3 compatibility.
2729from six import integer_types
@@ -205,7 +207,7 @@ def query_version(self):
205207class Mask (rq .List ):
206208
207209 def __init__ (self , name ):
208- rq .List .__init__ (self , name , rq .Card32 , pad = 0 )
210+ rq .List .__init__ (self , name , rq .Card32 , pad = 0 )
209211
210212 def pack_value (self , val ):
211213
@@ -219,24 +221,25 @@ def pack_value(self, val):
219221 # bytes we build a longer array, being careful to maintain native
220222 # byte order across the entire set of values.
221223 if sys .byteorder == 'little' :
222- f = lambda v : mask_seq .insert (0 , v )
224+ def fun (val ):
225+ mask_seq .insert (0 , val )
223226 elif sys .byteorder == 'big' :
224- f = mask_seq .append
227+ fun = mask_seq .append
225228 else :
226229 raise AssertionError (sys .byteorder )
227230 while val :
228- f (val & 0xFFFFFFFF )
231+ fun (val & 0xFFFFFFFF )
229232 val = val >> 32
230233 else :
231234 mask_seq .extend (val )
232235
233236 return mask_seq .tostring (), len (mask_seq ), None
234237
235238EventMask = rq .Struct (
236- DEVICE ('deviceid' ),
237- rq .LengthOf ('mask' , 2 ),
238- Mask ('mask' ),
239- )
239+ DEVICE ('deviceid' ),
240+ rq .LengthOf ('mask' , 2 ),
241+ Mask ('mask' ),
242+ )
240243
241244
242245class XISelectEvents (rq .Request ):
@@ -248,7 +251,7 @@ class XISelectEvents(rq.Request):
248251 rq .LengthOf ('masks' , 2 ),
249252 rq .Pad (2 ),
250253 rq .List ('masks' , EventMask ),
251- )
254+ )
252255
253256def select_events (self , event_masks ):
254257 '''
@@ -264,13 +267,13 @@ def select_events(self, event_masks):
264267 opcode = self .display .get_extension_major (extname ),
265268 window = self ,
266269 masks = event_masks ,
267- )
270+ )
268271
269272AnyInfo = rq .Struct (
270- rq .Card16 ('type' ),
271- rq .Card16 ('length' ),
272- rq .Card16 ('sourceid' ),
273- rq .Pad (2 ),
273+ rq .Card16 ('type' ),
274+ rq .Card16 ('length' ),
275+ rq .Card16 ('sourceid' ),
276+ rq .Pad (2 ),
274277)
275278
276279class ButtonMask (object ):
@@ -286,10 +289,11 @@ def __getitem__(self, key):
286289 return self ._value & (1 << key )
287290
288291 def __str__ (self ):
289- return ( '{0:0%ub}' % self . _length ). format ( self . _value )
292+ return repr ( self )
290293
291294 def __repr__ (self ):
292- return '%#0*x' % ((self ._length + 3 ) / 8 , self ._value )
295+ return '0b{value:0{width}b}' .format (value = self ._value ,
296+ width = self ._length )
293297
294298class ButtonState (rq .ValueField ):
295299
@@ -298,16 +302,16 @@ class ButtonState(rq.ValueField):
298302 def __init__ (self , name ):
299303 rq .ValueField .__init__ (self , name )
300304
301- def parse_binary_value (self , data , display , length , format ):
305+ def parse_binary_value (self , data , display , length , fmt ):
302306 # Mask: bitfield of <length> button states.
303307 mask_len = 4 * ((((length + 7 ) >> 3 ) + 3 ) >> 2 )
304308 mask_data = data [:mask_len ]
305309 mask_value = 0
306- for b in reversed (struct .unpack ('=%uB' % mask_len , mask_data )):
310+ for byte in reversed (struct .unpack ('={0:d}B' . format ( mask_len ) , mask_data )):
307311 mask_value <<= 8
308- mask_value |= b
312+ mask_value |= byte
309313 data = data [mask_len :]
310- assert 0 == (mask_value & 1 )
314+ assert (mask_value & 1 ) == 0
311315 return ButtonMask (mask_value >> 1 , length ), data
312316
313317ButtonInfo = rq .Struct (
@@ -569,23 +573,23 @@ def ungrab_keycode(self, deviceid, keycode, modifiers):
569573 GrabtypeKeycode , modifiers )
570574
571575HierarchyInfo = rq .Struct (
572- DEVICEID ('deviceid' ),
573- DEVICEID ('attachment' ),
574- DEVICEUSE ('type' ),
575- rq .Bool ('enabled' ),
576- rq .Pad (2 ),
577- rq .Card32 ('flags' ),
578- )
576+ DEVICEID ('deviceid' ),
577+ DEVICEID ('attachment' ),
578+ DEVICEUSE ('type' ),
579+ rq .Bool ('enabled' ),
580+ rq .Pad (2 ),
581+ rq .Card32 ('flags' ),
582+ )
579583
580584
581585HierarchyEventData = rq .Struct (
582- DEVICEID ('deviceid' ),
583- rq .Card32 ('time' ),
584- rq .Card32 ('flags' ),
585- rq .LengthOf ('info' , 2 ),
586- rq .Pad (10 ),
587- rq .List ('info' , HierarchyInfo ),
588- )
586+ DEVICEID ('deviceid' ),
587+ rq .Card32 ('time' ),
588+ rq .Card32 ('flags' ),
589+ rq .LengthOf ('info' , 2 ),
590+ rq .Pad (10 ),
591+ rq .List ('info' , HierarchyInfo ),
592+ )
589593
590594ModifierInfo = rq .Struct (
591595 rq .Card32 ('base_mods' ),
0 commit comments