Ich habe einen Razer BlackWidow Ultimate mit zusätzlichen Schlüsseln für Makros ausgewählt, die mit einem unter Windows installierten Tool erstellt wurden . Ich gehe davon aus, dass dies keine Fancypants-Joojoo-Keys sind und Scancodes wie alle anderen Keys ausgeben sollten.
Erstens, gibt es eine Standardmethode, um diese Scancodes unter Linux zu überprüfen? Zweitens, wie kann ich diese Schlüssel so einstellen, dass sie in Befehlszeilen- und X-basierten Linux-Setups ausgeführt werden? Meine aktuelle Linux-Installation ist Xubuntu 10.10, aber ich werde zu Kubuntu wechseln, sobald ein paar Dinge behoben sind. Idealerweise sollte die Antwort generisch und systemweit sein.
Dinge, die ich bisher ausprobiert habe:
showkeys
aus dem eingebauten kbd-Paket (in einem separaten vt) - Makroschlüssel nicht erkanntxev
- Makrotasten nicht erkanntInhalt von / dev / input / by-path sowie lsusb und evdev output
Die Ausgabe dieses Ahk-Skripts deutet darauf hin, dass die M-Tasten keine Standard-Scancodes ausgeben , die von Windows erkannt werden
Dinge, die ich versuchen muss
snoopy pro + reverse engineering (oh je)
Wireshark - vorläufiges Herumfummeln scheint darauf hinzudeuten, dass keine Scancodes ausgegeben wurden, wenn meines Erachtens die Tastatur überwacht und die Tasten gedrückt werden. Kann bedeuten, dass zusätzliche Tasten ein separates Gerät sind oder auf irgendeine Weise initialisiert werden müssen.
In drei Szenarien muss dies mit der lsusb-Ausgabe von Linux verglichen werden: Standalone, Übergabe an eine Windows-VM ohne installierte Treiber und dasselbe mit.
LSUSB erkennt nur ein Gerät bei einer eigenständigen Linux-Installation
Es kann nützlich sein, zu überprüfen, ob die Mäuse denselben Razer Synapse-Treiber verwenden, da dies bedeutet, dass einige Variationen von razercfg möglicherweise funktionieren (nicht erkannt, scheint nur für Mäuse zu funktionieren).
Dinge, die ich ausgearbeitet habe:
In einem Windows-System mit dem Treiber wird die Tastatur als Tastatur und als Zeigegerät angesehen. Das Zeigegerät verwendet - zusätzlich zu Ihren Standardmaus-Treibern - einen Treiber für etwas, das als Razer Synapse bezeichnet wird.
Maustreiber unter
evdev
undlsusb
auch unter LinuxEinzelgerät unter OS X offenbar, obwohl habe ich noch versuchen
lsusb
äquivalent auf , dassDie Tastatur wechselt in OS X nach der Initialisierung mit dem Treiber in den pulsierenden Hintergrundbeleuchtungsmodus. Dies sollte wahrscheinlich darauf hinweisen, dass beim Aktivieren eine Initialisierungssequenz an die Tastatur gesendet wird.
Sie sind in der Tat Fancypants Joojoo-Schlüssel.
Diese Frage etwas erweitern:
Ich habe Zugriff auf ein Windows-System. Wenn ich also Tools verwenden muss, um die Frage zu beantworten, ist dies in Ordnung. Ich kann es auch auf Systemen mit und ohne das Konfigurationsdienstprogramm versuchen. Das erwartete Endergebnis ist jedoch, diese Schlüssel unter Linux nutzbar zu machen.
Mir ist auch klar, dass dies eine sehr spezielle Hardwarefamilie ist. Ich würde gerne alles testen, was auf einem Linux-System Sinn macht, wenn ich detaillierte Anweisungen habe - dies sollte die Frage für Leute öffnen, die über Linux-Kenntnisse verfügen, aber keinen Zugriff auf diese Tastatur haben.
Das Mindestendergebnis, das ich benötige:
Ich muss diese Tasten erkennen und auf jede Art und Weise auf einer der aktuellen grafischen Ubuntu-Mainstream-Varianten verwenden können und muss natürlich mit meiner Tastatur arbeiten. Virtuelle Kekse und verrückte Requisiten, wenn sie gut verpackt sind und vom durchschnittlichen Benutzer verwendet werden können.
Ich werde kompilierten Code erfordern , die auf meinem System funktionieren wird, oder eine Quelle , dass ich (mit Anweisungen , wenn es komplizierter ist als kompilieren ./configure
, make
, make install
) , wenn zusätzliche Software nicht auf den Ubuntu - Repositories für die aktuelle LTS oder Standard - Desktop - Release zum Zeitpunkt der die Antwort. Ich benötige auch ausreichende Informationen, um die Schlüssel auf meinem eigenen System zu replizieren und erfolgreich zu verwenden.
quelle
Antworten:
M1-M5 sind in der Tat normale Tasten - sie müssen nur speziell aktiviert werden, bevor sie gedrückt werden, um einen Scancode zu generieren. tux_mark_5 hat ein kleines Haskell-Programm entwickelt, das die richtige SET_REPORT-Nachricht an Razer-Tastaturen sendet, um diese Tasten zu aktivieren. Ex-Parrot hat denselben Code nach Python portiert.
Auf Arch Linux-Systemen wurde der Python-Port gepackt und ist unter https://aur.archlinux.org/packages.php?ID=60518 verfügbar .
Auf Debian- oder Ubuntu-Systemen ist es relativ einfach, den Python-Port des Codes einzurichten. Sie müssen PyUSB und libusb (als root) installieren:
Dann nimm die
blackwidow_enable.py
Datei von http://finch.am/projects/blackwidow/ und führe sie aus (auch als root):Dadurch werden die Tasten aktiviert, bis die Tastatur ausgesteckt oder der Computer neu gestartet wird. Um dies dauerhaft zu machen, rufen Sie das Skript in dem von Ihnen bevorzugten Startskriptstil auf. Anweisungen zum Einrichten in Debian finden Sie in der Debian-Dokumentation .
Um den Haskell-Code von tux_mark_5 zu verwenden, müssen Sie Haskell installieren und den Code selbst kompilieren. Diese Anweisungen gelten für ein Debian-ähnliches System (einschließlich Ubuntu).
Installieren Sie GHC, libusb-1.0-0-dev und cabal (als root):
Holen Sie sich die Liste der Pakete:
Installieren Sie USB-Bindungen für Haskell (kein Root erforderlich):
Laden Sie das Dienstprogramm herunter:
Erstellen Sie das Dienstprogramm:
Führen Sie das Dienstprogramm aus (auch als root):
Danach können Sie die EnableRazer-Binärdatei an eine beliebige Stelle kopieren und beim Start ausführen.
Unmittelbar nach der Ausführung sollte X Server M1 als XF86Tools, M2 als XF86Launch5, M3 als XF86Launch6, M4 als XF86Launch7 und M5 als XF86Launch8 anzeigen. Events für FN werden ebenfalls ausgegeben.
Diese Schlüssel können in xbindkeys oder in den Systemeinstellungen von KDE an beliebige Aktionen gebunden werden.
Da sich Ihre Tastatur möglicherweise unterscheidet, müssen Sie möglicherweise die Produkt-ID in Zeile 64 von Main.hs ändern:
quelle
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="1532", ATTR{idProduct}=="010e", RUN+="/root/EnableRazer"
drin (hier können Sie das ändern müssen path and id again)Could not select configuration endpoint.
Razer scheint den Cloud-basierten Synapse 2-Konfigurator heutzutage auf alle Benutzer auszudehnen, mit dem dazugehörigen Firmware-Upgrade auf Version 2. *. Sobald Sie die Firmware aktualisiert haben, können Sie nicht mehr zurückkehren (die Tastatur ist vollständig blockiert, wenn Sie versuchen, sie mit einer älteren Firmware zu flashen).
Die "magischen Bytes" aus dem Haskell-Programm in der Antwort von tux_mark_5 funktionieren mit der neuesten Firmware nicht. Stattdessen sendet der Treiber diese Bytes während der Initialisierungssequenz: '0200 0403'. Diese aktivieren die Makrotasten, aber die Tastatur wechselt in einen bestimmten Modus, in dem anstelle des Standard-HID-Protokolls 16-Byte-Pakete gesendet werden (vermutlich, um die Anzahl der Tasten zu erhöhen, die gleichzeitig gedrückt werden können). Linux HID-System kann das nicht ganz bewältigen, und während die meisten Tasten wie erwartet funktionieren, werden die Makrotasten nicht erkannt: Der HID-Treiber gibt beim Drücken keine Daten an die Eingabeebene weiter.
Senden Sie die folgenden Bytes, um Ihre Tastatur in den Legacy-Modus zu versetzen (in dem die Makrotasten XF86Launch * -Tastencodes und die FN-Taste den Tastencode 202 senden): 0200 0402.
Das vollständige Paket lautet:
Hier ist ein sehr raues und schmutziges Programm, das ich in weniger esoterischem Python 3 geschrieben habe, um die Aufgabe auszuführen. Beachten Sie den Code zum Generieren der Razer-Steuerpakete in blackwidow.bwcmd () und die LED-Befehle für das Razer-Logo als Bonus :)
quelle
sudo python3 setup.py install
Vielleicht bringt dies etwas Licht in das Thema (aus der Showkey-Manpage):
In 2.6-Kerneln ist der Raw-Modus oder der Scancode-Modus überhaupt nicht sehr raw. Scan-Codes werden zuerst in Schlüsselcodes übersetzt, und wenn Scancodes gewünscht werden, werden die Schlüsselcodes zurückübersetzt. Es gibt verschiedene Transformationen, und es gibt keinerlei Garantie dafür, dass das Endergebnis dem entspricht, was die Tastaturhardware gesendet hat. Wenn Sie also die von verschiedenen Schlüsseln gesendeten Scan-Codes kennen möchten, ist es besser, einen 2.4-Kernel zu booten. Seit 2.6.9 gibt es auch die Boot-Option atkbd.softraw = 0, die den 2.6-Kernel anweist, die tatsächlichen Scan-Codes zurückzugeben.
Die unformatierten Scan-Codes sind nur auf AT- und PS / 2-Tastaturen verfügbar und werden auch dann deaktiviert, wenn nicht der Kernelparameter atkbd.softraw = 0 verwendet wird. Wenn die unformatierten Scan-Codes nicht verfügbar sind, verwendet der Kernel eine fest eingebaute Tabelle, um Scan-Codes aus den Schlüsselcodes zu erstellen. Setkeycodes (8) können daher die Ausgabe von showkey im Scan-Code-Dump-Modus beeinflussen.
Ich bin dabei zu sehen, ob showkey irgendetwas mit den Makrotasten ausgeben wird, nachdem diese Startoption gesetzt wurde.
BEARBEITEN: Nach dem Neustart kein Erfolg, aber ich wollte Rohdaten von den USB-Geräten selbst erfassen. Interessanterweise habe ich Folgendes bemerkt (ich habe einen Razer Diamondback sowie BlackWidow):
Die Verwendung von dd zum Erfassen der unformatierten Eingabe funktioniert jedoch auf beiden Diamondback-Mäusen, auf dem event-kbd-Gerät, jedoch nicht auf den BlackWidow-Mausgeräten.
Ich vermute, dass sie keine Ausgabe generieren, bis sie irgendwie von den installierten Treibern aktiviert werden. Ich weiß jedoch nicht viel über Linux USB, daher weiß ich nicht einmal, ob dies Sinn macht. Vielleicht müssen sie zuerst gebunden werden?
Nun, alle drei Black-Widow-Geräte sind in notiert
/proc/bus/input/devices
, scheinen jedoch nicht inlsusb
oder aufgezählt zu sein/proc/bus/usb/devices
. Ich bin nicht sicher, wie ich auf diese Geräte zugreifen soll, um zu versuchen, sie zu binden oder auf irgendeine Weise mit ihnen zu kommunizieren.event4
Scheint der tatsächlichen Tastatur zu entsprechen, event6 mit den Makrotasten, aber ich kann immer noch keine Eingaben von ihnen erfassen. Hoffe, dass alle geholfen haben.quelle
Meine Lösung ist für die mechanische Gaming-Tastatur Razer BlackWidow 2013 (Modellnummer: RZ03-0039) und wurde unter openSUSE 12.3 getestet.
Ich habe Google Translate für diesen Link verwendet .
Grundsätzlich wird die geänderte Version der Antwort von @ Sergey für diese Frage verwendet, jedoch mit einfachen Änderungen:
Meine
PRODUCT_ID = 0x011b
Unter openSUSE 12.3 ist Python-usb für Python 3 nicht verfügbar. Daher habe ich dieses Skript so konvertiert, dass es mit Python 2 funktioniert, indem ich die
bwcmd
Methode entfernt und dieUSB_BUFFER = ...
im Link aus der Antwort von @ tux_mark_5 angegebene definiert habe .Der Einfachheit halber ist hier der Inhalt von meinem
/usr/local/sbin/init_blackwidow.py
:... und mein
/etc/udev/rules.d/99-razer-balckwidow.rules
ist:quelle
usb.util
?python-usb-1.0.0-21.1.noarch.rpm
. IIRC ist Teil des Standard-Repositorys von 0penSUSE 12.3.rpm -qi
Die Quelle ist laut sourceforge.net/projects/pyusb und die Paketquelle ist obs: //build.opensuse.org/devel: languages: pythonsudo apt-get install python libusb-1.0-0sudo
undpip install pyusb --pre
Vielleicht hilft Ihnen dieses Dokument:
Die Linux-Tastatur und Konsole HOWTO , Nützliche Programme
quelle
Siehe Razer Key Mapper für Linux .
Dies funktioniert mit allen Makros des Razer-Geräts, sofern der Code geändert wurde. Wenn Sie immer noch keine Lösung haben und Ihr Gerät nicht aufgeführt ist, kann ich Ihnen gerne helfen, Ihr Gerät zu konfigurieren und es meiner Liste der unterstützten Geräte hinzuzufügen.
quelle