вторая клавиатура для запуска команд

вторая клавиатура для запуска команд

На моем компьютере подключены две USB-клавиатуры. Вместо того, чтобы обе просто нажимали одну и ту же клавишу, можно ли настроить вторую клавиатуру на выполнение команд вместо ввода букв? И если это невозможно, можно ли настроить ее хотя бы на ввод текста на другом языке, например, на русском?

решение1

Это мой третий ответ, когда я могу порекомендовать actkbd... :)

Так что если вы хотите настроить все клавиши второй клавиатуры для запуска команд, а не для ввода букв, вы можете использовать actkbd... :)

После установки actkbdнам нужно найти, какой файл устройства используется для получения событий от нашей клавиатуры:

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]

В этом списке вы должны найти свою клавиатуру и проверить ее обработчики. Используйте sudo actkbd -s -d /dev/input/HANDLER_NAMEдля проверки того, отправляет ли этот обработчик события. Если вы запустите эту команду и нажмете клавишу на клавиатуре (проверьте клавиши, которые вы хотите привязать к командам), вы должны получить что-то вроде этого:

pbm@tauri ~ $ sudo actkbd -s -d /dev/input/event5 
Keys: 57
Keys: 35

Если у вас есть коды клавиш, мы можем создать actkbdфайл конфигурации:

pbm@tauri ~ $ sudo nano /etc/actkbd.conf 
30:::sudo -u pbm DISPLAY=:0 amarok
//30 is keycode for letter a

При сохранении этого файла нам следует проверить работоспособность конфигурации:

pbm@tauri ~ $ sudo actkbd -d /dev/input/event5 -D

При нажатии клавиши, указанной в файле конфигурации, будет запущена команда из последнего столбца файла конфигурации.

Я думаю, что есть способ отключить отправку ключей в приложения, но я не смог его найти - проверьтеФайл README.

Вместо того, чтобы пытаться отключить его с помощью, actkbdвы можете отключить клавиатуру в 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

Это должно сработать... :) Для получения дополнительной информации actkbdпосетитеэтот ответ.

Используя actkbd(и, вероятно, несколько скриптов) вы также можете настроить клавиатуру для смены режимов с командного режима на режим ввода с русскими буквами. Для этого читайте Ulrich Schwarz'sответ.

решение2

извините, что поднимаю эту тему, но просто чтобы вы знали, что есть альтернатива actkbd, написанная на pythonhttps://github.com/robinuniverse/Keebieкоторые делают то же самое, на мой взгляд, более продвинуты. Немного проще в использовании и поддерживают более одной макроклавиатуры.

Вы можете увидеть мою конфигурацию здесь, чтобы получить представление:https://github.com/mirsella/dotfiles/tree/master/.config/keebie keebiecloseprocess не входит в проект, я его написал.

решение3

Я написал небольшую программу на языке C, которая может это сделать. Я написал ее «на лету», так что она не очень хороша, но она работает. Вы можете получить еездесь.

решение4

Мне это помогло:

#!/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

Связанный контент