Elegí un Razer BlackWidow Ultimate que tiene claves adicionales destinadas a macros que se configuran con una herramienta instalada en Windows . Supongo que estas no son algunas claves joojoo de fantasía y deberían emitir códigos de escaneo como cualquier otra clave.
En primer lugar, ¿hay una forma estándar de verificar estos códigos de escaneo en Linux? En segundo lugar, ¿cómo configuro estas teclas para hacer cosas en la línea de comandos y configuraciones de Linux basadas en X? Mi instalación actual de Linux es Xubuntu 10.10, pero cambiaré a Kubuntu una vez que tenga algunas cosas arregladas. Idealmente, la respuesta debería ser genérica y de todo el sistema.
Cosas que he probado hasta ahora:
showkeys
desde el paquete kbd integrado (en un vt separado): no se detectaron las claves de macroxev
- teclas macro no detectadascontenido de / dev / input / by-path, así como la salida lsusb y evdev
La salida de este script ahk sugiere que las teclas M no están generando códigos de escaneo estándar detectables por Windows
Cosas que necesito probar
snoopy pro + ingeniería inversa (oh querido)
Wireshark: el vagabundeo preliminar parece indicar que no se emiten códigos de escaneo cuando lo que parece pensar es que el teclado está monitoreado y las teclas presionadas. Podría indicar que las teclas adicionales son un dispositivo separado o deben inicializarse de alguna manera.
Es necesario hacer una referencia cruzada con la salida lsusb de Linux, en tres escenarios: independiente, pasado a una máquina virtual de Windows sin los controladores instalados, y lo mismo con.
LSUSB solo detecta un dispositivo en una instalación independiente de Linux
Puede ser útil verificar si los ratones usan el mismo controlador Razer Synapse, ya que eso significa que alguna variación de razercfg podría funcionar (no detectado, solo parece funcionar para ratones)
Cosas que he resuelto:
En un sistema Windows con el controlador, el teclado se ve como un teclado y un dispositivo señalador. El dispositivo señalador utiliza, además de los controladores de mouse estándar, un controlador para algo llamado Razer Synapse.
Controlador de mouse visto en Linux debajo
evdev
ylsusb
tambiénAparentemente, solo dispositivo con OS X, aunque todavía tengo que probar el
lsusb
equivalente en eseEl teclado entra en modo de luz de fondo pulsante en OS X tras la inicialización con el controlador. Esto probablemente debería indicar que hay una secuencia de inicialización enviada al teclado en la activación.
Son, de hecho, fancypants joojoo keys.
Extendiendo esta pregunta un poco:
Tengo acceso a un sistema de Windows, así que si necesito usar alguna herramienta para ayudar a responder la pregunta, está bien. También puedo probarlo en sistemas con y sin la utilidad de configuración. Sin embargo, el resultado final esperado es hacer que esas claves sean utilizables en Linux.
También me doy cuenta de que esta es una familia de hardware muy específica. Estaría dispuesto a probar cualquier cosa que tenga sentido en un sistema Linux si tengo instrucciones detalladas; esto debería abrir la pregunta a las personas que tienen habilidades en Linux, pero que no tienen acceso a este teclado.
El resultado final mínimo que requiero:
Necesito que estas teclas se detecten y se puedan usar de cualquier manera en cualquiera de las variantes gráficas de Ubuntu actuales y, naturalmente, tengo que trabajar con mi teclado. Cookies virtuales y accesorios locos si es algo bien empaquetado y utilizable por el usuario promedio.
Voy a requerir código compilado que funcione en mi sistema, o una fuente que pueda compilar (con instrucciones si es más compleja de lo que ./configure
, make
, make install
) si el software adicional no en los repositorios de Ubuntu para la corriente LTS o la liberación de escritorio estándar en el momento de la respuesta. También requeriré suficiente información para replicar y usar con éxito las claves en mi propio sistema.
fuente
Respuestas:
De hecho, M1-M5 son teclas normales: solo deben habilitarse específicamente antes de presionarlas para generar un código de escaneo. tux_mark_5 desarrolló un pequeño programa Haskell que envía el mensaje SET_REPORT correcto a los teclados Razer para habilitar estas teclas, y ex-loro portó el mismo código a Python.
En los sistemas Arch Linux, el puerto Python se ha empaquetado y está disponible en https://aur.archlinux.org/packages.php?ID=60518 .
En los sistemas Debian o Ubuntu, configurar el puerto Python del código es relativamente fácil. Necesita instalar PyUSB y libusb (como root):
Luego tome el
blackwidow_enable.py
archivo de http://finch.am/projects/blackwidow/ y ejecútelo (también como root):Esto habilitará las teclas hasta que se desconecte el teclado o se reinicie la máquina. Para hacer esto permanente, llame al script desde cualquier estilo de script de inicio que prefiera. Para obtener instrucciones sobre cómo configurar esto en Debian, consulte la documentación de Debian .
Para usar el código Haskell de tux_mark_5, necesitarás instalar Haskell y compilar el código tú mismo. Estas instrucciones son para un sistema similar a Debian (incluido Ubuntu).
Instale GHC, libusb-1.0-0-dev y cabal (como root):
Obtenga la lista de paquetes:
Instale enlaces USB para Haskell (sin necesidad de root):
Descargue la utilidad:
Construye la utilidad:
Ejecute la utilidad (también como root):
Después de esto, puede copiar el binario EnableRazer en cualquier lugar que desee y ejecutarlo al inicio.
Inmediatamente después de la ejecución, el servidor X debería ver M1 como XF86Tools, M2 como XF86Launch5, M3 como XF86Launch6, M4 como XF86Launch7 y M5 como XF86Launch8. También se emiten eventos para FN.
Estas claves pueden vincularse dentro de xbindkeys o la configuración del sistema de KDE a acciones arbitrarias.
Dado que su teclado puede ser diferente, es posible que deba cambiar la ID del producto en Main.hs línea 64:
fuente
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="1532", ATTR{idProduct}=="010e", RUN+="/root/EnableRazer"
él (aquí puede que tenga que modificar el ruta e identificación de nuevo)Could not select configuration endpoint.
Razer parece estar forzando su configurador Synapse 2 basado en la nube a todos los usuarios hoy en día, con la actualización de firmware que lo acompaña a la versión 2. *. Una vez que haya actualizado el firmware, no puede regresar (el teclado está completamente bloqueado si intenta actualizarlo con un firmware anterior).
Los 'bytes mágicos' del programa Haskell en la respuesta de tux_mark_5 no funcionarán con el último firmware. En cambio, el controlador envía estos bytes durante la secuencia de inicialización: '0200 0403'. Estos habilitan las teclas macro, pero el teclado ingresa a un modo peculiar en el que, en lugar del protocolo HID estándar, envía paquetes de 16 bytes (presumiblemente para aumentar la cantidad de teclas que se pueden presionar simultáneamente). El sistema HID de Linux no puede hacer frente a esto, y aunque la mayoría de las teclas funcionan como se esperaba, las teclas macro no se reconocen: el controlador HID no alimenta ningún dato a la capa de entrada cuando se presionan.
Para hacer que su teclado ingrese al modo heredado (en el cual las teclas de macro envían códigos de teclas XF86Launch *, y la tecla FN envía el código de tecla 202), envíe estos bytes: 0200 0402.
El paquete completo será:
Aquí hay un programa muy duro y sucio que escribí en Python 3 menos esotérico para realizar la tarea. Tenga en cuenta el código para generar los paquetes de control de Razer en blackwidow.bwcmd () y los comandos LED del logotipo de Razer como un bono :)
fuente
sudo python3 setup.py install
Quizás esto podría arrojar algo de luz sobre el problema (de la página de manual de showkey):
En el modo crudo 2.6 kernels, o el modo scancode, no es muy crudo en absoluto. Los códigos de escaneo se traducen primero a códigos clave, y cuando se desean códigos de escaneo, los códigos de clave se vuelven a traducir. Hay varias transformaciones involucradas, y no hay ninguna garantía de que el resultado final corresponda a lo que envió el hardware del teclado. Entonces, si desea conocer los códigos de escaneo enviados por varias teclas, es mejor arrancar un kernel 2.4. Desde 2.6.9 también existe la opción de arranque atkbd.softraw = 0 que le dice al núcleo 2.6 que devuelva los códigos de escaneo reales.
Los códigos de exploración sin procesar solo están disponibles en los teclados AT y PS / 2, e incluso entonces están deshabilitados a menos que se use el parámetro del núcleo atkbd.softraw = 0. Cuando los códigos de escaneo sin formato no están disponibles, el núcleo utiliza una tabla integrada fija para producir códigos de escaneo a partir de códigos clave. Por lo tanto, setkeycodes (8) puede afectar la salida de showkey en el modo de volcado del código de escaneo.
Estoy a punto de ver si showkey volcará algo con las teclas de macro después de configurar esta opción de arranque.
EDITAR: después del reinicio, no hubo éxito, pero estaba buscando capturar la entrada sin formato de los propios dispositivos USB. Noté lo siguiente, curiosamente (tengo un Razer Diamondback y BlackWidow):
Sin embargo, el uso de dd para capturar la entrada sin formato funciona en ambos ratones diamondback, en el dispositivo event-kbd, pero no en los dispositivos de mouse BlackWidow.
Supongo que tal vez no generen ninguna salida hasta que los controladores que estén instalados los activen de alguna manera. Sin embargo, no sé mucho sobre Linux USB, por lo que ni siquiera sé si esto tiene sentido. ¿Quizás necesitan ser atados primero?
Bueno, los tres dispositivos de la viuda negra se mencionan
/proc/bus/input/devices
, sin embargo, no parecen estar enumerados enlsusb
o/proc/bus/usb/devices
. No estoy seguro de cómo acceder a estos dispositivos para intentar vincularlos o interactuar con ellos de alguna manera.event4
parece corresponder al teclado real, event6 con las teclas de macro, pero todavía no puedo capturar ninguna entrada de ellos. Espero que todos hayan ayudado.fuente
Mi solución es para el teclado mecánico de juegos Razer BlackWidow 2013 (número de modelo: RZ03-0039) y se probó en openSUSE 12.3.
Utilicé Google Translate en este enlace .
Básicamente utiliza la versión modificada de la respuesta de @ Sergey para esta pregunta, pero con modificaciones simples:
Mi
PRODUCT_ID = 0x011b
En mi openSUSE 12.3, python-usb no está disponible para Python 3, por lo que convertí este script para trabajar con Python 2 eliminando el
bwcmd
método y definí elUSB_BUFFER = ...
como en el enlace de la respuesta de @ tux_mark_5 .Por conveniencia, aquí está el contenido de mi
/usr/local/sbin/init_blackwidow.py
:... y mi
/etc/udev/rules.d/99-razer-balckwidow.rules
es:fuente
usb.util
?python-usb-1.0.0-21.1.noarch.rpm
. IIRC es parte de los repositorios estándar de 0penSUSE 12.3. Segúnrpm -qi
, la fuente está en sourceforge.net/projects/pyusb y la fuente del paquete está en obs: //build.opensuse.org/devel: languages: pythonsudo apt-get install python libusb-1.0-0sudo
ypip install pyusb --pre
Quizás este documento te ayude a:
El teclado y la consola de Linux COMO , Programas útiles
fuente
Ver Razer Key Mapper para Linux .
Esto funciona con todas las macros del dispositivo Razer, dada alguna modificación del código. Si aún no tiene una solución y su dispositivo no está en la lista, con gusto lo ayudaré a configurar su dispositivo y agregarlo a mi lista compatible.
fuente