diff --git a/src/qt/win_joystick_rawinput.c b/src/qt/win_joystick_rawinput.c index c4424e484..e5d477296 100644 --- a/src/qt/win_joystick_rawinput.c +++ b/src/qt/win_joystick_rawinput.c @@ -98,6 +98,8 @@ joystick_add_button(raw_joystick_t *rawjoy, plat_joystick_t *joy, USAGE usage) void joystick_add_axis(raw_joystick_t *rawjoy, plat_joystick_t *joy, PHIDP_VALUE_CAPS prop) { + LONG center; + if (joy->nr_axes >= 8) return; @@ -141,7 +143,10 @@ joystick_add_axis(raw_joystick_t *rawjoy, plat_joystick_t *joy, PHIDP_VALUE_CAPS } rawjoy->axis[joy->nr_axes].min = prop->LogicalMin; - joy->nr_axes++; + center = (rawjoy->axis[joy->nr_axes].max - rawjoy->axis[joy->nr_axes].min + 1) / 2; + + if (center != 0x00) + joy->nr_axes++; } void diff --git a/src/win/win_joystick_rawinput.c b/src/win/win_joystick_rawinput.c index 0bdb99a7a..6f2a1e4c0 100644 --- a/src/win/win_joystick_rawinput.c +++ b/src/win/win_joystick_rawinput.c @@ -99,6 +99,8 @@ joystick_add_button(raw_joystick_t *rawjoy, plat_joystick_t *joy, USAGE usage) void joystick_add_axis(raw_joystick_t *rawjoy, plat_joystick_t *joy, PHIDP_VALUE_CAPS prop) { + LONG center; + if (joy->nr_axes >= 8) return; @@ -142,7 +144,10 @@ joystick_add_axis(raw_joystick_t *rawjoy, plat_joystick_t *joy, PHIDP_VALUE_CAPS } rawjoy->axis[joy->nr_axes].min = prop->LogicalMin; - joy->nr_axes++; + center = (rawjoy->axis[joy->nr_axes].max - rawjoy->axis[joy->nr_axes].min + 1) / 2; + + if (center != 0x00) + joy->nr_axes++; } void