USB経由で接続された数字キーパッドがあり、私の目標は、その数字キーパッドのキーを再マップして、カスタムコマンドを実行したり、他のキーの組み合わせにマッピングできるようにすることです。
私のファイルには次のものがあります.xbindkeysrc
。
~ $ cat .xbindkeysrc
"xte 'keydown Super_L' 'key Left' 'keyup Super_L'"
m:0x10 + c:79 + Release
Mod2 + KP_Home
これにより、NUM 7キー(通常7が印刷されます)がに再マップされますSuper_L + Left Arrow
。これは素晴らしいと動作しますが、すべてのキーボードで動作しますが、私の目標は数字キーボードでのみ動作するようにすることです。
これを行う方法を探していましたが、最も近い方法はを使用することですxinput set-button-map
。残念ながら、これはマウスなどのデバイスでのみ機能するようです。私は数字キーパッドのボタンマッピングを取得しようとするのが好きですxinput get-button-map [device id]
が、1から7までの数字だけを印刷し、キーボードにもっとボタンがあるので、必ずしも意味があるわけではありません。
どんな提案がありますか?
答え1
使用を検討してくださいhttps://github.com/rvaiya/keyd。この目的のために書かれており、システム全体で動作します。
答え2
まず、デバイスIDを見つけて使用します。xinput list
$ xinput list
⎣ Virtual core keyboard
...
↳ USB Keyboard id=19 [slave keyboard (3)]
デバイス/キーボードによるキーマッピング
(これはキーのみをマッピングします。スクリプトをキーにマッピングする方法の詳細については、以下を参照してください。)
setxkbmap
特定のデバイス(キーボード)をターゲットにするオプションがあります。
次に、設定を照会してsetxkbmap
デバイス設定を確認します(「19」を使用します)。
$ setxkbmap -device 19 -print
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us(euro)+us(intl):2+inet(evdev)" };
xkb_geometry { include "pc(pc105)" };
};
これがsymbols
私たちが探しているものですls /usr/share/X11/xkb/symbols
。パラメータはファイルのセクションを参照します。xkb_symbols "intl" {
追加するには書くことができるたとえば、rupesignなどのオプションを使用すると、次のことができます。
setxkbmap -device 19 -option rupeesign:4
オプションをリセットするには、
setxkbmap -device 19 -option
追加引数なしで使用してください。
ただし、一部のカスタム構成が必要です。これは、そのフォルダにカスタムファイルを追加して使用するだけでは機能しないため、少し面倒です。
したがって、いくつかのフォルダを作成し、現在の構成で一時ファイルを作成します。
mkdir -p ~/.config/xkb/symbols
cd ~/.config/xkb
setxkbmap -device 19 -print > tempfile.txt
touch symbols/mysymbol
tempfile.txt
含めるように変更mysymbol(mymapping)
...
xkb_symbols { include "pc+us(euro)+us(intl):2+inet(evdev)+mysymbol(mymapping)"
必要に応じて編集してください。例をsymbol/mysymbol
参照してください。/usr/share/X11/xkb/symbols
これにより、num 7
キーにビットコイン記号が追加されます。
partial
xkb_symbols "mymapping" {
key <AE07> { [ 7, &, U20BF ] };
};
最後に、このマッピングを有効にするには、次を使用しますxkbcomp
(-i 19
デバイス設定を参照)。
xkbcomp -i 19 -I$HOME/.config/xkb tempfile.txt $DISPLAY
(一部のwarning
メッセージが表示されることがありますが、まだ機能します。)
スクリプトを実行するためのキーマッピング
キーをスクリプトにマッピングするツールがあります。actkbd
取付ける:
$ git clone https://github.com/thkala/actkbd
$ cd actkb
$ make
$ sudo make install
次に、キーボードのデバイス名を見つけます/dev/input/
。私の場合/dev/input/by-id/usb-_USB_Keyboard-event-kbd
これで、いくつかの例を含む設定ファイルが作成され、/etc/actkbd.conf
すべて削除できます。以下はもう少し実用的な例です。
# 'a' starts gedit
30:::gedit
# 'shift+7' starts a custom script. (keynumber 8 for some reason)
42+8:::/home/me/myscript.py
キー番号(またはキーの組み合わせ)を見つけるには、 's'オプションを使用してください。
$ actkbd -d /dev/input/by-id/usb-_USB_Keyboard-event-kbd -s
/etc/actkbd.confで設定したら、プログラムを起動します(-D
バックグラウンドモード用)。
$ actkbd -d /dev/input/by-id/usb-_USB_Keyboard-event-kbd