Аннотация
Как указали другие, клавиша Fn - это особый случай, обрабатываемый внутри. Я предоставлю техническое объяснение.
Технические детали
Когда вы нажимаете клавишу на клавиатуре, контроллер клавиатуры (небольшая микросхема внутри клавиатуры) обнаруживает электрическую цепь и обрабатывает ее, чтобы декодировать, какая клавиша была нажата, а затем отправляет скан-код на материнскую плату. Операционная система получает скан-код из BIOS, а затем выполняет любое действие, необходимое для обработки этого нажатия клавиши.
С большинством клавиш это достаточно просто. Если вы нажмете клавишу A , контроллер клавиатуры отправит скан-код на материнскую плату, которая затем передаст его ОС, которая, в свою очередь, обычно печатает «A». (Если ОС обнаруживает, что одна из клавиш-модификаторов в настоящее время удерживается нажатой, она может сделать что-то другое. Фактически, вы можете настроить его так, чтобы он делал все, что угодно, когда нажата клавиша A с модификаторами или без них.)
Теперь клавиша Fn является особенной. Когда вы нажимаете его самостоятельно, ничего не происходит, потому что он является исключительно клавишей-модификатором и (как правило) не предназначен для самостоятельных действий. Когда вы удерживаете ее и нажимаете другую клавишу, контроллер клавиатуры обнаруживает это и просматривает встроенную таблицу, чтобы узнать, является ли она известной комбинацией. Если комбинация отсутствует в таблице, она просто игнорирует ее, но если комбинация находится в таблице, она ищет соответствующий скан-код и отправляет его.
Что в итоге видит ОС? Он не видит скан-код для клавиши Fn и скан-код для другой клавиши. Вместо этого он видит один скан-код, связанный с любой функцией, для которой была установлена Fn-комбинация. Например, если производитель ноутбука поставил комбо Fn+Стрелка вниз, чтобы уменьшить громкость, то операционная система видит скан , связанный с Volume Down, который некоторые клавиатуры на самом деле есть.
заявка
Так как же это объяснить, почему удерживание Fn на ноутбуке и нажатие клавиши на внешней клавиатуре не работает? Все просто, потому что у клавиатуры ноутбука и внешней есть свои контроллеры. Насколько контроллер в ноутбуке видит, вы нажали и отпустили клавишу Fn, а на внешнем контроллере вы нажали и отпустили другую клавишу. Что видит ОС? Он видит, что вы только нажали другую клавишу без каких-либо модификаторов.
демонстрация
Вы можете видеть, что обработка клавиш Fn является особенной с помощью простого теста. Подключите две внешние клавиатуры к ноутбуку (таким образом, вы получите три клавиатуры). Удерживайте клавишу Ctrl на одной клавиатуре, клавишу Shift на другой, а затем нажмите клавишу Escape на третьей. Должен появиться диспетчер задач Windows. Зачем? Поскольку Windows получила коды сканирования для всех трех клавиш, по одному от каждого из контроллеров трех клавиатур. (Это был пример Windows, но нажатие комбинаций клавиш таким образом должно работать так же в других операционных системах. Например, даже в DOS вы можете перезагрузить систему, нажав Ctrl+Alt+Delete на разных клавиатурах.)
Заметка
Примечание: информация о том, как Fn специально обрабатывается и вытекающие из этого ограничения на его использование, носит общий характер и основана на общих реализациях. Ничто не мешает производителю ноутбуков принять решение реализовать его по-другому и позволить пользователю переназначить клавишу на какую-то другую функцию, предоставить эмулированную клавишу Fn на внешней клавиатуре через определенный аккорд и т.д. На самом деле, даже нет официального стандарт для клавиши Fn ; большинство производителей просто используют ту же реализацию, что и другие, потому что это дешевле, а изменение привычных пользователей обычно не очень хорошо.