Letzte Woche habe ich mir eine neue Tastatur gegönnt und bin nun im Besitz einer Razer Black Widow 2013. Die Tastatur verfügt über fünf Zusatztasten (M1-5), die theoretisch mittels On-the-fly-Programmierung mit eigenen Makros (Abfolge beliebiger Tastenkombinationen) belegt werden können. Leider scheint diese Funktion nicht auf Hardwareebene, sondern über den Treiber geregelt zu sein, welchen es natürlich nicht für Linux gibt.

Die gute Nachricht: Die Tasten lassen sich zumindest als normale Zusatztasten nutzen (M1 = XF86Tools, M2-5 = XF86Launch5-8).

Die schlechte Nachricht: Es funktioniert nicht Out-of-the-Box.

Im folgenden werde ich in einer Schritt-für-Schritt-Anleitung erklären, wie man die Zusatztasten aktiviert.

Bei der Black Widow 2013 handelt es sich um eine Neuauflage der ursprünglichen Black Widow. Meine Anleitung stützt sich im wesentlichen auf diese Seite, bei der es noch um die alte Version der Tastatur handelt. Das ganze funktioniert aber uneingeschränkt auch auf meiner 2013er-Edition.

Das Grundproblem ist folgendes: Damit die Tasten funktionieren, muss ein entsprechendes Initialisierungssignal an die Tastatur geschickt werden. Unter Windows wird dies vom Treiber übernommen, welcher aber, wie gesagt, nicht für Linux verfügbar ist. Das Problem lässt sich aber relativ einfach lösen, indem man das entsprechenden Signal eben selbst mittels einem kleinen Script sendet.

Meine Anleitung bezieht sich auf Ubuntu 12.04, sollte sich aber problemlos auf andere Linux-Distributionen übertragen lassen.

Schritt 1: Das Script

Gehe auf http://superuser.com/questions/342107/getting-macro-keys-from-a-razer-blackwidow-to-work-on-linux/474595#474595 und speichere das Script von Sergey auf deinem PC (einfach den Text kopieren und in Textdatei speichern). Im folgenden gehe ich davon aus, dass das Script unter dem Namen init_blackwidow.py gespeichert wurde.

Achtung: Es müssen gegebenenfalls die Vendor- und Product-ID ganz oben im Script angepasst werden. Um die entsprechenden Daten der eigenen Tastatur zu erfahren, führe folgenden Befehl aus:

cat /proc/bus/input/devices

Suche in der Ausgabe nach der Black Widow (nicht wundern, sie wird mehrmals aufgelistet). In der ersten Zeile jedes neuen Eintrags stehen die benötigten Daten. Bei mir sieht das z.B. so aus:

I: Bus=0003 Vendor=1532 Product=011b Version=0111
N: Name="Razer Razer BlackWidow 2013"
...

Bei VENDOR_ID muss ich also 0x1532 und bei PRODUCT_ID den Wert 0x011b eintragen.

Ansonsten muss nichts geändert werden. Wer mag kann aber noch das Logo pulsieren lassen, indem ganz unten im Script nach

bw = blackwidow()
bw.send(init_old)

noch die Zeile

bw.send(pulsate)

angehängt wird (ich finde das ganz praktisch als direkt sichbares Feedback, ob das Script erfolgreich durchgelaufen ist).

Schritt 2: Python 3 und pyusb 

Das Script ist in Python 3 geschrieben und benötigt das Modul pyusb. Python 3 ist standardmäßig nicht installiert, dies muss also nachgeholt werden:

sudo apt-get install python3

pyusb ist in den Paketquellen von 12.04 leider nur für Python 2 verfügbar. Um es auch mit Python 3 nutzen zu können muss es also manuell installiert werden:

  • Lade den aktuellen Source Code von der Projektseite herunter.
  • Entpacke die Datei und öffne ein Terminal im entsprechenden Verzeichnis
  • Installiere pyusb für Python 3 mit folgendem Befehl:

    sudo python3 setup.py install
    

Schritt 3: Testen

Das wesentliche ist nun getan. Das Script kann nun ausgeführt werden, um zu testen, ob es funktioniert.

Falls nicht bereits geschehen, muss die Datei ausführbar gemacht werden:

chmod a+x init_blackwidow.py

Und dann kann es ausgeführt werden:

sudo ./init_blackwidow.py

Wenn alles funktioniert sollte folgende Ausgabe zu sehen sein:

Found device 5426:283
Kernel driver active. Detaching it.
Claiming interface
Data sent successfully.
Data sent successfully.
Releasing claimed interface
Reattaching the kernel driver
Done.

Außerdem sollte - falls der entsprechende Befehl hinzugefügt wurde - das Logo anfangen zu pulsieren. Die Tasten sollten nun die entsprechenden XF86-Code senden und sind somit etwa für Shortcuts verwendbar oder um bestimmte Programm zu starten.

Wenn bis hierhin alles funktioniert hat: Herzlichen Glückwunsch, du kannst die M-Tasten nun benutzen :)

Schritt 4: Permanent machen

Leider muss das Script nach jedem Neustart wieder ausgeführt werden, es sollte also am besten beim Start automatisch vom Betriebssystem ausgeführt werden. Dafür gibt es grundsätzlich mehrere Möglichkeiten, die einfachste wäre vermutlich, es über die Einstellungen der verwendeten Oberfläche in den Autostart einzutragen. Im folgenden werde ich aber den Weg über udev gehen. Das ist zwar etwas aufwendiger, hat aber den Vorteil, dass es unabhängig von der verwendeten Oberfläche ist und schon vor dem Login ausgeführt wird.

Gehe in das Verzeichnis /etc/udev/rules.d und lege eine neue Datei namens razer_blackwidow.rules an, mit folgendem Inhalt:

SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="1532", ATTR{idProduct}=="011b", RUN+="/root/init_blackwidow.py"

Achtung: hier müssen wie in Schritt 1 eventuell Vendor- und Product-ID angepasst werden.

Außerdem wird angenommen, dass das Script im Verzeichnis /root liegt. Es muss also entweder dort hingeschoben werden (sudo mv init_blackwidow.py /root) oder der Pfad entsprechend angepasst werden.

Abschließend möchte ich ausdrücklich den Usern von superuser.com danken! Ohne diese Seite hätte ich die Tasten sicher nicht so schnell zum Laufen gebracht.