|
|
|
@ -114,15 +114,20 @@ bool process_joystick_analogread_quantum() { |
|
|
|
|
int16_t axis_val = joystick_axes[axis_index].mid_digit; |
|
|
|
|
# endif |
|
|
|
|
|
|
|
|
|
// test the converted value against the lower range
|
|
|
|
|
uint16_t ref = joystick_axes[axis_index].mid_digit; |
|
|
|
|
uint16_t range = joystick_axes[axis_index].min_digit; |
|
|
|
|
int16_t ranged_val = -127 * fminf(1.f, (axis_val - (float)(ref)) / (range - (float)ref)); |
|
|
|
|
if (ranged_val > 0) { |
|
|
|
|
// the value is in the higher range
|
|
|
|
|
range = joystick_axes[axis_index].max_digit; |
|
|
|
|
ranged_val = 127 * fminf(1.f, (axis_val - (float)(ref)) / (range - (float)ref)); |
|
|
|
|
//test the converted value against the lower range
|
|
|
|
|
int32_t ref = joystick_axes[axis_index].mid_digit; |
|
|
|
|
int32_t range = joystick_axes[axis_index].min_digit; |
|
|
|
|
int32_t ranged_val = ((axis_val - ref)* -127)/(range - ref) ; |
|
|
|
|
|
|
|
|
|
if (ranged_val > 0){ |
|
|
|
|
//the value is in the higher range
|
|
|
|
|
range = joystick_axes[axis_index].max_digit; |
|
|
|
|
ranged_val = ((axis_val - ref)* 127)/(range - ref); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//clamp the result in the valid range
|
|
|
|
|
ranged_val = ranged_val<-127 ? -127 : ranged_val; |
|
|
|
|
ranged_val = ranged_val>127 ? 127 : ranged_val; |
|
|
|
|
|
|
|
|
|
if (ranged_val != joystick_status.axes[axis_index]) { |
|
|
|
|
joystick_status.axes[axis_index] = ranged_val; |
|
|
|
|