Definindo atalhos de teclado envolvendo a tecla Fn

17

Estou acostumado a pressionar Fn+ Leftpara simular a Hometecla e Fn+ Rightpara End.

Em um teclado com teclas físicas Homee End, o uso desses Fnatalhos de teclado não funciona.

Como posso mapear Fnatalhos de teclado personalizados no Ubuntu Linux?

mox
fonte
1
possível duplicação de chaves multimídia Bind . Talvez não seja uma duplicata exata na descrição do problema, mas é resolvida pelo mesmo processo subjacente.
Daniel Andersson
Alguém está usando laptops modernos (2018) como o HP Spectre x360 (embora tenha teclas PgUp etc separadas) e o Dell XPS sabe se a tecla Function é detectada como as outras teclas?
MycrofD 16/01
1
Estou usando o Lenovo Thinkpad X1 Carbon com Fnchave, que é detectada como código-chave 151 por xev. Enquanto Fné pressionado Lefte as Rightteclas não produzem eventos. Fn+F2não produz eventos, mas funciona como esperado - reduz o volume.
Suor

Respostas:

16

Ao contrário de modificadores como Alt e Ctrl, pressionar a tecla Fn nunca é comunicado ao sistema operacional. A tecla modifica meramente os códigos de scape de outras teclas, pressionando Fn+ Rightemularia uma tecla End, mesmo que ela não exista fisicamente, mas elas são indistinguíveis pelo sistema operacional. Esse comportamento é controlado exclusivamente pelos componentes eletrônicos do teclado e, portanto, não pode ser alterado sem mexer no circuito ou no microcontrolador.

Marcks Thomas
fonte
2
Há um sistema operacional e um computador que são definitivamente uma exceção a essa regra e são os laptops mac. Você pode modificar essa chave usando o Karabiner, na verdade. Os thinkpads também enviam essa chave para o sistema operacional, mas não é uma chave modificadora, como nos macs.
William
2
Isso não é verdade. xevmostra Fnpressionamentos de tecla.
Suor
1
Bem, na minha máquina Dell com um Debian 10, xevnão mostra nada quando a tecla Fn é pressionada.
Pierre
12

Na maioria dos sistemas, não é possível detectar a Fnchave em si, mas você pode tentar usar:

$ xev | grep --line-buffered keysym

para descobrir quais chaves Fn-Lefte Fn-Rightenviar. (O grepjusto reduz o ruído.)

Se você tiver sorte, esses pressionamentos de tecla enviarão pressionamentos de tecla sem importância para a máquina, que você poderá remapear.

Por exemplo, no meu sistema, xevmostra que meu Fn-Leftpressionamento de tecla envia um XF86AudioPrevevento:

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

Posso facilmente remapear isso para traduzir em um Homeevento chave:

$ xmodmap -e 'keysym XF86AudioPrev = Home'

Espero que você consiga fazer o mesmo para End, PageUp e PageDown.

Infelizmente, se o xev não receber nada de exclusivo ao pressionar Fn-Left, você estará sem sorte.

É uma pena que as Fnteclas pressionadas não sejam enviadas diretamente como as outras teclas modificadoras. Se fossem, teríamos muito mais poder para configurar seu significado por meio de software.

joeytwiddle
fonte
Infelizmente, o fn no meu laptop não se registra com os eventos de tecla acima e abaixo da mesma maneira que outras chaves, impedindo que isso funcione corretamente para uma tecla modificadora. Você pode remapear para outra tecla, no entanto.
William
5

Eu abri xevem um terminal. Ele detecta quando pressiono o Shift, Ctrl, Alt, e Win( Super), mas quando eu pressionou a Fnchave não detectá-lo.

Portanto, o software não tem nada a ver com a Fnchave; depende do hardware decidir qual chave será enviada ao software (por exemplo, a tecla Homeou End).

Portanto, seu teclado já deve ter para poder fazer isso.

biggles5107
fonte