J'ai choisi une Razer BlackWidow Ultimate dotée de clés supplémentaires destinées aux macros définies à l'aide d'un outil installé sur Windows . Je suppose que ce ne sont pas des clés joojoo de fantaisie et devraient émettre des scancodes comme n'importe quelle autre clé.
Premièrement, existe-t-il un moyen standard de vérifier ces scancodes sous Linux? Deuxièmement, comment définir ces clés pour effectuer des opérations dans les configurations en ligne de commande et sous Linux? Mon installation Linux actuelle est Xubuntu 10.10, mais je vais passer à Kubuntu une fois que plusieurs choses auront été corrigées. Idéalement, la réponse devrait être générique et s’appliquer à l’ensemble du système.
Ce que j'ai essayé jusqu'à présent:
showkeys
à partir du paquetage kbd intégré (dans un vt séparé) - clés de macro non détectéesxev
- touches macro non détectéescontenu de / dev / input / by-path ainsi que des sorties lsusb et evdev
Cette la sortie du script AHK indique les touches M ne sont pas restituent scancodes standards détectables par les fenêtres
Choses que j'ai besoin d'essayer
snoopy pro + ingénierie inverse (oh mon Dieu)
Wireshark - les premiers tests semblent indiquer qu’aucun scancode n’est émis lorsque je pense que le clavier est surveillé et que les touches sont enfoncées. Peut indiquer que les clés supplémentaires constituent un périphérique distinct ou doivent être initialisées d'une manière ou d'une autre.
Il faut croiser cette référence avec la sortie lsusb de Linux dans trois scénarios: autonome, transmise à une machine virtuelle Windows sans les pilotes installés, et la même chose avec.
LSUSB détecte uniquement un périphérique sur une installation autonome de Linux
Il peut être utile de vérifier si les souris utilisent le même pilote Razer Synapse, car cela signifie qu'une variante de razercfg pourrait fonctionner (non détectée, elle ne semble fonctionner que pour les souris).
Les choses que j'ai travaillées:
Dans un système Windows avec pilote, le clavier est considéré comme un clavier et un périphérique de pointage. Le périphérique de pointage utilise, en plus de vos pilotes de souris standard, un pilote pour quelque chose appelé Razer Synapse.
Pilote de souris vu dans Linux sous
evdev
etlsusb
ainsiUn seul appareil sous OS X apparemment, même si je n'ai pas encore essayé d'
lsusb
équivalent sur ceLe clavier passe en mode rétroéclairage pulsé sous OS X lors de l'initialisation avec le pilote. Cela devrait probablement indiquer qu'une séquence d'initialisation a été envoyée au clavier lors de l'activation.
Ce sont en fait des clés de fantaisie joojoo.
Prolonger un peu cette question:
J'ai accès à un système Windows, donc si je dois utiliser des outils pour aider à répondre à la question, c'est très bien. Je peux aussi l'essayer sur des systèmes avec et sans l'utilitaire de configuration. Le résultat final attendu reste toutefois de rendre ces clés utilisables sous Linux.
Je réalise également qu'il s'agit d'une famille de matériel très spécifique. Je serais prêt à tester tout ce qui a du sens sur un système Linux si j'ai des instructions détaillées - cela devrait ouvrir la question aux personnes ayant des compétences en Linux, mais n'ayant pas accès à ce clavier.
Le résultat final minimum dont j'ai besoin:
J'ai besoin que ces clés soient détectées et utilisables de toutes les manières sur toutes les variantes graphiques actuelles d'Ubuntu; elles doivent naturellement fonctionner avec mon clavier. Cookie virtuel et accessoires délirants s’il s’agit de quelque chose de joliment emballé et utilisable par l’utilisateur moyen.
Je réclamerai le code compilé qui fonctionnera sur mon système, ou une source que je peux compiler (avec des instructions si elle est plus complexe que ./configure
, make
, make install
) si un logiciel supplémentaire non sur les dépôts Ubuntu pour la version actuelle de bureau LTS ou standard au moment de la réponse. J'aurai également besoin d'informations suffisantes pour répliquer et utiliser avec succès les clés de mon propre système.
la source
Réponses:
Les touches M1-M5 sont en fait des clés ordinaires - elles doivent simplement être spécifiquement activées avant de les presser pour générer un scancode. tux_mark_5 a développé un petit programme Haskell qui envoie le message SET_REPORT correct aux claviers Razer pour activer ces clés, et ex-parrot a porté le même code vers Python.
Sur les systèmes Arch Linux, le port Python est fourni et disponible à l’ adresse https://aur.archlinux.org/packages.php?ID=60518 .
Sur les systèmes Debian ou Ubuntu, configurer le port Python du code est relativement facile. Vous devez installer PyUSB et libusb (en tant que root):
Ensuite, récupérez le
blackwidow_enable.py
fichier sur http://finch.am/projects/blackwidow/ et exécutez-le (également en tant que root):Cela permettra d'activer les touches jusqu'à ce que le clavier soit débranché ou que la machine soit redémarrée. Pour rendre cette tâche permanente, appelez le script à partir du style de script de démarrage que vous préférez. Pour des instructions sur la manière de configurer cela dans Debian, jetez un œil à la documentation Debian .
Pour utiliser le code Haskell de tux_mark_5, vous devez installer Haskell et le compiler vous-même. Ces instructions concernent un système de type Debian (y compris Ubuntu).
Installez GHC, libusb-1.0-0-dev et cabal (en tant que root):
Récupérer la liste des paquets:
Installez les liaisons USB pour Haskell (pas besoin de root):
Téléchargez l'utilitaire:
Construisez l'utilitaire:
Exécutez l'utilitaire (également en tant que root):
Ensuite, vous pouvez copier le fichier binaire EnableRazer où vous le souhaitez et l'exécuter au démarrage.
Immédiatement après son exécution, le serveur X doit afficher M1 comme XF86Tools, M2 comme XF86Launch5, M3 comme XF86Launch6, M4 comme XF86Launch7 et M5 comme XF86Launch8. Les événements pour FN sont également émis.
Ces clés peuvent être liées dans xbindkeys ou les paramètres système de KDE à des actions arbitraires.
Étant donné que votre clavier peut être différent, vous devrez peut-être modifier l'ID du produit dans la ligne 64 de Main.hs:
la source
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="1532", ATTR{idProduct}=="010e", RUN+="/root/EnableRazer"
vous devrez peut-être modifier le fichier. chemin et id à nouveau)Could not select configuration endpoint.
Razer semble forcer son configurateur basé sur le cloud Synapse 2 sur tous les utilisateurs, avec la mise à niveau du micrologiciel qui l'accompagne vers la version 2. *. Une fois le micrologiciel mis à niveau, vous ne pouvez plus revenir en arrière (le clavier est complètement branché si vous essayez de le flasher avec un micrologiciel plus ancien).
Les «octets magiques» du programme Haskell dans la réponse de tux_mark_5 ne fonctionneront pas avec le dernier firmware. Au lieu de cela, le pilote envoie ces octets lors de la séquence d'initialisation: '0200 0403'. Celles-ci activent les touches de macro, mais le clavier entre dans un mode particulier dans lequel, au lieu du protocole standard HID, il envoie des paquets de 16 octets (probablement pour augmenter le nombre de touches pouvant être enfoncées simultanément). Le système Linux HID ne peut pas tout à fait gérer cela, et alors que la plupart des clés fonctionnent comme prévu, les clés de macro restent non reconnues: le pilote HID ne fournit aucune donnée à la couche d’entrée lorsqu’elles sont enfoncées.
Pour que votre clavier passe en mode hérité (dans lequel les touches de macro envoient les codes XF86Launch * et la touche FN envoie le code 202), envoyez ces octets: 0200 0402.
Le paquet complet sera:
Voici un programme très dur et sale que j'ai écrit en Python 3, moins ésotérique, pour effectuer cette tâche. Notez le code pour générer les paquets de contrôle Razer dans blackwidow.bwcmd () et les commandes du logo du logo Razer en bonus :)
la source
sudo python3 setup.py install
Peut-être que ceci pourrait éclairer un peu la question (de la page de manuel de showkey):
Dans les noyaux 2.6, le mode brut, ou mode scancode, n’est pas très brut du tout. Les codes de numérisation sont d'abord traduits en codes de clé, et lorsque des codes à balayage sont souhaités, les codes de clé sont reconvertis. Diverses transformations sont impliquées et rien ne garantit que le résultat final correspond à ce que le matériel du clavier a envoyé. Donc, si vous voulez connaître les codes d'analyse envoyés par différentes clés, il est préférable de démarrer un noyau 2.4. Depuis la version 2.6.9, l’option de démarrage atkbd.softraw = 0 indique également au noyau 2.6 de renvoyer les codes d’analyse réels.
Les codes de balayage bruts ne sont disponibles que sur les claviers AT et PS / 2 et, même dans ce cas, ils sont désactivés, sauf si le paramètre de noyau atkbd.softraw = 0 est utilisé. Lorsque les codes d'analyse bruts ne sont pas disponibles, le noyau utilise un tableau intégré fixe pour produire des codes d'analyse à partir de codes clés. Ainsi, setkeycodes (8) peut affecter la sortie de showkey en mode de vidage du code de balayage.
Je suis sur le point de voir si showkey dumpera quoi que ce soit avec les touches de macro après la définition de cette option de démarrage.
EDIT: Après le redémarrage, aucun succès, mais je cherchais à capturer une entrée brute à partir des périphériques USB eux-mêmes. J'ai noté ce qui suit, intéressant (j'ai un Razer Diamondback ainsi que BlackWidow):
Toutefois, l'utilisation de dd pour capturer une entrée brute fonctionne sur les deux souris Diamondback, sur le périphérique event-kbd, mais pas sur les souris BlackWidow.
J'imagine qu'ils ne génèrent peut-être aucune sortie tant qu'ils ne sont pas activés par les pilotes installés. Cependant, je ne connais pas grand chose à propos de Linux USB, donc je ne sais même pas si cela a du sens. Peut-être ont-ils besoin d'être liés en premier?
Eh bien, les trois dispositifs de veuve noire sont notés dans
/proc/bus/input/devices
, mais ils ne semblent pas être énumérés danslsusb
ou/proc/bus/usb/devices
. Je ne sais pas comment accéder à ces périphériques pour tenter de les lier ou de s'y connecter de quelque manière que ce soit.event4
semble correspondre au clavier actuel, event6 avec les touches de macro, mais je ne peux toujours pas capturer leur entrée. J'espère que tout a aidé.la source
Ma solution concerne le clavier de jeu mécanique Razer BlackWidow 2013 (numéro de modèle: RZ03-0039) et a été testée sur openSUSE 12.3.
J'ai utilisé Google Translate sur ce lien .
Fondamentalement, il utilise la version modifiée de la réponse de @ Sergey pour cette question, mais avec de simples modifications:
ma
PRODUCT_ID = 0x011b
Sur mon openSUSE 12.3, python-usb n'étant pas disponible pour Python 3, j'ai donc converti ce script pour qu'il fonctionne avec Python 2 en supprimant la
bwcmd
méthode et en définissant la valeurUSB_BUFFER = ...
as dans le lien de la réponse de @ tux_mark_5 .Pour plus de commodité, voici le contenu de mon
/usr/local/sbin/init_blackwidow.py
:... et mon
/etc/udev/rules.d/99-razer-balckwidow.rules
est:la source
usb.util
?python-usb-1.0.0-21.1.noarch.rpm
. IIRC fait partie des référentiels de stadard de 0penSUSE 12.3. Selonrpm -qi
, la source est sur sourceforge.net/projects/pyusb et la source du paquet est sur obs: //build.opensuse.org/devel: languages: pythonsudo apt-get install python libusb-1.0-0sudo
etpip install pyusb --pre
Peut-être que ce document vous aidera:
HOWTO Clavier et console Linux , Programmes utiles
la source
Voir Razer Key Mapper pour Linux .
Cela fonctionne avec toutes les macros des périphériques Razer, moyennant certaines modifications du code. Si vous n'avez toujours pas de solution et que votre appareil ne figure pas dans la liste, je serais ravi de vous aider à configurer votre appareil et à l'ajouter à ma liste prise en charge.
la source