The XBox One S controller sends keys outside the standard joystick button range

This commit is contained in:
Sam Lantinga 2016-11-22 22:14:28 -08:00
parent 6558ecdbf6
commit aa03b9d7af
3 changed files with 7 additions and 11 deletions

View file

@ -449,16 +449,16 @@ ConfigJoystick(SDL_Joystick * joystick, int fd)
#ifdef DEBUG_INPUT_EVENTS
printf("Joystick has button: 0x%x\n", i);
#endif
joystick->hwdata->key_map[i - BTN_MISC] = joystick->nbuttons;
joystick->hwdata->key_map[i] = joystick->nbuttons;
++joystick->nbuttons;
}
}
for (i = BTN_MISC; i < BTN_JOYSTICK; ++i) {
for (i = 0; i < BTN_JOYSTICK; ++i) {
if (test_bit(i, keybit)) {
#ifdef DEBUG_INPUT_EVENTS
printf("Joystick has button: 0x%x\n", i);
#endif
joystick->hwdata->key_map[i - BTN_MISC] = joystick->nbuttons;
joystick->hwdata->key_map[i] = joystick->nbuttons;
++joystick->nbuttons;
}
}
@ -715,12 +715,9 @@ HandleInputEvents(SDL_Joystick * joystick)
code = events[i].code;
switch (events[i].type) {
case EV_KEY:
if (code >= BTN_MISC) {
code -= BTN_MISC;
SDL_PrivateJoystickButton(joystick,
joystick->hwdata->key_map[code],
events[i].value);
}
SDL_PrivateJoystickButton(joystick,
joystick->hwdata->key_map[code],
events[i].value);
break;
case EV_ABS:
switch (code) {