No meu computador, tenho dois teclados USB conectados. Em vez de ambos digitarem a mesma tecla, é possível configurar um segundo teclado para executar comandos em vez de digitar letras? E se isso não for possível, pode ser configurado para pelo menos digitar outro idioma como o russo, por exemplo?
Responder1
Esta é a minha terceira resposta quando posso recomendar actkbd
... :)
Então se você quiser configurar todas as teclas do segundo teclado para executar comandos e não digitar letras você pode usar actkbd
... :)
Após a instalação, actkbd
precisamos descobrir qual arquivo do dispositivo é usado para receber eventos do 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]
Nesta lista você deve encontrar seu teclado e verificar seus manipuladores. Use sudo actkbd -s -d /dev/input/HANDLER_NAME
para verificar se esse manipulador envia eventos. Se você executar este comando e pressionar a tecla no teclado (verifique as teclas que deseja vincular aos comandos), deverá obter algo assim:
pbm@tauri ~ $ sudo actkbd -s -d /dev/input/event5
Keys: 57
Keys: 35
Se você tiver códigos-chave, poderíamos criar actkbd
um arquivo de configuração:
pbm@tauri ~ $ sudo nano /etc/actkbd.conf
30:::sudo -u pbm DISPLAY=:0 amarok
//30 is keycode for letter a
Ao salvar esse arquivo, devemos testar se a configuração funciona:
pbm@tauri ~ $ sudo actkbd -d /dev/input/event5 -D
Quando você pressiona a tecla que você tem em seu arquivo de configuração, o comando da última coluna do arquivo de configuração será iniciado.
Acho que existe uma maneira de desabilitar o envio de chaves para aplicativos, mas não consegui encontrar - confiraArquivo LEIA-ME.
Em vez de tentar desativá-lo, actkbd
você pode desligar o teclado no 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
Deve dar certo... :) Para mais informações sobre actkbd
confiraesta resposta.
Usando actkbd
(e provavelmente poucos scripts), você também pode configurar seu teclado para alterar os modos do modo de comando para o modo de entrada com letras russas. Para esta Ulrich Schwarz's
resposta, leia.
Responder2
desculpe reabrir este tópico, mas só para você saber que existe uma alternativa ao actkbd escrito em pythonhttps://github.com/robinuniverse/Keebieque fazem as mesmas coisas, IMO mais avançado. um pouco mais fácil de usar e suporte para mais de um teclado macro.
você pode ver minha configuração aqui para ter uma ideia:https://github.com/mirsella/dotfiles/tree/master/.config/keebie keebiecloseprocess não está incluído no projeto, eu o escrevi.
Responder3
Eu escrevi um pequeno programa em C que pode fazer isso. Eu escrevi 'na hora', então não é muito bom, mas funciona. Você pode conseguir issoaqui.
Responder4
Isso funcionou para mim:
#!/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