저는 프로그래밍할 때 다음 키를 바꾸는 것을 좋아합니다.
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
and 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).
수정자 변경(시프트, 컨트롤 등)이 실행될 때까지 적용되지 않는 것처럼 들립니다.
(그리고 논리적으로는 와 동일 remove
)
이 keycode
버전은 멱등성(idempotent)이라는 장점이 있습니다. 즉, xmodmap을 여러 번 실행해도 효과가 변경되지 않습니다.
답변2
느슨하게 관련된 답변: 실제 왼쪽 컨트롤은 그대로 두고 Caps Lock 키를 왼쪽 컨트롤로 다시 매핑하고 싶었습니다. xmodmap 매뉴얼 페이지에서도 솔루션을 제공합니다.
keycode 66 = Control_L
clear Lock
add Control = Control_L