Detalhes técnicos
Quando você pressiona uma tecla do teclado, o controlador do teclado (um pequeno
chip de IC dentro do teclado) detecta o circuito elétrico e o processa para decodificar qual tecla foi pressionada e depois envia o
scancode para a placa - mãe . O sistema operacional recebe o scancode do BIOS e, em seguida, executa qualquer ação necessária para processar o pressionamento de tecla.
Com a maioria das chaves, isso é bastante simples. Se você pressionar a A
tecla, o controlador do teclado envia o scancode para a placa-mãe, que passa para o sistema operacional que, por sua vez, normalmente imprime 'A'. (Se o sistema operacional detectar que uma das teclas modificadoras está pressionada no momento, poderá fazer algo diferente. Na verdade, você pode configurá-lo para fazer o que quiser quando a Atecla for pressionada com ou sem modificadores.)
Agora a Fnchave é especial. Quando você pressiona por si só, nada acontece porque é exclusivamente uma tecla modificadora e não se destina (geralmente) a fazer algo por si só. Quando você o pressiona e pressiona outra tecla, o controlador do teclado detecta isso e olha em sua tabela interna para ver se é uma combinação conhecida. Se o combo não estiver na tabela, ele será ignorado, mas se o combo estiver na tabela, ele pesquisará o scancode associado e o enviará.
O que o sistema operacional acaba vendo? Ele não vê o scancode para a Fnchave e o scancode para a outra chave. Em vez disso, ele vê um único scancode associado a qualquer função que o Fn-combo tenha sido definido. Por exemplo, se o fabricante do laptop configurou o
Fn+ Down Arrowcombo para reduzir o volume, o sistema operacional verá o scancode associado ao Volume Down, que alguns teclados realmente possuem.
scancode
com, por exemplo, "keycode 238".scancode
akeycode
tabela de mapeamento, por isso mapeia um certo scancode a um código de acesso Você pode olhar para /usr/include/linux/input.h para ver o que seus usos do kernel para scancode para o mapeamento de código de acesso -. Ele é chamado dekeymap
. "