En mi computadora tengo dos teclados USB conectados. En lugar de que ambos simplemente escriban la misma tecla, ¿es posible configurar un segundo teclado para ejecutar comandos en lugar de escribir letras? Y si eso no es posible, ¿se puede configurar para que al menos escriba en otro idioma como el ruso, por ejemplo?
Respuesta1
Esta es mi tercera respuesta cuando puedo recomendar actkbd
... :)
Entonces, si desea configurar todas las teclas del segundo teclado para ejecutar comandos y no para escribir letras, puede usar actkbd
... :)
Después de la instalación, actkbd
necesitamos encontrar qué archivo de dispositivo se utiliza para recibir eventos desde nuestro teclado:
pbm@tauri ~ $ cat /proc/bus/input/devices
[cut]
I: Bus=0003 Vendor=046d Product=c31c Version=0110
N: Name="Logitech USB Keyboard"
P: Phys=usb-0000:00:1a.0-1.1/input0
S: Sysfs=/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.1/1-1.1:1.0/input/input7
U: Uniq=
H: Handlers=sysrq kbd event5
B: PROP=0
B: EV=120013
B: KEY=1000000000007 ff9f207ac14057ff febeffdfffefffff fffffffffffffffe
B: MSC=10
B: LED=1f
I: Bus=0003 Vendor=046d Product=c31c Version=0110
N: Name="Logitech USB Keyboard"
P: Phys=usb-0000:00:1a.0-1.1/input1
S: Sysfs=/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.1/1-1.1:1.1/input/input8
U: Uniq=
H: Handlers=kbd event6
B: PROP=0
B: EV=1b
B: KEY=2010000 397ad801d001 1e000000000000 0
B: ABS=100000000
B: MSC=10
[cut]
En esta lista deberías encontrar tu teclado y comprobar sus controladores. Úselo sudo actkbd -s -d /dev/input/HANDLER_NAME
para verificar si ese controlador envía eventos. Si ejecuta este comando y presiona una tecla en el teclado (verifique las teclas que desea vincular a los comandos), debería obtener algo como esto:
pbm@tauri ~ $ sudo actkbd -s -d /dev/input/event5
Keys: 57
Keys: 35
Si tiene códigos clave, podríamos crear actkbd
un archivo de configuración:
pbm@tauri ~ $ sudo nano /etc/actkbd.conf
30:::sudo -u pbm DISPLAY=:0 amarok
//30 is keycode for letter a
Cuando guardes ese archivo debemos probar si la configuración funciona:
pbm@tauri ~ $ sudo actkbd -d /dev/input/event5 -D
Cuando presione la tecla que tiene en su archivo de configuración, se iniciará el comando de la última columna del archivo de configuración.
Creo que hay una manera de desactivar el envío de claves a las aplicaciones, pero no pude encontrarla. Consultearchivo LÉAME.
En lugar de intentar desactivarlo usando, actkbd
puedes apagar el teclado en X.
pbm@tauri ~ $ xinput list
[cut]
↳ Logitech USB Keyboard id=12 [slave keyboard (3)]
↳ Logitech USB Keyboard id=11 [slave keyboard (3)]
pbm@tauri ~ $ xinput set-prop 11 "Device Enabled" 0
pbm@tauri ~ $ xinput set-prop 12 "Device Enabled" 0
Debería hacer el trabajo... :) Para obtener más información sobre actkbd
esto, consulteesta respuesta.
Usando actkbd
(y probablemente algunos scripts) también puede configurar su teclado para cambiar los modos del modo de comando al modo de entrada con letras rusas. Para esto lea Ulrich Schwarz's
la respuesta.
Respuesta2
Lamento volver a abrir este hilo, pero para que sepas, existe una alternativa a actkbd escrita en Python.https://github.com/robinuniverse/Keebieque hacen las mismas cosas, en mi opinión más avanzadas. un poco más fácil de usar y compatible con más de un teclado macro.
Puedes ver mi configuración aquí para darte una idea:https://github.com/mirsella/dotfiles/tree/master/.config/keebie keebiecloseprocess no está incluido en el proyecto, lo escribí yo.
Respuesta3
He escrito un pequeño programa en C que puede hacer precisamente eso. Lo he escrito "sobre la marcha", por lo que no es muy bueno, pero funciona. Puedes conseguirloaquí.
Respuesta4
Esto funcionó para mí:
#!/bin/bash
# 15 is the id of the floating (ie disabled) usb keyboard
# xinput --float 15
xinput --test 15 \
| grep --line-buffered "key press"| while read line; do
echo "$line"
if [ "$line" = "key press 38" ]; then
echo "yay"
# do something when 'a' is pressed
fi