명령 실행을 위한 두 번째 키보드

명령 실행을 위한 두 번째 키보드

내 컴퓨터에는 두 개의 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

구성 파일에서 키를 누르면 구성 파일의 마지막 열에 있는 명령이 실행됩니다.

애플리케이션에 키 전송을 비활성화하는 방법이 있는 것 같은데 찾을 수 없습니다. 확인하세요.읽어보기 파일.

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

이 스레드를 다시 시작해서 죄송합니다. Python으로 작성된 actkbd에 대한 대안이 있음을 알려드립니다.https://github.com/robinuniverse/KeebieIMO는 동일한 작업을 수행하며 더 발전된 작업을 수행합니다. 사용하기가 조금 더 쉽고 여러 매크로 키보드를 지원합니다.

아이디어를 제공하기 위해 여기에서 내 구성을 볼 수 있습니다.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

관련 정보