Caps Lock 키와 ESC 키를 바꾸는 방법

Caps Lock 키와 ESC 키를 바꾸는 방법

나는 사용하고있다

  • 아치 커널 5.7.3-arch1-1 및
  • 상자를 열고,
  • 새로운 vim 0.4.3 및
  • 레노버 씽크패드 T430 노트북/키보드.

모든 시스템 패키지가 최신 상태입니다.

neoVim에서 사용하기 위해 Caps Lock과 Esc 키를 바꾸려고 하는데 다음 줄을 사용했습니다.

setxkbmap -option caps:swapescape

예상대로 Esc 키가 Caps 토글로 설정되지만 Caps Lock 키에는 아무 작업도 수행되지 않습니다. Caps Lock 키가 Esc 키로 작동할 것으로 예상했는데 그렇지 않습니다.

누구든지 이 작업을 수행하는 방법과 위 명령을 사용하여 Caps Lock이 작동하지 않는 이유를 알려줄 수 있습니까?

내 이해는 이것이 nvim의 파일에서는 수행될 수 없다는 것입니다 .vimrc.

xev아래는 눌렀다가 놓을 때의 출력 입니다 escape.keycode 9

KeyPress event, serial 48, synthetic NO, window 0x3200001,
    root 0x139, subw 0x0, time 75547017, (621,536), root:(792,564),
    state 0x0, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
    XLookupString gives 1 bytes: (1b) "
mbLookupString gives 1 bytes: (1b) "
FilterEvent returns: False

KeyRelease event, serial 48, synthetic NO, window 0x3200001,
    root 0x139, subw 0x0, time 75547079, (621,536), root:(792,564),
    state 0x0, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
    XLookupString gives 1 bytes: (1b) "
FilterEvent returns: False

xev다음은 눌렀다가 놓을 때의 출력 입니다 caps lock.keycode 66

FocusOut event, serial 48, synthetic NO, window 0x4800001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 48, synthetic NO, window 0x4800001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 48, synthetic NO, window 0x0,
    keys:  57  0   0   0   0   0   0   0   4   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

KeyRelease event, serial 48, synthetic NO, window 0x4800001,
    root 0x139, subw 0x0, time 75680956, (272,352), root:(443,380),
    state 0x2, keycode 66 (keysym 0xffe5, Caps_Lock), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

답변1

이는 xmodmap을 사용하여 수행할 수 있습니다. 열쇠를 교환하세요.

xmodmap -e "keycode 9 = Caps_Lock"; xmodmap -e "keycode 66 = Escape"

이 효과는 나중에 취소할 수 있습니다.

xmodmap -e "keycode 66 = Caps_Lock"; xmodmap -e "keycode 9 = Escape"

x 세션의 모든 프로세스에 영향을 미치므로 이것이 귀하의 요구에 맞는지 확실하지 않습니다.

답변2

열쇠키를 다시 바인딩하는 일반적인 방법이지만 특정 프로그램에 대해 키를 다시 바인딩하는 방법은 없습니다. (실험적인 것이 있지만 keyd-application-mapper특정 창 관리자의 창 응용 프로그램에서만 작동합니다.) 귀하의 제안은 불가능하거나 적어도 불완전합니다. 왜냐하면 neovim이 열릴 때마다 escape바운스되기 때문입니다 capslock. 현재 초점을 맞추거나 사용하지 않더라도 .

즉, keyd는 X11, wayland, TTY 등 모든 세션에서 작동한다는 점에서 "보편적"입니다. 지금 몇달째 아무 문제 없이 잘 사용하고 있습니다.

설치하고 구성하려면 GitHub(위에 링크됨)를 참조하거나 다음 명령을 실행할 수 있습니다(systemd를 사용한다고 가정).

cd
git clone https://github.com/rvaiya/keyd
cd keyd
make
sudo make install

이제 /etc/keyd/default.conf다음을 편집하여 붙여넣으세요.

[ids]

*

[main]

escape=capslock
capslock=escape

그런 다음 keyd 서비스를 활성화하고 시작합니다.

sudo systemctl enable --now keyd

관련 정보