78
78
BUTTONS = ["left" , "right" , "middle" ]
79
79
80
80
mouse_bufs = []
81
- mouse_read_counts = [ 0 , 0 ]
81
+
82
82
for mouse_tg in mouse_tgs :
83
83
# Buffer to hold data read from the mouse
84
84
# Boot mice have 4 byte reports
85
- mouse_bufs .append (array .array ("b" , [0 ] * 4 ))
85
+ mouse_bufs .append (array .array ("b" , [0 ] * 8 ))
86
86
87
87
88
- def get_mouse_deltas (mouse_index ):
89
- if mouse_read_counts [ mouse_index ] == 4 :
90
- delta_x = mouse_bufs [ mouse_index ] [1 ]
91
- delta_y = mouse_bufs [ mouse_index ] [2 ]
92
- elif mouse_read_counts [ mouse_index ] == 8 :
93
- delta_x = mouse_bufs [ mouse_index ] [2 ]
94
- delta_y = mouse_bufs [ mouse_index ] [4 ]
88
+ def get_mouse_deltas (buffer , read_count ):
89
+ if read_count == 4 :
90
+ delta_x = buffer [1 ]
91
+ delta_y = buffer [2 ]
92
+ elif read_count == 8 :
93
+ delta_x = buffer [2 ]
94
+ delta_y = buffer [4 ]
95
95
else :
96
- raise ValueError (
97
- f"Unsupported mouse packet size: { mouse_packet_sizes [mouse_index ]} , must be 4 or 8"
98
- )
96
+ raise ValueError (f"Unsupported mouse packet size: { read_count } , must be 4 or 8" )
99
97
return delta_x , delta_y
100
98
101
99
@@ -105,10 +103,9 @@ def get_mouse_deltas(mouse_index):
105
103
count = mouse .read (
106
104
mouse_endpoint_addresses [mouse_index ], mouse_bufs [mouse_index ], timeout = 10
107
105
)
108
- mouse_read_counts [mouse_index ] = count
109
106
except usb .core .USBTimeoutError :
110
107
continue
111
- mouse_deltas = get_mouse_deltas (mouse_index )
108
+ mouse_deltas = get_mouse_deltas (mouse_bufs [ mouse_index ], count )
112
109
mouse_tgs [mouse_index ].x = max (
113
110
0 , min (display .width - 1 , mouse_tgs [mouse_index ].x + mouse_deltas [0 ])
114
111
)
0 commit comments