Macro do teclado com xvkbd
Por - Diego HenriqueNeste artigo abordarei sobre a ferramenta de comando xvkbd. O xvkbd é a ferramenta de linha de comando que permite que você envie um clique do mouse ou sinal chave de teclado.
Este artigo é útil tanto para usuário comun executar tarefas rotineiras, quanto para programadores fazer uso - sendkey(s).
Em programação cabe simular, emular, invocar a tecla do teclado em uma opção da barra de menu ou barra de ferramenta da Interface Gráfica(GUI) comumente conhecido como "Front-end" quando desenvolvido sobre um software ja existente para console [terminal].
Você pode usar o xvkbd para executar a macro de teclado.
-text
Envie a string para a janela focada.
Se esta opção for especificada, o xvkbd não abrirá sua janela e terminará logo após o envio da string.
Por exemplo, digite as palavras "Hello World" com xvkbd no seu terminal[console]:
xvkbd -text "Hello World"
xvkbd -secure -text 'Hello World'
Xvkbd têm sintaxe de tecla(s) reservada
\r Voltar
\t Tab
\e Esc (Escape)
\b Backspace
\d Delete (Excluir)
\S Shift (modificar o próximo caractere)
\C Ctrl (modificar o próximo caractere)
\A Alt (modificar o próximo caractere)
\M Meta (modificar o próximo caractere)
\mdigit clique do botão do mouse especificado. Assim:
\m1 clique do botão esquerdo do mouse
\m2 clique do botão do meio do mouse
\m3 clique do botão direito do mouse
O xvkbd aceita keysym como valores de entrada de acordo com a página de manual.
\[keysym] keysym é sintaxe chave para ambiente X11[xorg]. Exemplo do "Enter":
xvkbd -text "Hello\[0xff0d]World"
Dentro da sua sessão X11, abra um terminal[console] e digite xev, em seguida pressione qualquer tecla(s) para obter o valor keysym associado.
Outra opção é colocar a letra ou número correspondente a tecla entre os colchetes. Como exemplo, a tecla "Enter":
xvkbd -text "Hello\[Enter]World"
Para dar foco a uma janela em questão, o qual queremos invocar uma tecla definida como função do aplicativo/programa, devemos utilizar a opção:
-window <nome_da_janela>
Especifique a ID (valor hexadecimal com base em '0x' ou valor decimal), o nome (nome da instância ou nome da classe) da janela para definir o foco de entrada.
Um exemplo fictício com "ID" e outro com "Nome" pode ser visto logo abaixo:
xvkbd -window "0x2200001" -xsendevent -text 'Hello\[Enter]World'
xvkbd -window "urxvt" -xsendevent -text 'Hello\[Enter]World'
Se houver duas ou mais janelas que tenham o nome especificado com esta opção, a janela que for encontrada primeiro será selecionada.
Agora, se a opção -window não for especificado, o xvkbd usará o foco de entrada sob a própria janela que o executa, por exemplo o terminal[console].
-xsendevent
Ele é testado em Linux e Solaris e funcionará também na maioria dos sistemas semelhantes ao UNIX.
O xvkbd funcionará no X11R5 ou X11R6 para usar XSendEvent() para simular eventos de teclado.
Este programa usa Xaw e nenhuma biblioteca especial é necessária.
Você não precisa usar a opção -xsendevent, a versão 1.1 e posterior do xvkbd tentará usar a extensão XTEST na configuração padrão.
Como são aplicativos comuns pode-se ignorar os eventos de teclado gerados com -xsendevent, a menos que seja realmente necessário.
Se a extensão XTEST não for suportada pelo servidor X, o xvkbd mudará automaticamente para o modo - isso indica que você precisará definir -xsendevent no comando.
O recurso xvkbd.xtest: false tem a mesma função. Caso deseje pode definir diretamente, basta editar o arquivo XVkbd que fica em seu diretório pessoal[home] ou no /etc/X11/app-defaults/.
Então você pode ignorar a opção -xsendevent em seu comando se a sessão X der suporte a XTEST. Mas caso você seja um programador, nunca se sabe em que ambiente de sessão X o teu programa(GUI,"Front-end",script) vá rodar, recomendo sempre colocar esta opção.
Conclusão!
Especifique o nome da janela para definir o foco de entrada -window <nome_da_janela>. Para usar esse recurso, será usada com a opção -xsendevent.
Se você quiser definir o foco de entrada para algum widget, você pode escrever com a opção -widget <nome_do_widget>, ao invés de optar por -xsendevent. Para evitar confusão, o nome do widget deve corresponder a um único widget do cliente(janela). Enquanto -xsendevent é precedido com a opção -text [string|síntaxe].
Por exemplo, -widget <nome_do_widget>
xvkbd -window "xarchive" -widget "searchText" -text "\Ca\Ckabc\r"
Isto irá inserir a string "abc" no campo Search de uma janela xarchive.
Agora, um exemplo com, -xsendevent -text [string|síntaxe]
xvkbd -window "leafpad" -xsendevent -text "\Ca\Ckabc\r"
Isto irá inserir a string "abc" na area Text de uma janela do editor de texto leafpad.
NOTA - Para usar o recurso -widget, o cliente(janela) deve suportar o protocolo Editres.
Dica! - "Salve o comando complicado como uma variável de ambiente".
Exemplo:
export KEYPRESS="xvkbd -xsendevent -secure -text"
- então a variável "$KEYPRESS" se expande para este comando.
Truque de macro
Você pode criar um
arquivo chamado "macro.tmp" no seu diretório pessoal[home]. Para criar uma macro, basta que edite o arquivo macro.tmp e coloque nele sintaxe da tecla.
Antes que me esqueça, quero deixar linkado um artigo noutro blog que merece atenção, pois esta muito bem escrito e riquissímo de informações, caso queira saber mais sobre o assunto, dê uma lida em: https://daemoniolabs.wordpress.com/2012/09/17/keyloggers-showkey-e-capturando-eventos-do-teclado-vi-devinputeventx/
Comentários
Postar um comentário