web-dev-qa-db-de.com

Ubuntu 18.04 erweitert Sony DualShock3s neuen sony_hid-Treiber um ein zweites Joystick-Gerät

Als der neue hid_sony-Treiber veröffentlicht wurde, wurden die Gyro-/Beschleunigungsmessereingänge in separate Joystick-Geräte aufgeteilt. Jetzt, ein paar Wochen später, finde ich nur die Register der Sticks, Trigger und Tasten des Eingabegeräts. das ist für mich kein problem. Der Verlust der Kreisel-/Beschleunigungsmesserachsen ist ein Problem. Sie können das Pastebin unten sehen, wenn ich den Sony PlayStation (R) 3-Controller anschließe. Bewegungssensoren werden nicht als Joystick-Gerät registriert, während dem Sony PlayStation (R) 3-Controller ein Joystick zugewiesen wird. Möglicherweise muss nur eine Konfigurationsdatei bearbeitet werden, damit sich das Gyro-Gerät registriert (oder Sie registrieren die Schaltfläche Analogeingänge). Ich habe meine Konfiguration nicht geändert, seitdem das neue sony_hid veröffentlicht wurde und ich zuerst die zwei Joysticks (physisch und Gyro) pro Dualshock-Controller hatte, aber ich bekomme nicht mehr das zweite Gyro-Joystick-Gerät pro Dualshock3, das ich entweder über USB oder Bluetooth verbinde . Gibt es eine .config-Bearbeitung, mit der sich die Gyro-Achsen registrieren lassen, sowie die (früher unter dem alten Treiber verfügbaren) analogen Achsen für diejenigen, die dies ebenfalls benötigen?

4.15.0-38-generic # 41-Ubuntu SMP Mi Okt 10 10:59:38 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux https://Pastebin.com/zw8W8Ucs

3
dave

Fehlendes Joystick-Gerät

Ich habe Ihren Fehler auf dem Launchpad gefunden, aber wie sich herausstellte, handelt es sich um eine "Regression" des in joydev eingeführten Treibers

Eingabe: joydev - Bewegungssensoren ds3/ds4/udraw auf schwarze Liste setzen

Der Autor hat das Commit nicht erklärt und ich kann ehrlich gesagt den Grund dafür nicht erkennen. Ich schlage vor, dass Sie einen Fehler dagegen melden.

Das evdev-Gerät funktioniert auch nicht

Es gibt auch einen kleinen Fehler mit dem evdev-Geräteknoten, der von hid_sony erstellt wurde: Er ist nicht für Benutzer zugänglich, sodass die Bewegungssensoren nicht in Anwendungen angezeigt werden, die evdev Geräte anstelle von joydev verwenden. . Wenn dies Ihr Problem ist, erstellen Sie die Datei /etc/udev/rules.d/51-ds3-accels-uaccess.rules mit folgendem Inhalt:

SUBSYSTEM=="input", KERNEL=="event*", ATTRS{name}=="*Motion Sensors", TAG+="uaccess"

Diese Regel gilt für alle Geräte, die mit "Bewegungssensoren" enden. Daher gilt sie auch für abstoßende PS3-Controller wie Gasia/Shanwan (das Suffix wird vom hid_sony -Treiber hinzugefügt).

Ich brauche das js * -Gerät und kann es kaum erwarten, den Fehler zu beheben!

Da das Gerät evdev vorhanden ist, können wir die Blacklist joydev umgehen, indem wir ein neues Gerät uinput erstellen, das nicht auf die Blacklist gesetzt wird, und die Ereignisse an dieses weiterleiten.

Installieren Sie python-evdev und erstellen Sie die folgenden 3 Dateien:

~/.local/bin/evdev-forwarder.py :

import evdev, sys

device = evdev.InputDevice(sys.argv[1])
joystick = evdev.UInput.from_device(device, name=(device.name + ' forwarded'))

for event in device.read_loop():
    joystick.write_event(event)

~/.config/systemd/user/evdev-forwarder @ .service :

[Unit]
Description=Forwarding evdev device: %I

[Service]
Type=simple
Environment="ARGS=%I"
ExecStart=/usr/bin/python %h/.local/bin/evdev-forwarder.py $ARGS

/etc/udev/rules.d/51-ds3-accels-workaround.rules

KERNEL=="uinput", SUBSYSTEM=="misc", TAG+="uaccess"
ACTION=="add", SUBSYSTEM=="input", KERNEL=="event*", ATTRS{name}=="*Motion Sensors", TAG+="uaccess", TAG+="systemd", ENV{SYSTEMD_USER_WANTS}="[email protected]$env{DEVNAME}.service"

Hinweis: Der oben genannte 51-ds3-accels-uaccess.rules ist in diesem Fall nicht erforderlich.

Analoge Tasten

Mit dem hid_sony -Treiber werden wir die analogen Tasten wahrscheinlich nie mehr zurückbekommen. Es gibt verschiedene Kommentare im Quellcode , die dies anzeigen, z.

Wir verwenden die gleiche Achsen- und Tastenzuordnung wie das DS3, das die Linux-Gamepad-Spezifikation verwendet.

...und ...

Der DS3 bietet analoge Werte für die meisten Tasten und sogar für HAT-Achsen über Gd Pointer. Darunter sind auch L2 und R2 anstelle von Gd Z/RZ angegeben. Ordnen Sie L2 und R2 neu zu und ignorieren Sie andere analoge 'Tastenachsen' als Es gibt keine gute Möglichkeit, sie zu melden .

Ich habe diese Teile hervorgehoben, weil sie wahrscheinlich der Grund dafür sind. In der Linux Gamepad Specification werden keine analogen Schaltflächen außer den linken/rechten Auslösern erwähnt.

Sofern Sie den Treiber nicht selbst ändern oder etwas wirklich Veraltetes wie QtSixA/sixad verwenden, können Sie die analogen Ereignisse der Gesichtsschaltflächen nicht verwenden.

2
danzel