PS4 Controller als Fernsteuerung unter Ubuntu nutzen

Ich hab mir vor Kurzem einen PS4-Controller zugelegt. Unter Ubuntu 14.04 wird der dank Treibern im Kernel automatisch erkannt. Sowohl per Bluetooth als auch per Kabel lässt sich so zum Beispiel in Steam problemlos zocken. Neben dem Spielen mit dem Controller, dass völlig ohne Einrichtungsaufwand funktioniert, interessierte mich nun, ob es nicht auch möglich ist, den Controller als Fernsteuerung zu benutzen.

Dank xboxdrv lassen sich die 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. Damit ihr euch diese etwas 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 rechte dient als Mausrad-Ersatz, L1 und R1 ersetzen die Maustasten. Der Rest der Tasten wird als VLC-Fernsteuerung benutzt. So startet das Dreieck Filme oder pausiert sie. Das Viereck 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 Kreis starten und dem Kreuz wieder beenden.

An das Mauspad hab ich mich bisher noch nicht heran getraut. Mittels ds4drv sollte sich selbiges eigentlich nativ unter Linux nutzen lassen. Leider ist es mir bisher nicht gelungen das Programm zu einer stabilen Verbindung zu überreden.

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

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

[evdev-absmap]
ABS_X=x1
ABS_Y=y1
ABS_Z=x2
ABS_RZ=y2

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

[evdev-keymap]
BTN_Y=rt
BTN_Z=lt
BTN_A=x
BTN_X=y
BTN_B=a
BTN_C=b
BTN_TL=lb
BTN_TR=rb
BTN_BASE3=back
BTN_BASE4=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 #