xmodmap은 Ctrl을 Super에 매핑하지 않습니다(Ubuntu 키보드 단축키 제외).

xmodmap은 Ctrl을 Super에 매핑하지 않습니다(Ubuntu 키보드 단축키 제외).

나중에 업데이트: 오전 내내 xmodmap과 씨름한 끝에 문제를 완벽하게 해결한 이 답변을 찾았습니다.. 그 이유는 xmodmap이 키보드 하드웨어에 더 가까운 xkb만큼 강력하지 않기 때문이라고 생각합니다. 이 단계를 수행한 후에는 KUL ES-87(Alt 및 Super 키 전환)과 "OS X 모드"가 Apple 키보드처럼 작동합니다.

방금 다음 스크립트를 사용하여 xmodmap을 통해 일부 수정자 키를 다시 매핑했습니다.

remove mod4 = Super_L
remove control = Control_L
add control = Super_L
add mod4 = Control_L

Super 키는 Control 키로 작동합니다. Super 키는 Control 키에 매핑되어 있으므로 복사하여 붙여넣을 수 있습니다. 그러나 Control 키(Super에 매핑됨)를 사용하여 Super+V로 알림 창 보기 또는 Super+PgDn으로 작업 공간 전환 등 Ubuntu에서 Super가 수행하는 작업을 수행할 수 없습니다.

이상한 점은 이러한 기능을 다시 매핑하기 위해 키보드 단축키로 이동하면 예상한 대로 키 입력이 표시된다는 것입니다. 키보드에서 Crtl+V를 누르면 Super+V를 보낸 것으로 기록되지만 키보드 단축키에 단축키를 기록하는 것 이외의 다른 상황에서 이 키 조합을 사용하려고 하면 여전히 작동하지 않습니다. 따라서 키보드 설정은 수정된 키맵을 올바르게 해석하지만 여전히 해당 기능을 수행하지 못합니다. xmodmap Super를 재설정하면 Control이 예상대로 작동하고 모든 단축키가 기본적으로 작동합니다.

이 문제의 원인은 무엇입니까? 키보드가 예상대로 작동하도록 하려면 어떻게 해야 합니까?

고쳐 쓰다:xkb를 기본값으로 재설정한 다음(xmodmap도 재설정함) xmodmap 맵을 키코드로 업데이트했습니다. 이는 슈퍼 키를 비활성화하는 것 외에는 아무런 효과가 없습니다(키는 더 이상 알림 목록을 여는 데 사용되지 않지만 여전히 키보드 단축키에 슈퍼 키로 등록되어 있으며 왼쪽 키는 어떻게든 CtrlControl_L 기능을 유지합니다. 여기에서 복사 및 붙여넣기) 키와 키보드 단축키는 새 단축키를 할당할 때 여전히 Control로 인식됩니다. 정확히 무슨 일이 일어나고 있는 걸까요?

m@buntoo:~$ setxkbmap -layout us
m@buntoo:~$ xmodmap -pke | grep 'Super\|Control'
keycode  37 = Control_L NoSymbol Control_L
keycode 105 = Control_R NoSymbol Control_R
keycode 133 = Super_L NoSymbol Super_L
keycode 134 = Super_R NoSymbol Super_R
keycode 206 = NoSymbol Super_L NoSymbol Super_L
m@buntoo:~$ xmodmap -e "keycode 37 = Super_L"
m@buntoo:~$ xmodmap -e "keycode 133 = Control_L"
m@buntoo:~$ xmodmap -pke | grep 'Super\|Control'
keycode  37 = Super_L NoSymbol Super_L
keycode 105 = Control_R NoSymbol Control_R
keycode 133 = Control_L NoSymbol Control_L
keycode 134 = Super_R NoSymbol Super_R
keycode 206 = NoSymbol Super_L NoSymbol Super_L
m@buntoo:~$ xmodmap -e "keycode 206 = Control_L"
m@buntoo:~$ xmodmap -pke | grep 'Super\|Control'
keycode  37 = Super_L NoSymbol Super_L
keycode 105 = Control_R NoSymbol Control_R
keycode 133 = Control_L NoSymbol Control_L
keycode 134 = Super_R NoSymbol Super_R
keycode 206 = Control_L NoSymbol Control_L
m@buntoo:~$ 

답변1

mod4 및 Super_L을 제거하고 추가하는 것 외에도 키코드도 교체됩니다.
키코드를 얻고 xmodmap -pke값을 교환하세요. 저는 keycode 37 = Control_L NoSymbol Control_L)이므로 다음과 같이 합니다.

xmodmap -e "keycode 37 = Super_L"

그리고 필요하다면 두 개 더. 정확하게 테스트할 수는 없습니다. 내 키보드에는 해당 기능이 없습니다 Super_L.

관련 정보