Como emular a tecla Fn (tecla de função) no xte

3

xte faz parte do pacote xautomation. Após horas de man pages lendo e procurando por documentação ou exemplos de trabalho, eu ainda não consigo fazer o xte para emular um keypress Fn - F7 .

xte 'keydown Meta_L' 'key F7' 'keyup Meta_L'

Eu tentei Meta_L, Meta_R, Multi_key, tecla F7, keydown F7 e depois tecla F7. Nenhuma combinação parece funcionar.

Alguma ideia de como eu posso emular uma combinação de teclas com uma tecla Fn de um comando / script?

    
por komputes 13.02.2012 / 20:11

1 resposta

2

Geralmente, é muito complicado ou quase impossível usar xte para simular os pressionamentos de tecla fn + f, pois a própria tecla fn não se registra em xev e, com muita frequência, as teclas fn ou fn não são visto pelo kernel como outras teclas normais do teclado.

Resumo

Na verdade, eu consegui configurar três combinações de teclas (fn + f1, fn + f2 e fn + f3), porque pressionar cada uma dessas combinações resultou no kernel emitindo a caixa de diálogo 'chave desconhecida pressionada ... set keycodes'. Isso significava que eu era capaz de definir os códigos de teclas e, em seguida, ir para o diálogo de atalhos de teclado e ver se um keysym foi atribuído, por exemplo, XF86Paste. Se assim for, agora era possível atribuir um programa para lançar a partir deles e agora também era possível usar xte para emitir o seguinte comando, que era o equivalente a pressionar fn + f1 para mim:

xte 'keydown XF86Paste' 'keyup XF86Paste'

Pode ser uma peculiaridade de um dos meus laptops que eu possa definir três dessas combinações fn como teclas multimídia normais como mostradas aqui , mas explicarei o processo de qualquer maneira para você e as etapas específicas que segui.

Explicação completa

Você pode não ser capaz de definir as chaves, como normalmente você não pode, mas duas ou três podem ser configuradas, como descobri. Pressione fn e cada uma das teclas de função, por sua vez (f1-f12), enquanto olha para o log do kernel:

tail -f /var/log/kern.log

Se eles forem reconhecidos, você verá um scancode do kernel:

atkbd serio0: Unknown key pressed (translated set 2, code 0xa7 on isa0060/serio0).   
kernel: [22751.972058] atkbd serio0: Use 'setkeycodes e027 <keycode>' to make it known.

Agora, por exemplo, você deve configurar essas combinações de teclas com as informações fornecidas pelo kernel - por exemplo, usar o código de código do kernel e um código de sua escolha (preferencialmente um número alto para não interferir em mais nada). Veja seus códigos de tecla atuais com sudo dumpkeys | grep ^keycode , como indicado neste útil artigo wiki do Ubuntu .

É claro que, como fn não é reconhecido como uma chave, mas apenas em combinação com outra chave, a combinação de teclas fn + f3, por exemplo, é tratada como uma chave única e, portanto, pode ser definida como outros botões multimídia únicos:

sudo setkeycodes e027 135 

O comando acima deve ser inserido separadamente para cada uma das combinações de teclas que você deseja definir, e deve ser colocado em /etc/rc.local (sem o prefixo sudo) se você quiser que eles sejam carregados na inicialização.

Agora, você deve verificar se houve um X keysym associado a seus novos códigos de teclas indo em atalhos de teclado e verificando se a combinação de teclas, por exemplo, fn + F1, pode ser configurada. Se puder, um keysym, como XF86Paste, aparecerá e o atalho poderá ser configurado para iniciar qualquer programa que você desejar.

Agora, tudo que você precisa fazer para testar isso com xte é observar o keysym (por exemplo, XF86Paste) que você viu na caixa de diálogo de atalhos de teclado para uma combinação específica (por exemplo, fn + f1) e digite o comando apropriado:

xte 'keydown XF86Paste' 'keyup XF86Paste'

Isso é o equivalente a você pressionar e pressionar fn + f1.

Se você tiver definido um programa para ser iniciado com a combinação de teclas (fn + f ...) associada ao keysym, o evento xte iniciará esse programa e você saberá que a configuração funcionou.

Conclusão

Esta é uma maneira de definir as combinações de teclas fn + Função, mas só será possível para o seu laptop se o kernel reconhecer pelo menos uma das combinações como uma chave desconhecida, mas configurável. Apenas fn + f1, fn + f2 e fn + f3 foram configuráveis para mim, mas serão diferentes para o seu computador. Se você quiser experimentar modificar as ações do botão "sleep" fn + function key, consulte este artigo do Ubuntu wiki , mas pode não estar completamente atualizado.

    
por user76204 26.11.2012 / 01:00