Emacs 및 Openbox로 작업 할 때 키맵 문제


17

나는 Apple 키보드를 가지고 있으며 Emacs로 작업 할 때 mod-4키를 Space막대 왼쪽의 첫 번째 키로 만들기 위해 키를 다시 매핑해야했습니다 . 아래 스크립트는 dwm 창 관리자를 사용할 때 제대로 작동했지만 Openbox로 전환 한 후 옵션과 명령 키 사이에서 키 코드를 바꾸는 대신 두 키가 모두 같은 일을한다는 것을 알았습니다.

내가 알았던 한 가지 이상한 점은 실행을 클릭 showkey하고 옵션 및 명령 키를 각각 누를 때 새로운 설정에 관한 것으로 56과 125를 얻지 만 64와 64 대신 아래 스크립트에 삽입하면 전혀 작동하지 않습니다. 133.

스크립트가 작동 할 때까지 계속 조정하여 훨씬 더 나은 방법이있을 수 있도록 아래에서 스크립트를 작성했음을 인정해야합니다.

.xmodmap

# switch alt and command...the switch is not being done properly
xmodmap -e "keycode 64 = Alt_L"
xmodmap -e "keycode 133 = Meta_L"

# remap of mod 4
xmodmap -e "clear Mod4"
xmodmap -e "add Mod4 = Super_L"

최신 정보

나는 이전 키보드 설정에 익숙해졌고 그것을 조정하려고 포기했습니다. 최근 다시 시작이 후 불행하게도 CapsLockCtrl더 이상 그래서 여기에 일을 다시 생각하지 않습니다.

이번에는 위에서 사용한 매핑 대신에 xmodmap -pke > ~/.xmod키를 실행 하고 대신 조정했습니다 (훨씬 더 쉬움).

그러나 상황이 여전히 옳지 않습니다. 명령이 실행될 CapsLock때를 제외하고 는 여전히 정상으로 작동하고 xev올바른 맵핑을 표시하는 것으로 보이는 다음을 리턴합니다.

# caplock
KeyRelease event, serial 40, synthetic NO, window 0x2200001,
root 0x156, subw 0x0, time 4858000, (57,-31), root:(426,402),
state 0x2, keycode 66 (keysym 0xffe3, Control_L), same_screen YES,
XKeysymToKeycode returns keycode: 37
XLookupString gives 0 bytes: 
XFilterEvent returns: False

# ctrl-L
KeyRelease event, serial 40, synthetic NO, window 0x2200001,
root 0x156, subw 0x0, time 4805947, (686,148), root:(1055,581),
state 0x4, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes: 
XFilterEvent returns: False

# Alt-L
KeyPress event, serial 40, synthetic NO, window 0x2200001,
root 0x156, subw 0x0, time 4555825, (-158,-649), root:(959,133),
state 0x0, keycode 64 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes: 
XmbLookupString gives 0 bytes: 
XFilterEvent returns: False

# Super-L
KeyRelease event, serial 40, synthetic NO, window 0x2200001,
root 0x156, subw 0x0, time 4920564, (-63,169), root:(306,602),
state 0x40, keycode 133 (keysym 0xffe9, Alt_L), same_screen YES,
XLookupString gives 0 bytes: 
XFilterEvent returns: False

4
PC에서 (Mac에서도 마찬가지인지 모르겠습니다) showkeyX에서 사용하는 것과 동일한 키 코드가 표시되지 않습니다. xevX 키 코드 및 해당 조치를 보려면 실행 하십시오. 관련된 각 키를 누를 때 xmodmap -pm의 출력과 출력을 보여주십시오 xev.
Gilles 'SO- 악마 그만해'

xmodmap -pm 명령에 대해 위의 업데이트를 추가했습니다
chris

wiki.archlinux.org/index.php/Apple_Keyboardhelp.ubuntu.com/community/AppleKeyboard를 살펴 보십시오 . 요약하자면, 커널에서 키보드 드라이버가 X에서 해킹하는 것보다 다르게 동작하도록 할 수 있습니다.
wingedsubmariner

DWM에서 작동했다면 충돌 ~/.config/openbox/rc.xml이 문제 라고 생각 합니다.
MajorBriggs

xmodmap 대신 udev를 사용하여 키를 다시 매핑하는 것을 고려 했습니까? udev는 스캔 코드를 특정 키 코드로 다시 매핑하기 위해 hwdb 파일 만 있으면됩니다.
Centimane 2016 년

답변:


1

당신은 아마 당신의 시작 부분에 다음을 배치해야합니다 ~/.xmod

remove Lock = Caps_Lock
remove Control = Control_L
remove Mod1 = Alt_L Meta_L
remove Mod4 = Super_L Hyper_L

그리고 하단에 다음 ~/.xmod

add Control = Control_L
add Mod1 = Alt_L Meta_L
add Mod4 = Super_L Hyper_L

이 키의 수정 자 특성을 인식하도록 시스템을 업데이트합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.