@@ -219,12 +219,13 @@ void do_screen_switch(device_t *state, int direction) {
219
219
switch_virtual_desktop (state , output , output -> screen_index + 1 , direction );
220
220
}
221
221
222
- inline void extract_value (bool uses_id , int32_t * dst , report_val_t * src , uint8_t * raw_report , int len ) {
222
+ static inline bool extract_value (bool uses_id , int32_t * dst , report_val_t * src , uint8_t * raw_report , int len ) {
223
223
/* If HID Report ID is used, the report is prefixed by the report ID so we have to move by 1 byte */
224
224
if (uses_id && (* raw_report ++ != src -> report_id ))
225
- return ;
225
+ return false ;
226
226
227
227
* dst = get_report_value (raw_report , len , src );
228
+ return true;
228
229
}
229
230
230
231
void extract_report_values (uint8_t * raw_report , int len , device_t * state , mouse_values_t * values , hid_interface_t * iface ) {
@@ -246,7 +247,10 @@ void extract_report_values(uint8_t *raw_report, int len, device_t *state, mouse_
246
247
extract_value (uses_id , & values -> move_y , & mouse -> move_y , raw_report , len );
247
248
extract_value (uses_id , & values -> wheel , & mouse -> wheel , raw_report , len );
248
249
extract_value (uses_id , & values -> pan , & mouse -> pan , raw_report , len );
249
- extract_value (uses_id , & values -> buttons , & mouse -> buttons , raw_report , len );
250
+
251
+ if (!extract_value (uses_id , & values -> buttons , & mouse -> buttons , raw_report , len )) {
252
+ values -> buttons = state -> mouse_buttons ;
253
+ }
250
254
}
251
255
252
256
mouse_report_t create_mouse_report (device_t * state , mouse_values_t * values ) {
0 commit comments