Menuマイキー(キーコード135)を単独で押すと、通常のコンテキストメニューキーとして機能し、修飾子として使用するときは、XF86Audio *マルチメディアキーをエミュレートしたいと思います。たとえば、Menu+はPgUpをエミュレートしますXF86AudioRaiseVolume
。
すべてのXにキーの組み合わせを適用する代わりに、KDEのグローバルショートカットにキーの組み合わせを設定できますが、方法はわかりません。
答え1
必須コンポーネント:xmodmap、xcape、xbindkeys。
xmodmap -e "keycode 135 = Hyper_R"
xmodmap -e "add mod3 = Hyper_R"
xmodmap -e "keycode any = Menu" # this is needed for xcape
xcape -e "Hyper_R=Menu" # for single key press on menu key
~/.xbindkeysrc:
# map Menu+Pause as Mute
"xdotool keyup Hyper_R keyup Pause key --clearmodifiers XF86AudioMute keydown Hyper_R key Control"
Mod3 + Pause
# map Menu+PgUp as Volume+
"xdotool keyup Hyper_R keyup Prior key --clearmodifiers XF86AudioMute keydown Hyper_R key Control"
Mod3 + Prior
# etc.
このように複雑な呼び出しをする理由は次のとおりxdotool
です。
keyup Hyper_R keyup Pause
- 鍵を消去する必要があります。それ以外の場合は、押すとXF86AudioMuteが送信され、別のキーとして認識されません。keydown Hyper_R
- これにより、キーの組み合わせ(この場合は「一時停止」)を数回押すことができますXF86AudioRaiseVolume
。key Control
- このように、xcapeは機能keydown Hyper_R
トリガーを避けるために偽とそれ以降の実際のキーリリースを検出しません。Menu
xdotools
呼び出しはいくつかの bash スクリプトの外部で行うことができます。たとえば、次のようになります。
#!/bin/bash
case "$1" in
"up")
KEY="XF86AudioRaiseVolume"
SHORT="Prior"
;;
"down")
KEY="XF86AudioLowerVolume"
SHORT="Next"
;;
"mute")
KEY="XF86AudioMute"
SHORT="Pause"
;;
"next")
KEY="XF86AudioNext"
SHORT="End"
;;
"prev")
KEY="XF86AudioPrev"
SHORT="Delete"
;;
"playpause")
KEY="XF86AudioPlay"
SHORT="Insert"
;;
"stop")
KEY="XF86AudioStop"
SHORT="Home"
;;
esac
xdotool keyup Hyper_R keyup $SHORT key $KEY keydown Hyper_R key Control