Я привык нажимать Fn+ Leftдля имитации Homeклавиши и Fn+ Rightдля End.
На клавиатуре с физическими клавишами Homeи Endэти Fnсочетания клавиш не работают.
Как можно назначить пользовательские сочетания Fnклавиш наУбунтуЛинукс?
решение1
В отличие от модификаторов, таких как Alt и Ctrl, нажатие клавиши Fn никогда не передается операционной системе. Клавиша просто изменяет скан-коды других клавиш, поэтому нажатие Fn+ Rightбудет эмулировать клавишу End, даже если она физически не существует, но они неразличимы ОС. Это поведение контролируется исключительно электроникой клавиатуры и, следовательно, не может быть изменено без вмешательства в схему или микроконтроллер.
решение2
В большинстве систем невозможно определить 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нажатия клавиш не отправляются напрямую, как другие клавиши-модификаторы. Если бы они были, у нас было бы гораздо больше возможностей для настройки их значения через программное обеспечение.
решение3
Я открыл xev
в терминале. Он определяет, когда я нажимаю Shift, Ctrl, Alt, и Win( Super), но когда я нажимаю Fnклавишу, он ее не определяет.
Таким образом, программное обеспечение не имеет никакого отношения к ключу; решение о том, какой ключ отправить программному обеспечению (например, ключ или ) Fn, принимается аппаратным обеспечением .HomeEnd
Поэтому на вашей клавиатуре уже должна быть эта функция, чтобы вы могли это сделать.