É bem possível que não seja possível, receio. Normalmente, a tecla Fn não é algo que é passado para o sistema operacional, mas sim implementada no firmware do teclado.
Pegue meu laptop, por exemplo. Fn + F3 é mudo. Se eu (no Debian, mas os mesmos princípios se aplicam ao Windows) execute showkey --scancodes
, para ver o que meu teclado está fazendo, não receberei saída se eu pressionar e soltar o Fn. Se eu pressionar e liberar F3, recebo ^[OR0x3d 0xbd
e, se eu fizer Fn + F3, obtenho a sequência de scancode inteiramente distinta 0xe0 0x20 0xe0 0xa0
. Compare isso com a situação com ctl: press-and-release:
0x9c
0x1d
0x9d
E ctl + f3 obtém:
0x1d
^[[1;5R0x3d
0xbd 0x9d
Como você pode ver, o Fn não é passado para o SO; ele altera diretamente o que o sistema operacional pode ver.
Portanto, sem alterar o chip de firmware do teclado e a menos que já tenha uma tecla de bloqueio de Fn como Michael Frank comentou, transformar Fn numa alternância é não vai ser possível .
A opção inversão , no entanto, é factível. Pode haver uma opção para isso no BIOS, mas se não, você precisará descobrir o que o Windows acha dos scancodes das teclas F1-F12 e o resultado de Fn + [aqueles]. Para cada chave, você trocaria o resultado de seu fanc + scancode por seu não modificado. Isso é algo que pode ser feito no Windows com o regedit, embora provavelmente existam ferramentas mais fáceis, e no Linux com as ferramentas apropriadas, provavelmente um editor de texto e o setxkbmap. Infelizmente, não posso te ajudar com isso.