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