PS3 Controller als Fernsteuerung unter Ubuntu nutzen

Nachdem sich herausgestellt hat, dass sich ein PS4 Controller nur unter sehr konkreten Bedingungen mit einer PS3 verbinden lässt, habe ich meinen zurück gegeben und mir einen PS3 Controller zugelegt. Analog zu meinen Erläuterungen wie sich ein PS4 Controller unter Ubuntu nutzen lässt, hier jetzt die Anleitung für einen PS3 Controller.

Zunächst gilt es Ubuntu und Controller miteinander bekannt zu machen. Das wie immer gut sortierte Wiki von ubuntuuser.de erklärt, was dazu nötig ist.

Wie auch beim PS4 Controller lassen sich mit xboxdrv Tastenbefehle des Controllers problemlos auf Tastatur- oder Mausbefehle „mappen“. Das Programm befindet sich in den Ubuntu-Paketquellen und lässt sich mit einem freundlich aber bestimmten sudo apt-get install xboxdrv installieren.

Zunächst gilt es heraus zu finden welches „Event“ dem Gerät von eurem Rechner zugeordnet wurde. Vor dem Verbinden startet ihr dafür im Terminal folgenden Befehl:

udevadm monitor --udev

Wenn ihr jetzt euer Gerät verbindet (entweder via Kabel oder per Bluetooth-Verbindung), dann sollte die Ausgabe einige Zeilen Anmelde-Protokoll ausspucken. In diesen Zeilen versteckt sich irgendwo /input/inputX/eventY. Wichtig ist hier eventY. Unter diesem Namen verwaltet xboxdrv den Controller.

Nun ist es notwendig zu wissen, unter welchem „Namen“ die einzelnen Eingabeelemente des Controllers welche Befehle senden. Mit dem Befehl

sudo xboxdrv --evdev /dev/input/eventY --evdev-debug

lässt sich das heraus finden. Um unnötige Informationen der Motion-Sensoren auszublenden lässt sich dieser Befehl mit grep kombinieren, um zum Beispiel nur Tastendrücke anzeigen zu lasssen, hilft es die Ausgaben nach dem String „BTN“ zu filtern. Der fertige Befehl dazu lautet:

sudo xboxdrv --evdev /dev/input/eventY --evdev-debug | grep BTN

Damit ihr euch diese dennoch anstrengende Prozedur sparen könnt, habe ich eine Übersichts-PDF gebaut.

PS4_controller_udev

Die einzelnen Tastenanschläge lassen sich nun in einer Config-Datei umrouten, die dem Programm xboxdrv beim Start übergeben wird. Meine aktuelle Config-Datei findet ihr am Ende des Artikels. Ich habe diese in meinem Home-Verzeichnis (~/.xboxdrv-conf) gespeichert. Der Programm-Aufruf sieht nun folgender Maßen aus:

sudo xboxdrv --config  ~/.xboxdrv-conf

So lässt sich der Controller nun als Maus-Ersatz benutzen. Der linke Stick steuert den Cursor, der Dreieck und Kreis dienen als Mausrad-Ersatz, L1 und R1 ersetzen die Maustasten. Der Rest der Tasten wird als VLC-Fernsteuerung benutzt. So startet das START Filme oder pausiert sie. Das SELECT stoppt sie. Mit L2 und R2 lässt sich zum nächsten oder vorherigen Video skippen. Und der Vollbild-Modus lässt sich mit dem Crosair-Tasten hoch und runter starten und wieder beenden.

Abschließend, wie versprochen, meine Config-Datei zur Maus- und VLC-Fernbedienung:

[xboxdrv]
evdev=/dev/input/event15
silent=true

[evdev-absmap]
ABS_X=x1
ABS_Y=y1
ABS_TILT_X=x2
ABS_TILT_Y=y2

[ui-axismap]
x1=REL_X:20
y1=REL_Y:-20
x2=REL_WHEEL:1:50
y2=REL_WHEEL:1:50

[evdev-keymap]
BTN_BASE5=rt
BTN_BASE6=lt
BTN_TRIGGER=x
BTN_TOP=y
BTN_BASE=a
BTN_TOP2=b
BTN_BASE3=lb
BTN_BASE4=rb
BTN_BASE2=back
BTN_PINKIE=start

[ui-buttonmap]
rt=BTN_LEFT
lt=BTN_RIGHT
x=KEY_S
y=KEY_SPACE
a=KEY_ESC
b=KEY_F
rb=KEY_N
lb=KEY_P
back=KEY_LEFTSHIFT
start=KEY_RIGHTCTRL

# EOF #