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
그런 다음 목록 끝에 추가하여 파일을 편집합니다 (수퍼유저 권한이 필요함). 이는 다음과 같아야 합니다.keymap
hooks
...
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