capturando keypresses no nível do kernel

1

Onde as teclas pressionadas no terminal estão sendo manipuladas / capturadas? Se eu quiser modificar o comportamento das combinações de teclas Alt + F # (para swithc vterms), onde esta combinação de teclas está sendo tratada?

    
por Jebus 15.02.2018 / 05:39

1 resposta

0

As funções de troca de console no terminal virtual do kernel são definidas no emulador de terminal embutido do kernel ( drivers/tty/vt/keyboard.c na árvore de código-fonte do kernel) e acionado por combinações de teclas no mapa de teclas do kernel ( drivers/tty/vt/defkeymap.map ). Seu sistema provavelmente tem esse arquivo (ou um muito similar) instalado em /usr/share/kbd/keymaps .

Se você quiser modificar o comportamento de switching de alguma forma, isso implicará em hackear o código do kernel e compilar seu próprio kernel.

Se tudo o que você deseja fazer é alterar as combinações de teclas, você pode criar seu próprio mapa de teclas e usar o utilitário loadkeys para instalá-lo. Comece com o seu mapa de teclado preferido e altere a definição dos símbolos Console_N (e os Last_Console , Decr_Console , Incr_Console ) relacionados:

#...
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
#...

Observe que isso afeta apenas o emulador de terminal interno do kernel, significando que apenas o console virtual integrado é afetado. X11, Wayland e contextos semelhantes utilizam o XKB para obter uma funcionalidade semelhante. Em XKB, consulte /usr/share/X11/xkb/compat/xfree86 para as ações interpretadas, .../xkb/types/pc para o tipo CTRL+ALT usado e .../xkb/symbols/srvr_ctrl para as definições de chave F.

    
por 19.02.2018 / 04:19