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