Як працюють клавіші Fn?


26

Мені подобається знати, як Fnпрацюють ключі в моєму ноутбуці. Я думаю, що існує модуль ядра, який вловлює Fnключ і викликає деякі сценарії, щоб зробити щось. У моєму ноутбуці Fn+ F2живлення комутатора бездротового та синього зуба.

це результат acpi_listen, коли я натискаю Fn+F2

hotkey ATKD 0000005d 00000019
hotkey ATKD 0000007e 00000009

і, фолінг виводиться xevдля Fn+F2

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

Я здогадуюсь, коли я натиснув Fn+ F2дві події вискочили. Я намагався знайти, які дії виконуються для цих клавіш. будь-яка ідея оцінена;)

Відповіді:


26

Synetech дає дуже читабельне пояснення щодо Fnключів тут

Технічні деталі

Коли ви натискаєте клавішу на клавіатурі, контролер клавіатури (невеликий мікросхеми всередині клавіатури) виявляє електричну ланцюг і обробляє її для розшифровки, яку клавішу натискали, а потім відправляє код сканування на материнську плату . Операційна система отримує код сканування від BIOS, а потім виконує всі необхідні дії для обробки цього натискання клавіші.

З більшості клавіш це досить просто. Якщо натиснути A клавішу, контролер клавіатури надсилає код сканування на материнську плату, після чого передає її в ОС, яка, в свою чергу, зазвичай друкує "A". (Якщо ОС виявить, що одна з клавіш модифікатора в даний час утримується, то вона може зробити щось інше. Насправді ви можете налаштувати її, щоб робити все, що завгодно, коли Aклавіша натискається з модифікаторами або без них.)

Тепер Fnключ особливий. Коли ви натискаєте його самостійно, нічого не відбувається, тому що це виключно модифікаційна клавіша і не (в цілому) не означає нічого робити самостійно. Коли ви утримуєте його і натискаєте іншу клавішу, контролер клавіатури виявляє це і дивиться у вбудовану таблицю, щоб побачити, чи це відома комбінація. Якщо комбо немає в таблиці, він просто ігнорує його, але якщо комбо в таблиці, то він шукає пов'язаний код сканування і надсилає це.

Що в результаті бачить ОС? Він не бачить код сканування для Fnключа та код сканування для іншого ключа. Натомість він бачить єдиний код сканування, пов'язаний з будь-якою функцією, для якої було встановлено Fn-combo. Наприклад, якщо виробник ноутбука встановив Fn+ Down Arrowкомбо для зменшення гучності, тоді ОС бачить код сканування, пов’язаний із Volume Down, яким є деякі клавіатури.

Також зауважте, що Fnключ працює незалежно від операційної системи.

Більше того, ця стаття може допомогти вам направити в правильному напрямку:

Ядро має свій власний scancodeдля keycodeвідображення таблиці, тому він відображає певну скан до клавіатурним. Ви можете заглянути в /usr/include/linux/input.h, щоб побачити, яке ваше ядро ​​використовує для сканування коду для відображення ключового коду - воно називається a keymap.


Постскрипт

Мені, можливо, доведеться дещо заперечувати попередні твердження, що Fnклавіші працюють повністю незалежно від ОС; не вникаючи тут більше технічних деталей, здається, що ваша ОС може не "підтримувати" всі або деякі Fnклавіші вашої клавіатури , див., наприклад:


1
Дякую, цікава інформація про клавіші Fn. Насправді я хочу знайти, яку частину операційної системи scancodeпов’язано з, наприклад, "keycode 238".
soroosh

3
Можливо, ця стаття може допомогти вам направити в правильному напрямку? «Ядро має свій власний scancodeдля keycodeвідображення таблиці, тому він відображає певний скан до клавіатурним Ви можете подивитися в /usr/include/linux/input.h , щоб побачити , що ваше ядро використовує для Scancode до відображення ськана - коди. - це називається keymap. "
горіх про natty

1
Ця стаття є досконалою. Це те, що я шукаю
soroosh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.