input-remapper
input-remapper copied to clipboard
UI: improve recording for devices with analog axes
Devices with Analog axes can be very sensitive. While recording, this can cause a lot of unwanted input, e.g. when I tried to map an axis on my SpaceMouse (imagine it as joystick with 6 analog axes - so maybe the most extreme use case) , the UI got me: Z + + Y Up + RX Left + RY Down + RZ - + X Right
The expected result (what the user wants) is usually either one axis or a button on the device.
Possible solution: As default, only record analog input if it's value is over a threshold (maybe 1/3 of max). Long pressing the Record button could open a dropdown menu with access to:
- Record everything (as it works now)
- Slider to change threshold
- Choose axis directly
@jonasBoss isn't the recording pipeline also using the default deadzone?
As default, only record analog input if it's value is over a threshold (maybe 1/3 of max).
The threshold is currently at 30% for EV_ABS
inputs. And at 3 Units for EV_REL
inputs except for Wheel events there the threshold is at 1 Unit. This works well for most devices.
The issue with the SpaceMouse form 3DConnexion is that it generates EV_REL
events, which is Stupid. Physically the SpaceMouse is a joystick, not a mouse.
I guess we can increase the threshold for EV_REL
events, but it is more important to have a good user Experience with common devices like mouse.
The fact that SpcaeMouse records 6 inputs at once is unfortunate, but not a deal-breaker in my opinion. There is Always the possibility to delete unwanted inputs after the recording in the Advanced
menue.
Long pressing the Record button could open a dropdown menu
I am not sure if we can detect a long press in GTK properly. But maybe a split button like this:
isn't the recording pipeline also using the default deadzone?
No, the recording Pipeline always converts to key-events with a hard-coded threshold.
The issue with the SpaceMouse form 3DConnexion is that it generates EV_REL events, which is Stupid. Physically the SpaceMouse is a joystick, not a mouse.
Right - I had completely forgotten about that (and completely agree on the stupidity).
I guess we can increase the threshold for EV_REL events, but it is more important to have a good user Experience with common devices like mouse.
I agree. And choosing the axis with a popup menu should be sufficient. Another alternative would be to implement the ability to set thresholds for EV_REL events per device.