FRC-Utilities / QDriverStation

Cross-platform clone of the FRC Driver Station

Home Page:https://frc-utilities.github.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Joystick mappings are wrong

RikuKawai opened this issue · comments

Joystick mappings for the Logitech F310 are incorrect in QDriverStation, but are correct in jstest-gtk.
Debian Stretch x86_64, Linux 4.7, QDriverStation 16.10.

They should be as follows, which matches what they are under Windows and in the robot code:

  • Axis 0: Left Stick X
  • Axis 1: Left Stick Y
  • Axis 2: Left Trigger
  • Axis 3: Right Stick X
  • Axis 4: Right Stick Y
  • Axis 5: Right Trigger

In QDriverStation, the mappings are:

  • Axis 0: Left Stick X
  • Axis 1: Left Stick Y
  • Axis 2: Right Stick X
  • Axis 3: Right Stick Y
  • Axis 4: Left Trigger
  • Axis 5: Right Trigger

This renders it impossible to correctly operate the robot without having different code for Windows and Linux.

Hi!

This issue has been present for a very long time. Since we use SDL for cross-platform joystick support, we (unfortunately) depend on the mappings provided by SDL.

For the moment, I think that the smartest way is to implement a method to allow the user to re-map the joysticks (and possibly sharing the fixed mappings with the community). I will work on this issue when I have some free time in December, as I am currently about to present final exams for this quarter.

Thanks for the feedback!

Can confirm, Same issue on our Logitech Attack 3's

Thanks for the confirmation! I will try alternative options to SDL, such as Gainput. Ultimately, I think that the best way to standardize joystick input across operating systems will be to allow users to manually re-map joysticks on the fly...

Interestingly, the output from QJoysticks is different from the output of sdl-jstest, but only on one axis

@everylittlebit This can happen because QJoysticks uses SDL2 instead of SDL.

Still having this issue on macOS High Sierra 10.13. I agree with @alex-spataru that the best solution seems to be to allow the user to remap the controls. Unfortunately AFAIK 360Controller doesn't contain any way to remap axes, only buttons.