@@ -917,6 +917,7 @@ static int xpadneo_event(struct hid_device *hdev, struct hid_field *field,
917
917
input_report_key (gamepad , BTN_PADDLES (1 ), value & 2 ? 1 : 0 );
918
918
input_report_key (gamepad , BTN_PADDLES (2 ), value & 4 ? 1 : 0 );
919
919
input_report_key (gamepad , BTN_PADDLES (3 ), value & 8 ? 1 : 0 );
920
+ xdata -> gamepad_sync = true;
920
921
}
921
922
goto stop_processing ;
922
923
} else if (usage -> type == EV_ABS ) {
@@ -928,6 +929,7 @@ static int xpadneo_event(struct hid_device *hdev, struct hid_field *field,
928
929
/* Linux Gamepad Specification */
929
930
if (param_gamepad_compliance ) {
930
931
input_report_abs (gamepad , usage -> code , value - 32768 );
932
+ xdata -> gamepad_sync = true;
931
933
goto stop_processing ;
932
934
}
933
935
break ;
@@ -967,6 +969,7 @@ static int xpadneo_event(struct hid_device *hdev, struct hid_field *field,
967
969
if (!keyboard )
968
970
goto keyboard_missing ;
969
971
input_report_key (keyboard , BTN_SHARE , value );
972
+ xdata -> keyboard_sync = true;
970
973
goto stop_processing ;
971
974
} else if (xdata -> xbox_button_down && (usage -> type == EV_KEY )) {
972
975
if (!(xdata -> quirks & XPADNEO_QUIRK_USE_HW_PROFILES )) {
@@ -996,13 +999,16 @@ static int xpadneo_event(struct hid_device *hdev, struct hid_field *field,
996
999
}
997
1000
998
1001
/* Let hid-core handle the event */
1002
+ xdata -> gamepad_sync = true;
999
1003
return 0 ;
1000
1004
1001
1005
combine_z_axes :
1002
1006
if (++ xdata -> count_abs_z_rz == 2 ) {
1003
1007
xdata -> count_abs_z_rz = 0 ;
1004
- if (param_enable_rolling_axis )
1008
+ if (param_enable_rolling_axis ) {
1005
1009
input_report_abs (gamepad , ABS_MISC , xdata -> last_abs_rz - xdata -> last_abs_z );
1010
+ xdata -> gamepad_sync = true;
1011
+ }
1006
1012
}
1007
1013
return 0 ;
1008
1014
@@ -1114,6 +1120,7 @@ static int xpadneo_probe(struct hid_device *hdev, const struct hid_device_id *id
1114
1120
1115
1121
xdata -> hdev = hdev ;
1116
1122
hdev -> quirks |= HID_QUIRK_INPUT_PER_APP ;
1123
+ hdev -> quirks |= HID_QUIRK_NO_INPUT_SYNC ;
1117
1124
hid_set_drvdata (hdev , xdata );
1118
1125
1119
1126
if (hdev -> version == 0x00000903 )
@@ -1281,6 +1288,7 @@ static struct hid_driver xpadneo_driver = {
1281
1288
.input_configured = xpadneo_input_configured ,
1282
1289
.probe = xpadneo_probe ,
1283
1290
.remove = xpadneo_remove ,
1291
+ .report = xpadneo_report ,
1284
1292
.report_fixup = xpadneo_report_fixup ,
1285
1293
.raw_event = xpadneo_raw_event ,
1286
1294
.event = xpadneo_event ,
0 commit comments