TTY에서 Ctrl을 Caps Lock으로 다시 매핑하는 방법은 무엇입니까?

TTY에서 Ctrl을 Caps Lock으로 다시 매핑하는 방법은 무엇입니까?

X 그래픽 서버에서 키를 다시 매핑하는 방법을 알아냈습니다. 그러나 때로는 TTY를 통해 작업하고 싶지만 기능적 Ctrl으로 Caps Lock.

.keymap다음 내용으로 파일을 만들어 보았습니다 .

keycode 37 = Control_L

그런 다음 소싱을 사용 loadkeys하지만 소용이 없습니다.

그러나 X의 37키코드가 Ctrl(에 따라 xmodmap -pke | grep 'Control') TTY의 키코드가 다를 수 있습니까? 그렇다면 올바른 키 코드를 어떻게 결정하고 이후에 재매핑을 설정합니까?

답변1

위의 Porkfreezer의 답변은 훌륭합니다! 이를 영구적인 솔루션으로 만들려면 디렉터리를 만들 .settings거나 .local디렉터리를 사용하여 TTY에 로그인할 때 사용할 수 있는 고유한 키맵 파일을 만들 수 있습니다. 이렇게 하려면 현재 사용하고 있는 키보드 키맵(나의 경우 us.map.gz)을 위에서 선택한 홈 디렉터리에 복사하는 것이 좋습니다. 나에게는 다음과 같습니다.

cp /usr/share/kbd/keymaps/i386/qwerty/us.map.gz ~/.settings/

그런 다음 원하는 키 매핑을 포함하도록 파일의 압축을 풀고 편집할 수 있습니다. 저는 Vim에서 작동하도록 Esc 키와 Caps_Lock을 전환했습니다. 그런 다음 다음과 같이 Linux가 찾을 수 있는 디렉터리에 대한 파일을 가리키는 심볼릭 링크를 만듭니다.

sudo ln -s ~/.settings/custom.map /usr/share/kbd/keymaps/i386/qwerty/custom.map

이제 TTY에 있는 동안 실행하여 sudo loadkeys custom키맵을 로드할 수 있습니다. 이를 기본값으로 만들려면

/etc/vconsole.conf

이 줄을 포함하는 파일

KEYMAP=custom

/etc/mkinitcpio.conf그런 다음 목록 끝에 추가하여 파일을 편집합니다 (수퍼유저 권한이 필요함). 이는 다음과 같아야 합니다.keymaphooks

...
HOOKS=(base udev autodetect modconf block filesystems keyboard fsck keymap)
...

그런 다음 실행

sudo mkinitcpio -p linux

그게 다야! 다시 시작한 후에는 TTY에 로그인할 때마다 사용자 정의 키맵이 사용됩니다.

도움이 되었기를 바랍니다!

답변2

커널 키코드는 X 키코드와 다릅니다. 커널의 키 37은 실제로 K(qwerty에 있음)입니다. 커널 키 코드를 찾으려면 다음을 사용할 수 있습니다 showkey.

$ showkey
kb mode was UNICODE
[ if you are using this under X, it might not work
since the X server is also reading /dev/console ]

press any key (program terminates 10s after last keypress)...
keycode  28 release    # I released enter
keycode  29 press      # I pressed control
keycode  29 release    # I released control
keycode  58 press      # I pressed caps lock
keycode  58 release    # I released caps lock

따라서 매핑하려면 다음 Ctrl을 수행하십시오 Caps Lock.

keycode 29 = Caps_Lock

또는 :Caps LockCtrl

keycode 58 = Control

관련 정보