segundo teclado para ejecutar comandos

segundo teclado para ejecutar comandos

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, actkbdnecesitamos 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_NAMEpara 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 actkbdun 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, actkbdpuedes 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 actkbdesto, 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'sla 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

información relacionada