Desbloqueia a tecla Fn no emacs (console)

3

Quando eu executo o emacs24 no console, a tecla Fn em ambos os laptops da Lenovo define a marca de seleção (da mesma forma que C-SPC ). Isso é um comportamento muito louco, pois eu preciso da tecla Fn para alterar o brilho da tela, o volume do som, etc.

Como desassociar a tecla Fn para que ela não faça nada no emacs?

EDITAR:

Se eu pressionar C-h k Fn no emacs, recebo exatamente a mesma saída como se estivesse pressionando C-h k C-SPC :

C-@ runs the command set-mark-command, which is an interactive compiledLisp function.
It is bound to C-@, C-SPC.

(set-mark-command ARG)
...

Se eu executar o acpi_listen e pressionar a tecla Fn, recebo a saída:

^@

Esta é a mesma saída que recebo de acpi_listen se eu pressionar C-SPC ou C-@ (Ctrl + AltGr + 2). Ou seja: todos eles estão registrados como o mesmo evento acpi.

Descobrindo isso, tentei remover C-@ . A única maneira de fazer isso funcionar é com isso:

 (global-set-key (kbd "\C-@") 'ignore)

E isso:

 (global-set-key (kbd "\^@") 'ignore)

Em ambas as instâncias que impedem que C-SPC funcione também (!) tentei re-definir C-SPC com:

(global-set-key (kbd "C-SPC") 'set-mark-command)

Mas isso não entra em vigor.

Depois disso, posso refinar minha pergunta para isso:

Dando que C-SPC e Fn estejam registrados como o mesmo evento acpi, posso fazer o emacs distinguir entre eles?

(Note que isto é apenas um problema no console. O Emacs não pega a tecla Fn na minha máquina X ...)

    
por MajorBriggs 22.03.2014 / 18:09

1 resposta

2

É provável que essa solução usando dumpkeys, loadkeys e showkey funcione em outras instâncias de teclas de função, sendo interpretadas de formas inesperadas por programas em execução no Linux Virtual Console.

Encontre o código-chave da combinação de teclas ou chaves que está causando problemas ao executar:

 $ sudo showkey

... e apertar a tecla. Na minha instância, acertar Fn deu a saída 143.

Para impedir que Fn seja interpretado como algo pelos programas no console, adicione este /etc/rc.local:

(dumpkeys | grep keymaps; echo "keycode 143 =") | loadkeys

143 deve, naturalmente, ser substituído pelo código de tecla da chave relevante em questão. Eu também tive um problema com Fn + LeftArrow (significou para baixar o volume) produzindo um til, então eu peguei o código para aquele combo também, e coloquei outra linha para que em /etc/rc.local.

Note que isto não impede o comportamento normal das funções Fn (mudança de volume, brilho, etc.), ele apenas impede que as teclas de função sejam interpretadas como algo por programas como o emacs.

    
por 27.03.2014 / 00:26