私のコンピュータには2つのUSBキーボードが接続されています。同じキーを入力するのではなく、文字を入力する代わりにコマンドを実行するように2番目のキーボードを設定できますか?これができない場合は、少なくともロシア語などの他の言語で入力を設定することは可能ですか?
答え1
私が推奨できる3番目の答えですactkbd
... :)
したがって、文字を入力せずにコマンドを実行するように2番目のキーボードのすべてのキーを設定するには、次のようにします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