Skip to content

1 physical Arduino, different names for virtual joysticks #314

Description

@irisnotaprogrammer

Let me first state: I am unsure if I am requesting something completely impossible from the Library/IDE or the Arduino hardware here.

My feature request:
My Arduino Due creates a 0 axes, 87 button joystick. I recently switched to ArchLinux, which has an 80 button max kernel limit.

So I divided my joystick into 3 31 button ones (one game has that as a limit) and applied the USB quirks: https://github.com/MHeironimus/ArduinoJoystickLibrary/wiki/FAQ#linux-support
In /dev/input I see 3 evdev events, and three js* links.
ETS2, a native Linux game, handles the 3 identically named Due's as separate controllers perfectly.

An old, Proton-enabled game sees all three, but disallows adding more than 1 identically named controller. Manually changing the name of this controller does not work: all Due's listed listen solely to the 31 buttons on js0 or the first event regardless of which controller I choose.

A different game sees just 1 Due. Mapping, let's say button 6 on js0 to something, and then triggering button 6 on js1 or 2, crashes joystick functionality for a while. Sometimes the game recovers and partially handles input again, sometimes it does not.

Would the library or IDE, or the hardware even support a change so that virtual joysticks get designated a number in it's device name/title?

Additional context
This is the Proton-enabled game OMSI2 that made me go with 31 buttons per joystick because the developers made a mistake. This is also the game unable to index more then 1 identically named controller.
Image

This is the Proton-enabled game The Bus unable to index more than 1.
Image

I have been messing with Proton versions, Wine registry keys, tried to disable joydev, evdev, SDL, HIDRAW. I tried using the Joystick_Type GamePad for the second joystick and multiaxis for the third one, but that also did not work.

You might wonder: what about input remapping.
This is also an issue: AntiMicroX can not distinguish between the controllers, even though it uses (1), (2), and (3) in the tabs. It turns out that that is merely a visual distinction: adding a mapping to a button on js3, adds it to all others.

Input Remapper was the other alternative I tried. This application behaves the same as The Bus and can only see one Arduino Due and crashes instantly upon triggering a button other than one on js0.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions