Vraag


  • Iris_3D
  • Registratie: Februari 2020
  • Laatst online: 10-07 17:08
Mijn vraag
Een fysieke Arduino Due creëert in de code 3 virtuele joysticks met 31 knoppen die hierdoor in Linux allemaal dezelfde naam hebben. Hoe maak ik hier in Linux onderscheid tussen?

Relevante software en hardware die ik gebruik
ArchLinux met KDE Plasma
jstest-gtk
Arduino Due, met de Heironimus joystick bibliotheek (https://github.com/MHeironimus/ArduinoJoystickLibrary)
Steam
ETS2
OMSI2
The Bus

Wat ik al gevonden of geprobeerd heb
Steam Input inschakelen of juist niet.

Proton startcommando's om HIDRAW, EVDEV of SDL uit te schakelen (geen effect, anders dan dat mijn Fanatec stuurwielbasis stopte met werken).

Verschillende Proton-versies.

AntiMicroX
Input Remapper
Steam Controller mapping.

In Windows gebruikte ik Universal Control Remapper en hoopte dat bovenstaande 3 programma's die functie over konden nemen.
Wat er echter gebeurd is het volgende:
Wijs ik in een van die 3 aan knop 12 van joystick 1 een gamepad-knop van een virtuele joystick toe, krijgt knop 12 van joysticks 2 en 3 dezelfde mapping. Die software kan het onderscheid niet maken, ondanks dat jstest-gtk dat wel kan.
In jstest-gtk zie ik onder dezelfde naam uitdrukkkelijk:
/dev/input/js0
/dev/input/js1
/dev/input/js2

Aanpassingen van de uploadcode van de Arduino IDE.

rules.d aanpassingen in een poging om bij het aankoppelen de naam te veranderen. Ik ben niet zo bedreven met het schrijven van dit soort regels, dus het kan best dat dat niet werkte omdat ik de regel verkeerd schreef.

De reden dat ik 31 knoppen per joystick gebruik heeft met OMSI2 te maken, dat heeft een limiet van 31 in plaats van 32 (foutje van de ontwikkelaars).
OMSI2 ondersteunt het gebruik van meer dan 1 joystick met dezelfde naam niet, vandaar de wens om de naam van virtuele joysticks te kunnen aanpassen.
Hiermee hoop ik ook te zorgen dat The Bus er daadwerkelijk meer dan 1 ziet. Mijn vrees is dat Proton ergens een vertaalslag aanbrengt waardoor er dingen fout gaan.

Ik ben, door alle vruchteloze pogingen dit werkend te krijgen op het punt aanbeland dat ik al een paar keer nagedacht heb de Due maar te veranderen in een veredeld toetsenbord. Maar dat vereist het remappen van werkelijk elk spel dat ik heb, in plaats van dat ik de toetsen met rust laat en er een joystick-knop aan kan verbinden.

Voor een beter idee van het project hieronder een foto:
Een foto van het project waarom het gaat

[ Voor 0% gewijzigd door Iris_3D op 21-06-2026 21:18 . Reden: Een paar spelfouten en verdwaalde copy-pastes... ]

Alle reacties


  • ocf81
  • Registratie: April 2000
  • Niet online

ocf81

Gewoon abnormaal ;-)

Als het goed is kan je voor de firmware van elk apparaat een andere identifier maken. Dat betekent natuurlijk wel dat je dan voor elk apparaat net iets andere firmware hebt op dat punt.

© ocf81 1981-infinity
Live the dream! | Politiek Incorrecte Klootzak uitgerust met The Drive to Survive
Bestrijd de plaag die woke heet! | Servitisatie is slavernij. Kies je eigen weg!


  • Iris_3D
  • Registratie: Februari 2020
  • Laatst online: 10-07 17:08
Hoi ocf81

Misschien dat ik je door de warmte verkeerd begrijp, maar, er is maar 1 fysiek apparaat. Dat fysieke apparaat creëert 3 virtuele, waarvan de naam gebaseerd wordt op het fysieke apparaat (VendorName, ProductName, min of meer). Daardoor duiken er 3 op met dezelfde naam.
Aan dat laatste probeer ik iets te veranderen in Linux, maar of ik doe het zelf verkeerd, of het is niet mogelijk. Ik hoopte hier mensen die echt even stukken slimmer zijn dan ik als het om Linux gaat te treffen die hier mogelijk iets meer licht op kunnen laten schijnen :) .

  • ocf81
  • Registratie: April 2000
  • Niet online

ocf81

Gewoon abnormaal ;-)

Zonder naar de code te kijken is het slechts raden hoe het geheel georganiseerd is. Hoe maak je die virtuele apparaten aan? Hebben die hun eigen identificatiekenmerken?

© ocf81 1981-infinity
Live the dream! | Politiek Incorrecte Klootzak uitgerust met The Drive to Survive
Bestrijd de plaag die woke heet! | Servitisatie is slavernij. Kies je eigen weg!


  • Iris_3D
  • Registratie: Februari 2020
  • Laatst online: 10-07 17:08
Die worden aangemaakt in de Arduino code middels dit gedeelte dat zich voor de void setup() { regel bevindt:
Joystick_ Joystick[JOYSTICK_COUNT] = {
//Joystick ID, Joystick Type, Buttons, Hats, x, y, z, Rotx, Roty, Rotz, Rudder, Throttle, Accelerator, Brake Steering
Joystick_(0x03, JOYSTICK_TYPE_JOYSTICK, 31, 0, false, false, false, false, false, false, false, false, false, false, false),
Joystick_(0x04, JOYSTICK_TYPE_JOYSTICK, 31, 0, false, false, false, false, false, false, false, false, false, false, false),
Joystick_(0x05, JOYSTICK_TYPE_JOYSTICK, 31, 0, false, false, false, false, false, false, false, false, false, false, false)
};

Het enige waaraan ze te herkennen zouden zijn, is het knop-aantal. Dat heb ik ook al geprobeerd te variëren, en werkte helaas evenmin als het ging om de remapper-software.

  • ocf81
  • Registratie: April 2000
  • Niet online

ocf81

Gewoon abnormaal ;-)

Kan je het hele project delen, zodat de hele context duidelijk wordt? Eventueel stuur je me een DM met een link naar de code o.i.d.

© ocf81 1981-infinity
Live the dream! | Politiek Incorrecte Klootzak uitgerust met The Drive to Survive
Bestrijd de plaag die woke heet! | Servitisatie is slavernij. Kies je eigen weg!

Pagina: 1