저는 프로그래밍할 때 다음 키를 바꾸는 것을 좋아합니다.
Esc⇔ Tab Ctrl⇔CapsLock
나는 ~/.xmodmap
다음과 같은 재매핑을 지정했습니다.
keycode 66 = Control_L
keycode 37 = Caps_Lock
keycode 23 = Escape
keycode 9 = Tab
그리고 키 교환은 문제가 되지 않습니다. 하지만 그렇지 않고 교환하면 두 키가 모두 Escape
.Tab
Caps_Lock
Control_L
Caps_Lock
무엇을 하려고 해도 Control 키가 Caps_Lock
(키코드 66)에 할당되지 않습니다. 에서 나가면 키가 할당되지 않지만, 또는 keycode 66 =
에서 할당하면 작동하지 않습니다. 하지만 예를 들어 다른 키를 할당하면 해당 키도 할당되므로 문제가 없습니다.Control_L
Control_R
keycode 66 = Tab
xmodmap은 Caps Lock과 Control 키가 바뀌는 것을 원하지 않는 것과 같습니다. 너무 답답해요. 어떤 도움이나 지침이라도 도움이 될 것입니다.
PS: 저는 Archlinux를 사용하고 있습니다.
답변1
이것xmodmap(1) 매뉴얼 페이지구체적인 예가 있습니다
!
! Swap Caps_Lock and Control_L
!
remove Lock = Caps_Lock
remove Control = Control_L
keysym Control_L = Caps_Lock
keysym Caps_Lock = Control_L
add Lock = Caps_Lock
add Control = Control_L
하지만 시작한 대로 끝내고 싶다면 최소한 remove
및 add
줄을 추가해야 할 것 같습니다.
remove Lock = Caps_Lock
remove Control = Control_L
keycode 37 = Caps_Lock
keycode 66 = Control_L
add Lock = Caps_Lock
add Control = Control_L
이 문단을 토대로 그런 일이 벌어지고 있는 것 같아요
add MODIFIERNAME = KEYSYMNAME ...
This adds all keys containing the given keysyms to the indi‐
cated modifier map. The keysym names are evaluated after all
input expressions are read to make it easy to write expressions
to swap keys (see the EXAMPLES section).
수정자 변경 사항(Shift, Control 등)은 실행한 후에만 적용되는 것처럼 들립니다.
(논리적으로는 와 동일 remove
)
이 keycode
버전의 장점은 멱등성(idempotent)이라는 것입니다. 즉, xmodmap을 여러 번 실행해도 효과가 변하지 않습니다.
답변2
느슨하게 관련된 답변: Caps Lock 키를 왼쪽 컨트롤에 다시 매핑하고 실제 왼쪽 컨트롤은 변경하지 않고 싶습니다. xmodmap 매뉴얼 페이지에서도 솔루션을 제공합니다.
keycode 66 = Control_L
clear Lock
add Control = Control_L