no analog/sensitivity correction for analog buttons

This commit is contained in:
Brad Parker 2019-04-09 23:17:11 -04:00
parent dc80e49509
commit e0b59f13e2

View File

@ -879,7 +879,7 @@ static INLINE bool input_keys_pressed_iterate(unsigned i,
return false;
}
static int16_t input_joypad_axis(const input_device_driver_t *drv, unsigned port, uint32_t joyaxis)
static int16_t input_joypad_axis(const input_device_driver_t *drv, unsigned port, uint32_t joyaxis, bool button)
{
int16_t val = 0;
settings_t *settings = config_get_ptr();
@ -890,6 +890,10 @@ static int16_t input_joypad_axis(const input_device_driver_t *drv, unsigned port
val = drv->axis(port, joyaxis);
/* no deadzone/sensitivity correction for analog buttons currently */
if (button)
return val;
if (AXIS_POS_GET(joyaxis) == AXIS_DIR_NONE)
{
/* current axis is negative */
@ -913,7 +917,6 @@ static int16_t input_joypad_axis(const input_device_driver_t *drv, unsigned port
left = false;
}
if (settings->floats.input_analog_deadzone)
{
/* 0/1 are the left analog X/Y axes, 2/3 are the right analog X/Y axes */
@ -1054,7 +1057,7 @@ void input_menu_keys_pressed(void *data, input_bits_t *p_new_state)
{
if (joykey == NO_BTN || !sec->button(joypad_info.joy_idx, joykey))
{
int16_t axis = input_joypad_axis(sec, joypad_info.joy_idx, joyaxis);
int16_t axis = input_joypad_axis(sec, joypad_info.joy_idx, joyaxis, false);
float scaled_axis = (float)abs(axis) / 0x8000;
bit_pressed = scaled_axis > joypad_info.axis_threshold;
}
@ -1066,7 +1069,7 @@ void input_menu_keys_pressed(void *data, input_bits_t *p_new_state)
{
if (joykey == NO_BTN || !first->button(joypad_info.joy_idx, joykey))
{
int16_t axis = input_joypad_axis(first, joypad_info.joy_idx, joyaxis);
int16_t axis = input_joypad_axis(first, joypad_info.joy_idx, joyaxis, false);
float scaled_axis = (float)abs(axis) / 0x8000;
bit_pressed = scaled_axis > joypad_info.axis_threshold;
}
@ -1776,7 +1779,7 @@ int16_t input_joypad_analog(const input_device_driver_t *drv,
axis = joypad_info.auto_binds[ident].joyaxis;
/* Analog button. */
res = abs(input_joypad_axis(drv, joypad_info.joy_idx, axis));
res = abs(input_joypad_axis(drv, joypad_info.joy_idx, axis, true));
/* If the result is zero, it's got a digital button attached to it */
if (res == 0)
@ -1824,8 +1827,8 @@ int16_t input_joypad_analog(const input_device_driver_t *drv,
if (axis_plus == AXIS_NONE)
axis_plus = joypad_info.auto_binds[ident_plus].joyaxis;
pressed_minus = abs(input_joypad_axis(drv, joypad_info.joy_idx, axis_minus));
pressed_plus = abs(input_joypad_axis(drv, joypad_info.joy_idx, axis_plus));
pressed_minus = abs(input_joypad_axis(drv, joypad_info.joy_idx, axis_minus, false));
pressed_plus = abs(input_joypad_axis(drv, joypad_info.joy_idx, axis_plus, false));
res = pressed_plus - pressed_minus;
if (res == 0)