Utilizando o xdotool para emular entrada e saída de periféricos

O xdotool é uma ferramenta de instruções que permite aos programadores emularem o pressionamento de teclas do teclado e do mouse, além de manipular janelas. Esse post tem a intenção de dar uma introdução à utilização dessa ferramenta em um ambiente Linux. Para baixar a ferramenta basta executar o seguinte comando:

sudo apt-get install xdotool

A sintaxe dos comandos xdotool é simples e direta com a xdotool seguida de opções e argumentos. Search: O comando search procura por uma janela que foi informada nos argumentos e se ele for o único ou último comando da cadeia ele irá retornar o ID da janela. Esse comando pode buscar a janela através de 3 formas: pelo nome se for informada opção –name; pela classe da janela se for informada a opção –class; e pelo nome da classe se for informada a opção –classname. Para procurar uma janela através do seu nome, execute:

xdotool search --name "nome_janela"

Uma outra opção deste comando é a –sync, ela bloqueia o xdotool até que tenha ocorrido algum resultado. O comando a seguir procura por uma janela através do seu nome e espera até que a janela tenha sido encontrada.

xdotool search --sync --name "nome_janela"

Este comando pode ser usado para que o xdotool aguarde o tempo necessário até que a janela de um programa seja carregada. Exec: O comando exec executa um programa. O –sync é sua única opção.

 xdotool exec --sync gcalctool  

obs.: Esta opção não pode ser utilizada para abrir arquivos ou páginas web, para isso deve ser utilizada a ferramenta gnome-open. Sleep: O comando sleep faz o código esperar por um período específico que foi informado como argumento. Abaixo um exemplo de uma pausa de 1 segundo.

xdotool sleep 1

Type: O comando type serve para simular uma digitação de texto, ele recebe como argumento o texto que será digitado. Uma das opções desse comando é o –delay na qual se deve informar o tempo em milissegundos que irá demorar entre a digitação de uma tecla e outra, determinando assim a velocidade que o texto será digitado. A seguir um exemplo que digita uma palavra com tempo de 215ms entre caracteres.

xdotool type --delay 215 "texto"

Key: O comando key serve para simular o pressionamento de alguma tecla ou conjunto de teclas . Ele recebe como argumento a tecla que será pressionada. Por exemplo o atalho Ctrl+c pode ser simulado pelo comando a seguir.

xdotool key "ctrl+c"  

Para entendermos na prática o funcionamento dos comandos do xdotool que foram explicados vamos supor que precisamos de um script que abra o libreoffice, procure pela janela, digite um texto, espere 1 segundo e salve esse arquivo em qualquer lugar com qualquer nome.

 #abrir o libreoffice  
 xdotool exec loffice --writer  
 #procurar pela janela  
 xdotool --sync --name "Sem título 1"   
 #sem título 1 é o nome da janela padrão que o libreoffice abre  
 #digita o texto  
 xdotool type --delay 215 "texto"  
 #espera 1 segundo  
 xdotool sleep 1  
 #salva o arquivo  
 xdotool key "ctrl+s"  
 #espera 1 segundo para garantir que a janela de salvamento irá abrir antes do próximo comando  
 xdotool sleep 1  
 #pressiona enter para confirmar e salvar o arquivo  
 xdotool key "KP_Enter"  

Referências: http://www.ibm.com/developerworks/br/linux/library/x-xdotool/ http://www.semicomplete.com/projects/xdotool/xdotool.xhtml

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s