
나는 일부 특별한 단축키를 위해 AutoKey와 함께 사용하고 싶기 때문에 xkb를 사용하여 올바른 Windows 키(RWIN)를 Hyper_R에 다시 매핑했습니다. 편집해서 해봤습니다
/usr/share/X11/xkb/symbols/pc
RWIN 라인 수정:
key <RWIN> { [ Hyper_R ] };
내가 알 수 있듯이 이것은 작동하며 이제 올바른 Windows 키가 Hyper_R을 실행합니다. 그러나 Ubuntu(정확하게는 Xubuntu)에서는 Hyper와 Super가 어떻게든 동일한 작업을 수행하는 것 같습니다. 따라서 Super + e는 편집기를 시작하고 Hyper + e도 마찬가지입니다.
이것이 왜 발생하는지 또는 이 동작을 어디에서 변경할 수 있는지 잘 모르겠습니다. 저는 Hyper와 Super가 서로 다른 수식어가 되기를 바랍니다.
답변1
어떤 이유로 Ubuntu는 현재 Super와 Hyper를 모두 Mod4에 할당합니다. /usr/share/X11/xkb/symbols/pc에서 이를 볼 수 있습니다:
key <SUPR> { [ NoSymbol, Super_L ] };
modifier_map Mod4 { <SUPR> };
key <HYPR> { [ NoSymbol, Hyper_L ] };
modifier_map Mod4 { <HYPR> };
루트가 되거나 시스템 파일을 수정할 필요 없이 별도의 수정자에 super 및 hyper를 배치하도록 이를 변경할 수 있었습니다. 나는 확실히 xkb 전문가가 아니기 때문에 이것이 최선의 방법인지는 확신할 수 없지만 나에게는 신뢰할 수 있는 방법이었습니다.
먼저 로컬 기호 파일을 만듭니다. ${HOME}/.config/xkb/symbols/local에 내 것이 있습니다. 그러면 Super가 Mod3에 할당되고 Hyper가 Mod4에 할당됩니다.
default partial modifier_keys
xkb_symbols "superhyper" {
modifier_map Mod3 { Super_L, Super_R };
key <SUPR> { [ NoSymbol, Super_L ] };
modifier_map Mod3 { <SUPR> };
key <HYPR> { [ NoSymbol, Hyper_L ] };
modifier_map Mod4 { <HYPR> };
};
그런 다음 기존 지도를 다시 컴파일하여 "로컬"을 추가합니다.
setxkbmap -print | sed -e '/xkb_symbols/s/"[[:space:]]/+local&/' | xkbcomp -I${HOME}/.config/xkb - ${DISPLAY}
로그인할 때 실행할 스크립트에 이것을 넣으세요. 일반 사용자로 실행할 수 있습니다.
답변2
다음 두 가지 명령 으로 xmodmap
이 동작을 변경할 수 있습니다.
## Hyper_L is mod4 by default, we will "move" it to Mod3
xmodmap -e "remove mod4 = Hyper_L"
xmodmap -e "add mod3 = Hyper_L"