Por que a tecla Fn no meu laptop não funciona quando usada com um teclado externo?

10

No meu Dell Latitude E6400, as teclas de seta para cima e para baixo são usadas para alterar o brilho da tela quando usadas com a tecla Fn .

Conectei um teclado externo via USB e tentei aumentar o brilho enquanto pressionava a tecla Fn do teclado do laptop e a seta para cima do teclado externo.

Não funcionou. Shift , Ctrl e Alt funcionam corretamente quando usados desta forma com um teclado externo.

Por que não Fn ?

    
por Lazer 07.06.2011 / 20:27

4 respostas

15

Resumo

Como outros indicaram, a tecla Fn é um caso especial tratado internamente. Eu vou dar a explicação técnica.

Detalhes técnicos

Quando você pressiona uma tecla em um teclado, o controlador de teclado (um pequeno chip IC dentro do teclado) detecta o circuito elétrico e o processa para decodificar a tecla que foi pressionada e, em seguida, envia o scancode para a placa-mãe. O sistema operacional recebe scancode do BIOS e, em seguida, realiza qualquer ação necessária para processar essa tecla.

Com a maioria das chaves, isso é bastante simples. Se você pressionar a tecla A , seu controlador de teclado enviará o scancode para a placa-mãe, que então passará para o sistema operacional, que normalmente imprime 'A'. (Se o SO detectar que uma das teclas modificadoras está atualmente pressionada, então pode fazer algo diferente. Na verdade, você pode configurá-lo para fazer o que quiser quando a tecla A é pressionada com ou sem modificadores.)

Agora a tecla Fn é especial. Quando você pressiona por si só, nada acontece porque é exclusivamente uma tecla modificadora e não é (geralmente) destinado a fazer nada por conta própria. Quando você o segura e pressiona outra tecla, o controlador de teclado detecta e procura em sua tabela incorporada para ver se é uma combinação conhecida. Se o combo não está na tabela, então ele simplesmente o ignora, mas se o combo estiver na tabela, então ele procura o scancode associado e o envia.

O que o sistema operacional acaba vendo? Não não vê o scancode para a tecla Fn e o scancode para a outra chave. Em vez disso, ele vê um único scancode associado a qualquer função na qual o combo Fn foi definido. Por exemplo, se o fabricante do laptop tiver definido o combo Fn + Seta para reduzir o volume, o SO verá o scancode associado ao Volume Down , que alguns teclados realmente têm.

Aplicativo

Então, como isso explica por que segurar Fn no laptop e pressionar uma tecla em um teclado externo não funciona? Simples, porque o teclado do laptop e o externo possuem seus próprios controladores. No que diz respeito ao controlador no laptop, você pressionou e soltou a tecla Fn e, na medida em que o controlador no externo visse, você pressionou e soltou a outra tecla. O que o sistema operacional vê? Veja que você só pressionou a outra tecla sem nenhum modificador.

Demonstração

Você pode ver que a manipulação de chaves Fn é especial com um teste simples. Conecte dois teclados externos em um laptop (dando a você três teclados). Segure a tecla Ctrl em um teclado, a tecla Shift em outra, e então pressione a tecla Escape no terceiro. O Gerenciador de Tarefas do Windows deve aparecer. Por quê? Porque o Windows recebeu os scancodes para todas as três chaves, uma de cada um dos controladores dos três teclados. (Este foi um exemplo do Windows, mas pressionar os principais combos dessa maneira deve funcionar da mesma forma em outros sistemas operacionais. Por exemplo, mesmo em DOS, você pode reinicializar o sistema pressionando Ctrl + Alt + Apagar em teclados diferentes.)

Nota

Nota: as informações sobre como o Fn é especialmente processado e as limitações resultantes em seu uso são apenas gerais, baseadas em implementações comuns. Não há nada que impeça um fabricante de laptop de decidir implementá-lo de forma diferente e permitir que o usuário remapeie a tecla para alguma outra função, forneça uma chave emulated Fn em teclados externos por meio de algum acorde específico, etc. , não existe sequer um padrão oficial para a chave Fn ; a maioria dos fabricantes usa apenas a mesma implementação que outros usaram porque é mais barata e mudar o que os usuários estão acostumados geralmente não é bom.

    
por 04.06.2012 / 22:57
5
As combinações de teclas

Fn geralmente fazem com que a interface do teclado emita sinais diferentes. Como a tecla Fn não é interpretada pelo sistema operacional, provavelmente não há uma maneira fácil de usá-la com teclas em um teclado diferente e ter o mesmo resultado, já que a interface do teclado não está escutando o outro teclado.

    
por 07.06.2011 / 21:03
1

Eu diria que as ações Shift , Ctrl e Alt são as mesmas em todos os computadores. Estas são chaves padrão.

As funções Fn são específicas para o laptop - algumas precisam de certos drivers no laptop para funcionar corretamente, portanto o laptop provavelmente escuta a função Fn e as teclas de seta do laptop para executar uma ação, ao contrário de um teclado externo que é tratado apenas como suas teclas normais 'para cima e para baixo', independentemente da tecla Fn.

    
por 07.06.2011 / 20:49
0

Eu acho (não tentei eu mesmo) que o teclado externo não contém a programação que o teclado do laptop faz. Eu estou supondo que se você tiver acesso à tecla FN no teclado do laptop, você também terá acesso às teclas para cima / baixo no teclado do laptop, basta usá-las se funcionar com o teclado externo conectado.

    
por 07.06.2011 / 20:58