Eu lutei com esse problema por meses e acabei optando por uawks como a melhor solução. Sim, as coisas fn às vezes podem ficar um pouco complicadas, mas geralmente funciona.
Comecei com o mapeamento de scancodes, eventualmente escrevi alguns scripts AutoHotKey junto com DLL do Veil para adicionar suporte a fn, e eventualmente descobri que o uawks fazia tudo o que o meu pessoal fazia, mas com uma pequena UI agradável.
O Uawks é apenas uma IU em cima dos scripts AutoHotKey, para que você possa sempre entrar e ajustar o código para suportar sua própria marca de teclas de atalho. Você pode adicionar um pequeno mapeamento de scancode se precisar fazer algo que o uawks / o AutoHotKey tiver problemas.
Minha solução final para o problema acabou comigo comprando um Mac, então sempre tem isso.