터미널에서 키 누르기가 처리/캡처되는 위치는 어디입니까? vterms를 전환하기 위해 Alt + F# 키 조합의 동작을 수정하려는 경우 이 키 조합은 어디에서 처리됩니까?
답변1
커널 가상 터미널의 콘솔 전환 기능은 커널 내장 터미널 에뮬레이터(drivers/tty/vt/keyboard.c
커널 소스 트리에서) 커널 키 맵의 키 조합에 의해 트리거됩니다(drivers/tty/vt/defkeymap.map
). 시스템이 에 있을 수 있습니다 /usr/share/kbd/keymaps
.
어떤 방식으로든 전환 동작을 수정하려면 커널 코드를 해킹하고 패치된 커널을 직접 컴파일해야 합니다.
키 조합만 변경하려는 경우 loadkeys
이 유틸리티를 사용하여 자신만의 키맵을 만들고 설치할 수 있습니다. 선호하는 키맵으로 시작한 다음 기호 Console_N
(및 관련 Last_Console
, Decr_Console
, Incr_Console
)의 정의를 변경합니다.
#...
keycode 59 = F1 F11 Console_13
control keycode 59 = F1
alt keycode 59 = Console_1
control alt keycode 59 = Console_1
keycode 60 = F2 F12 Console_14
control keycode 60 = F2
alt keycode 60 = Console_2
control alt keycode 60 = Console_2
#...
이는 커널에 내장된 터미널 에뮬레이터에만 영향을 미치며, 이는 내장된 가상 콘솔에만 영향을 미친다는 것을 의미합니다. X11, Wayland 및 유사한 컨텍스트는 XKB를 사용하여 유사한 기능을 구현합니다. XKB에서 작업, /usr/share/X11/xkb/compat/xfree86
사용된 .../xkb/types/pc
유형 CTRL+ALT
및 .../xkb/symbols/srvr_ctrl
F 키 정의에 대한 설명은 리소스를 참조하십시오.