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.
Auf Ubuntu nicht getestet, aber dieses einfache Rezept funktioniert auf Debian Jessie (mit meinem klassischen iBuffalo-USB-Gamepad ):
$ sudo apt install xserver-xorg-input-joystick
quelle
xboxdrv sollte in der Lage sein zu tun, was Sie wollen. Es erfordert jedoch ein wenig Konfiguration, um mit Nicht-Xbox-Gamepads zu arbeiten, ähnlich wie in der Manpage (Details finden Sie unter --evdev-debug, um die Namen der Schaltflächen und Achsen herauszufinden):
quelle
Gleiches gilt für ein Nintendo 64-Gamepad
Ein paar Details
Mein Ziel war es, dies für Ego-Shoot-Spiele einzurichten, da ich es nicht gewohnt bin, mit Maus und Tastatur zu spielen. Die meisten Spiele unter GNU / Linux unterstützen das Gamepad jedoch nicht sehr gut. Ich habe versucht, dies wie den erweiterten Gamepad-Modus des berühmten N64-Spiels 007 - GoldenEye zu tun.
Auf diese Weise können Sie auch das Gamepad verwenden, um Ihre Maus zu ersetzen.
Meine Entscheidungen
Hoffe das wird anderen Spielern helfen.
Todo Wenn jemand weiß, wie es geht, würde mich interessieren, wie man eine Art "Mittelbereich" einrichtet, wenn sich der Mauszeiger nicht bewegt, auch wenn der Stick nicht perfekt in der Mitte ist. Dies würde verhindern, dass sich der Cursor etwas bewegt, wenn Sie das Gamepad nicht verwenden, es aber weiterhin aktiviert ist.
quelle
Ich habe xboxdrv ausprobiert und es hat irgendwie funktioniert, aber es war nie perfekt für mich und ich musste die Konfigurationsdatei manuell konfigurieren. Die bessere Lösung scheint das AntiMicro-Projekt zu sein: https://github.com/Ryochan7/antimicro Die Konfiguration ist wirklich einfach (obwohl die GUI ziemlich einfach ist), mit ein paar Klicks konnte ich:
Ich denke, das Projekt ist ziemlich neu, aber für mich scheint es bisher fast perfekt zu funktionieren. Das kleine Problem ist, dass das "Tray" -Symbol erstellt wird, mit dem Profile in der oberen linken Ecke gewechselt werden können, was nicht gut in das globale Ubuntu-Menüschema passt.
quelle