Como simular a entrada do teclado?

15

Essa é a maior coisa que me impede de desfrutar do Ubuntu / Linux.

Idealmente, eu gostaria de poder executar meu script AutoHotKey no Ubuntu, mas não tive muita sorte em trabalhar com o Wine.

Aqui está o que estou fazendo no AHK (usar modificadores extras também funciona, Shift+ Alt+ lé Shift+ right).

!l:: Send, {Right}
+!l:: Send, +{Right}
^!l:: Send, ^{Right}
^+!l:: Send, ^+{Right}

Eu tentei o AutoKey, mas não estava consumindo entrada, remapeando Alt+ Ipara a seta para a direita funcionou, mas ainda executava Alt+ I, que às vezes seleciona um item no menu do aplicativo.

O mais próximo que cheguei foi xbindkeysda configuração das teclas de atalho, o que parece funcionar muito bem. E xvkbdpara simular entrada; esta parte é realmente de buggy; ele não funciona em todos os programas e me faz perder muito o foco, entre outros problemas.

Para quem quer saber o que estou tentando fazer: uso I J K Lcomo teclas de seta enquanto Altestiver inativo.

Farzher
fonte
Hey Stephen, estou procurando exatamente a mesma coisa. Você conseguiu fazer isso?
lolmaus - Andrey Mikhaylov

Respostas:

18

Eu nunca usei o xvkbd, mas existem outros dois ótimos programas para simular a entrada do teclado que eu gosto e uso. Um é xtee o outro é xdotool.

sudo apt-get install xautomation xdotool  

Ambos xdotoole xtesão muito semelhantes, mas desde que eu uso xteo máximo que eu vou para aquele.

xte:

A sintaxe mais básica para xteé:

xte 'command key/mousebutton/xyCoordinates'

xte ele pode fazer muito mais do que apenas criar entradas de teclado, mas também pode mover o mouse e simular o pressionamento de botões do mouse, entre outras coisas.

Exemplos de sintaxe:

  • Para chamar uma única tecla, pressione: xte 'key keyName'

  • Para chamar uma combinação de teclas: xte 'keydown keyName' 'keydown secondKeyName' 'keyup keyName' 'keyup secondKeyName

  • Para chamar um botão do mouse: xte 'mouseclick buttonNumber'(Você pode encontrar os números dos botões xev)

  • Para mover o mouse: xte 'mousemove xCoordinate yCoordinate'

  • E mais! Lerman xte

Keynames:

Aqui está uma lista de nomes de chave (exceto os óbvios):

Home
Left
Up
Right
Down
Page_Up
Page_Down
End
Return
BackSpace
Tab
Escape
Delete
Shift_L
Shift_R
Control_L
Control_R
Meta_L
Meta_R
Alt_L
Alt_R
Multi_key  
Super_L  
Super_R

Lendo:

Você também pode estar interessado em ler:

Como posso alterar o que as teclas do meu teclado fazem? (Como posso criar comandos / atalhos de teclado personalizados?)

Como remapear certas chaves ou dispositivos?

Seth
fonte
Parece bom, mas não está funcionando xbindkeys. Quando xte 'key a'é chamado xbindkeys, apenas faz meu cursor piscar quando pressiono minha tecla de acesso. xte 'key a'na linha de comando funciona. gnome-terminalchamado de xbindkeysobras. Não sei onde está o problema.
Farzher
Realmente não parece que xteestá tentando enviar o evento chave para a janela focada quando chamado de xbindkeys...
Farzher
@StephenSarcsamKamenar Eu mesmo tive alguns problemas, mas pela minha experiência isso foi um xbindkeysproblema. Para mim, eu tenho que pressionar a combinação de teclas exatamente ao mesmo tempo xbindkeyspara enviar o comando. YMMV.
Seth
Talvez um xbindkeysproblema; xdotooltrabalhou com ele, mas quando eu mantinha pressionada uma tecla, ela nunca a repetia. Quais são as boas alternativas para xbindkeys?
Farzher
11
@StephenSarcsamKamenar Xmodmap é explicado nesta resposta e também nesta . Isso é o que eu usaria se xbindkeysnão fez pré-forma bem o suficiente (o que não acontece com XTE .. pelo menos para mim.)
Seth