Этот ответ - чистое предположение, но потерпите меня.
Возможный сценарий: клавиатура сама генерирует различные коды сканирования низкого уровня в зависимости от того, нажата ли клавиша fn. Ради аргумента давайте предположим следующее:
F1: 0x01
fn-F1: 0x02
Эти коды сканирования низкого уровня передаются по шине на драйвер клавиатуры. Драйвер клавиатуры проверяет, установлено ли предпочтение «Использовать клавиши F в качестве стандартных функциональных клавиш», и, если да, обменивает коды сканирования перед их отправкой в приложение. Таким образом, драйвер клавиатуры будет делать это отображение:
F1: 0x01
fn-F1: 0x02
"Use F keys" & F1: 0x02
"Use F keys" & fn-F1: 0x01
В этом случае вы можете просто посмотреть, установлено ли предпочтение «использовать все клавиши F в качестве стандартных функциональных клавиш», и, если это так, повторно поменять коды сканирования перед их обработкой. Другими словами, вы бы отменили работу, которую выполнял драйвер клавиатуры. Возможно, это ваш оригинальный вопрос.
Загляните в это, хотя; Я могу ошибаться.