Определение сочетаний клавиш с помощью клавиши Fn

17

Я привык нажимать Fn+ Leftдля имитации Homeклавиши и Fn+ Rightдля End.

На клавиатуре с физическими Homeи Endклавишами эти Fnсочетания клавиш не работают.

Как я могу сопоставить пользовательские Fnсочетания клавиш в Ubuntu Linux?

MOX
источник
1
возможная копия Bind мультимедийных ключей . Возможно, это не точный дубликат в описании проблемы, но он решается тем же базовым процессом.
Даниэль Андерссон
Кто-нибудь использует современные (2018) ноутбуки, такие как HP Specter x360 (хотя у него есть отдельные клавиши PgUp и т. Д.) И Dell XPS, если функциональная клавиша обнаружена, как и другие клавиши?
MycrofD
1
Я использую Lenovo Thinkpad X1 Carbon с Fnключом, который определяется как код ключа 151 xev. Пока Fnнажата Leftи Rightклавиши не выдают никаких событий. Fn+F2не производит никаких событий, но работает как ожидалось - уменьшает громкость.
Suor

Ответы:

16

В отличие от модификаторов, таких как Alt и Ctrl, нажатие клавиши Fn никогда не передается операционной системе. Клавиша просто изменяет коды сканирования других клавиш, поэтому нажатие Fn+ Rightбудет эмулировать клавишу Завершения, даже если она может не существовать физически, но ОС для них не различима. Это поведение контролируется исключительно электроникой клавиатуры и поэтому не может быть изменено без вмешательства в схему или микроконтроллер.

Маркс Томас
источник
2
Существует одна операционная система и компьютер, которые, безусловно, являются исключением из этого правила, это ноутбуки Mac. Вы можете изменить этот ключ на самом деле, используя Karabiner. Также ThinkPad отправляет этот ключ в операционную систему, но он не является ключом-модификатором, как в Mac.
Уильям
2
Это неправда. xevпоказывает Fnнажатия клавиш.
Suor
1
Что ж, на моем компьютере Dell с Debian 10 xevничего не отображается при нажатии клавиши Fn.
Пьер
12

В большинстве систем невозможно определить сам Fnключ, но вы можете попробовать использовать:

$ xev | grep --line-buffered keysym

выяснить какие ключи Fn-Leftи Fn-Rightсделать отправку. ( grepПросто уменьшает шум.)

Если вам повезет, эти нажатия клавиш отправят неважные нажатия клавиш на машину, которые вы затем сможете переназначить.

Например, в моей системе xevпоказано, что мое Fn-Leftнажатие клавиши фактически отправляет XF86AudioPrevсобытие:

state 0x0, keycode 173 (keysym 0x1008ff16, XF86AudioPrev), same_screen YES,

Я могу легко переназначить это, чтобы перевести в Homeключевое событие:

$ xmodmap -e 'keysym XF86AudioPrev = Home'

Надеюсь, вы сможете сделать то же самое для End, PageUp и PageDown.

К сожалению, если xev не получает ничего уникального при нажатии, Fn-Leftвам не повезло.

Жаль, что Fnнажатия клавиш не отправляются напрямую, как и другие клавиши-модификаторы. Если бы они были, у нас было бы гораздо больше возможностей для настройки их значения с помощью программного обеспечения.

joeytwiddle
источник
К сожалению, fn на моем ноутбуке не регистрируется с событиями «вверх» и «вниз» так же, как и другие ключи, не позволяя этому работать корректно для клавиши-модификатора. Вы можете переназначить его другим нажатием клавиши, хотя.
Уильям
5

Я открыл xevв терминале. Он определяет , когда я нажимаю Shift, Ctrl, Altи Win( Super), но когда я нажал на Fnкнопку он не обнаружит.

Таким образом, программное обеспечение не имеет ничего общего с Fnключом; решать, какой ключ будет отправлен программному обеспечению (например, ключ Homeили End), решать аппаратному обеспечению .

Таким образом, ваша клавиатура уже должна иметь это, чтобы иметь возможность сделать это.

biggles5107
источник