커널 수준에서 키 누르기 캡처

커널 수준에서 키 누르기 캡처

터미널에서 키 누르기가 처리/캡처되는 위치는 어디입니까? 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_ctrlF 키 정의에 대한 설명은 리소스를 참조하십시오.

관련 정보