방금 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 수정자가 첨부되어 있다는 것을 알아야 합니다.
그래서 키코드를 교체한 다음 한 키에서 제어 기능을 개별적으로 제거하고 다른 키에 추가해야 했습니다. 문자 키를 바꾸려고 할 때 첫 번째 단계만 수행하면 됩니다.
내 생각엔 시스템이 수정자 기능을 다르게 처리하는 것 같습니다.