Как работают клавиши Fn?

Мне нравится знать, как работают клавиши Fn на моем ноутбуке. Я думаю, что существует модуль ядра, который ловит ключ Fn и вызывает некоторые скрипты, чтобы что-то сделать. В моем ноутбуке Fn + F2 переключают питание беспроводного и синего цвета.

это вывод acpi_listen, когда я нажимаю Fn + F2

hotkey ATKD 0000005d 00000019
hotkey ATKD 0000007e 00000009

, а следующий вывод - [ 113] для Fn + F2

keycode 238 press
keycode 238 release
keycode 237 press
keycode 237 release

Я думаю, всякий раз, когда я нажимал Fn + F2 Два события выпрыгнули. Я пытался найти, какие действия выполняются для этих ключей. Любая идея приветствуется;)

26
задан 10 March 2015 в 22:30

1 ответ

Synetech дает очень читаемое объяснение о ключах Fn здесь

Технические детали

При нажатии клавиши на клавиатуре контроллер клавиатуры (микросхема маленькой ИС в клавиатуре) обнаруживает электрическую схему и обрабатывает ее для декодирования, какая клавиша была нажата и затем отправляет scancode на материнскую плату. Операционная система получает scancode от BIOS и затем выполняет любое действие, в котором это нуждается к тому, для обработки того нажатия клавиши.

С большинством ключей это достаточно просто. При нажатии клавиши его контроллер клавиатуры отправляет scancode на материнскую плату, которая затем передает его ОС, которая в свою очередь обычно печатает 'A'. (Если ОС обнаруживает, что одна из модифицирующих клавиш в настоящее время удерживается, затем это может сделать что-то другое. На самом деле можно настроить его, чтобы сделать независимо от того, что Вы хотите, когда клавиша нажата с или без модификаторов.)

Теперь ключ Fn является особенным. При нажатии его отдельно ничего не происходит, потому что это - исключительно модифицирующая клавиша и (обычно) не предназначается, чтобы сделать что-либо самостоятельно. Когда Вы держите его и нажимаете другую клавишу, контроллер клавиатуры обнаруживает, что и смотрит в его встроенной таблице, чтобы видеть, является ли это известная комбинация. Если комбинация не находится в таблице, то она просто игнорирует его, но если комбинация находится в таблице, то она ищет связанный scancode и отправляет это.

Что ОС заканчивает тем, что видела? Это не видит scancode для ключа Fn и scancode для другого ключа. Вместо этого это видит единственный scancode, связанный с любой функцией, на которую была установлена Fn-комбинация. Например, если производитель ноутбуков установил комбинацию Стрелки Fn+Down для сокращения объема, то ОС видит scancode, связанный с Объемом Вниз, который на самом деле имеют некоторые клавиатуры.

Также обратите внимание, что ключ Fn работает независимо от операционной системы.

Кроме того, эта статья может помочь указать на Вас в правильном направлении:

Ядро имеет свое собственное scancode кому: keycode таблица отображения, таким образом, это отображает определенный scancode на код клавиши. Можно изучить/usr/include/linux/input.h для наблюдения то, что ядро использует для scancode для отображения кода клавиши – это называют a keymap.


Постскриптум

Я, возможно, должен был бы несколько изменить своему слову на более раннем заявлении, что ключи Fn работают полностью независимо от ОС; не вдаваясь в большее количество технических подробностей здесь, результат, кажется, что Ваша ОС не могла бы "поддерживать" все или некоторые ключи Fn Вашей клавиатуры, посмотрите, например:

26
ответ дан 10 March 2015 в 22:30

Другие вопросы по тегам:

Похожие вопросы: