Nach Grumbels Antwort habe ich xboxdrv- Lösung mit Unterstützung seines Links und speziell dieser Seite ausprobiert :
1. Installieren Sie xboxdrv 0.8.2 vom Ubuntu Software Center.
Installieren Sie bei Bedarf auch uinput und joydev . Ich habe es so gemacht sudo modprobe uinput
+sudo modprobe joydev
2. Sie müssen das Ereignis des Gamepads kennen:
Starten Sie udevadm monitor --udev
das Gamepad und schließen Sie es an:
$ udevadm monitor --udev
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
UDEV [6722.377700] add /devices/pci0000:00/0000:00:1d.3/usb5/5-1 (usb)
UDEV [6722.383264] add /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0 (usb)
UDEV [6722.383333] add /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/0003:046D:C218.0003 (hid)
UDEV [6722.383389] add /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/0003:046D:C218.0003/hidraw/hidraw1 (hidraw)
UDEV [6722.387123] add /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/input/input10 (input)
UDEV [6722.399284] add /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/input/input10/event8 (input)
UDEV [6722.412128] add /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/input/input10/js0 (input)
Ich schließe daraus, dass das Ereignis meines Gamepads / dev / input / event8 ist
3. Zeigen Sie die Namen aller Tasten, Achsen und Schaltflächen des Gamepads an.
Die Idee ist, xboxdrv
alle Tasten zu starten und zu testen und das Ergebnis auf Papier zu notieren.
$ sudo xboxdrv --evdev /dev/input/event8 --evdev-debug
Your Xbox/Xbox360 controller should now be available as:
/dev/input/js1
/dev/input/event9
Press Ctrl-c to quit, use '--silent' to suppress the event output
EV_ABS ABS_X 128
EV_ABS ABS_Y 128
...
In meinem Fall ist das Ergebnis:
4. Stellen Sie die Konfigurationsdatei ein
Erstellen Sie eine Datei xboxdrv-mouse.ini , um die XY-Achse sowie die linke und rechte Maustaste festzulegen .
Hier stelle ich Gamepad-Tasten 2für die linke und die 3rechte Maustaste ein:
[xboxdrv]
evdev=/dev/input/event8
silent=true
[evdev-absmap]
ABS_X=x1
ABS_Y=y1
[ui-axismap]
x1=REL_X:10
y1=REL_Y:-10
[evdev-keymap]
BTN_THUMB=a
BTN_THUMB2=b
[ui-buttonmap]
a=BTN_LEFT
b=BTN_RIGHT
# EOF #
Beachten Sie, dass der Wert für REl_X und REL_Y die Geschwindigkeit der Maus zu definieren scheint und durch Definieren eines negativen Werts die Achse invertiert (siehe hier für REL_Y).
Ein weiteres Beispiel mit mehr Schaltflächendefinition
[xboxdrv]
evdev=/dev/input/event8
silent=true
[evdev-absmap]
ABS_X=x1
ABS_Y=y1
ABS_HAT0X=x2
ABS_HAT0Y=y2
[ui-axismap]
x1=REL_X:10
y1=REL_Y:-10
x2=KEY_LEFT:KEY_RIGHT
y2=KEY_DOWN:KEY_UP
[evdev-keymap]
BTN_TRIGGER=x
BTN_TOP=y
BTN_THUMB=a
BTN_THUMB2=b
BTN_PINKIE=rt
BTN_BASE2=rb
BTN_TOP2=lt
BTN_BASE=lb
BTN_BASE3=back
BTN_BASE4=start
[ui-buttonmap]
x=KEY_KPENTER
y=KEY_SPACE
a=BTN_LEFT
b=BTN_RIGHT
rt=KEY_KP8
rb=KEY_KP2
lt=KEY_KP6
lb=KEY_KP4
back=KEY_LEFTSHIFT
start=KEY_RIGHTCTRL
# EOF #
5. Starten Sie es
sudo xboxdrv --config xboxdrv-mouse.ini
Erstellen Sie eine udev-Regelsudo
, um ein Starten mit zu vermeiden .
FAZIT
Es funktioniert gut, es ist die beste Lösung für mich.