![xcape 및 xkb를 사용하여 일반 키를 수정자 키로 사용](https://linux55.com/image/99811/xcape%20%EB%B0%8F%20xkb%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%9D%BC%EB%B0%98%20%ED%82%A4%EB%A5%BC%20%EC%88%98%EC%A0%95%EC%9E%90%20%ED%82%A4%EB%A1%9C%20%EC%82%AC%EC%9A%A9.png)
적절한 경우 Spacebar이를 수행하기 위해 Ctrl현재 GitHub 페이지에는 xcape
다음이 명시되어 있습니다.
# Map an unused modifier's keysym to the spacebar's keycode and make it a
# control modifier. It needs to be an existing key so that emacs won't
# spazz out when you press it. Hyper_L is a good candidate.
spare_modifier="Hyper_L"
xmodmap -e "keycode 65 = $spare_modifier"
xmodmap -e "remove mod4 = $spare_modifier" # hyper_l is mod4 by default
xmodmap -e "add Control = $spare_modifier"
# Map space to an unused keycode (to keep it around for xcape to
# use).
xmodmap -e "keycode any = space"
# Finally use xcape to cause the space bar to generate a space when tapped.
xcape -e "$spare_modifier=space"
xkb
대신에 이것을 달성하는 방법은 무엇입니까 xmodmap
?
답변1
대신 다음 Hyper_R
과 Hyper_L
같습니다.
콘텐츠 ~/.config/xkb/keycodes/my-keycodes
:
xkb_keycodes "xcape-special" {
<HYPR> = 65;
<SPCE> = 207;
};
참고: 내 컴퓨터에 로드된 키코드 테이블의 207
(가상) 키에 대한 기본 키코드 입니다.Hyper_R
콘텐츠 ~/.config/xkb/symbols/my-symbols
:
xkb_symbols "xcape-special" {
key <HYPR> { [ Hyper_R ] };
modifier_map Control { <HYPR> };
};
발췌 ~/.xinitrc
:
XKB_DIR="$HOME/.config/xkb"
XKB_SYMBOL_FILE="my-symbols"
XKB_KEYCODE_FILE="my-keycodes"
setxkbmap -layout "us+$XKB_SYMBOL_FILE(xcape-special)" \
-keycodes "evdev+$XKB_KEYCODE_FILE(xcape-special)" \
-option "" -print \
| xkbcomp -I"$XKB_DIR" - "${DISPLAY%%.*}" >/dev/null 2>&1
xcape -e "Hyper_R=space"
이것이 유일한 구성 방법은 아닙니다 xkb
. 단일 호출로 단일 파일에서 구성을 로드할 수 있습니다 xkbcomp
. 하위 디렉토리는 ~/.config/xkb/
의 구조만 따릅니다 /usr/share/X11/xkb/
. 이 ... -print | xkbcomp ...
부분은 조금 복잡하지만 유연합니다. 지금은 더 간단한 설정을 시도할 수 없습니다.