xmodmap을 사용하여 CapsLock과 Control을 교체합니다(맨페이지 솔루션이 작동하지 않음).

xmodmap을 사용하여 CapsLock과 Control을 교체합니다(맨페이지 솔루션이 작동하지 않음).

방금 Gnome 데스크탑이 있는 Fedora 14에서 Mate 데스크탑이 있는 Fedora 20으로 업그레이드했습니다. F14에서는 이전에 CapsLock을 Control_Left로, Alt_Right를 Control_Right로 바꿨습니다. /etc/X11/xinit/xinitrc-common에 다음 줄을 추가하여 이 작업을 수행했습니다(각 줄의 "xmodmap"을 양해해 주시기 바랍니다).

xmodmap -e 'clear lock'
xmodmap -e 'clear control'
xmodmap -e 'remove mod1 = Alt_R'
xmodmap -e 'add control = Caps_Lock Alt_R'
xmodmap -e 'add mod1 = Control_R'
xmodmap -e 'add lock = Control_L'

F14에서는 예상대로 작동합니다. 그러나 F20 아래의 /etc/X11/xinitrc-common에 복사하면 CapsLock Control_L 스왑이 발생하지 않습니다. 대신 두 키 모두 CapsLock이 됩니다. Alt_R/Control_R 스왑이 제대로 작동합니다.

다음으로 xmodmap 매뉴얼 페이지에 제공된 솔루션을 시도해 보았습니다. xmodmap을 사용하여 Caps Lock을 다시 매핑하면 작동하지 않습니다.

xmodmap -e 'remove Lock = Caps_Lock'
xmodmap -e 'remove Control = Control_L'
xmodmap -e 'keysym Control_L = Caps_Lock'
xmodmap -e 'keysym Caps_Lock = Control_L'
xmodmap -e 'add Lock = Caps_Lock'
xmodmap -e 'add Control = Control_L'

이상하게도 CapsLock과 Control_L 키는 모두 이제 Control_L입니다.

그럼에도 불구하고 모든 교체에 키코드 매핑을 사용하는 것은 매력적입니다.

xmodmap -e 'clear Lock'
xmodmap -e 'clear Control'
xmodmap -e 'remove Mod1 = Alt_R'
xmodmap -e 'keycode 66 = Control_L'
xmodmap -e 'keycode 37 = Caps_Lock'
xmodmap -e 'keycode 108 = Control_R'
xmodmap -e 'keycode 105 = Alt_R'
xmodmap -e 'add Lock = Caps_Lock'
xmodmap -e 'add Control = Control_L Control_R'
xmodmap -e 'add Mod1 = Alt_R'

교환 전 원래 키 코드는 66=CapsLock, 37=Control_L, 108=Alt_R, 105=Control_R입니다.

처음 두 가지 방법이 작동하지 않는 이유를 알고 싶습니다. 어떤 아이디어가 있나요?

답변1

랩톱에서 올바른 컨트롤 키와 메뉴 키를 전환하려고 할 때 비슷한 문제가 발생했습니다(Dell은 키보드에서 물리적 위치를 바꿨습니다).

어떤 이유로 수정자 키가 작동하려면 두 가지 기능이 있어야 합니다. 특정 키가 Control_R이라는 것을 알아야 하고 특정 키에 Control 수정자가 첨부되어 있다는 것을 알아야 합니다.

그래서 키코드를 교체한 다음 한 키에서 제어 기능을 개별적으로 제거하고 다른 키에 추가해야 했습니다. 문자 키를 바꾸려고 할 때 첫 번째 단계만 수행하면 됩니다.

내 생각엔 시스템이 수정자 기능을 다르게 처리하는 것 같습니다.

관련 정보