Envie pressionamentos de tecla para duas janelas ao mesmo tempo

2

O que eu quero fazer: ser capaz de digitar as teclas pressionadas enquanto um programa está em foco, mas também enviar as mesmas teclas para um segundo programa na outra tela.

O que eu tentei: xvkbd - Eu tentei várias maneiras de usar isso, e nenhuma parece funcionar corretamente para o que eu preciso. O que eu olhei, mas não posso fazer: keyboardcast - eu não posso para a vida de mim encontrar os arquivos de origem e há apenas arquivos deb em todos os lugares para isso, sem RPM. (Eu corro o Fedora 21)

Aplicativo real: O que pretendo usar para isso, se for inserir minha senha em vários clientes EvE-Online de uma só vez, para tornar o login em minhas contas um pouco mais simplificado. Eu já tenho um script que me permite iniciá-los todos de uma vez, nos monitores adequados (usando wmctrl), mas eu ainda tenho que digitar senhas uma de cada vez. Como uso a mesma senha para todos os 3, é mais fácil clonar as teclas digitadas, se possível.

Eu tive algum sucesso escrevendo no xvkbd -window $ WID -text "REDACTED \ r" no final do script que inicia o programa e usa o wmctrl para definir sua localização (o windowid para o WID é recuperado por meio do wmctrl) .

Se eu usar este script:

 #!/bin/bash
 WINEDEBUG=-all wine64 "/home/REDACTED/.wine/drive_c/Program Files/CCP/EVE/bin/exefile.exe" &
 PID=$!
 while [ "$WID" == "" ]; do
  WID=$(wmctrl -lp | grep $PID | cut "-d " -f1)
 done
 wmctrl -i -r $WID -e 0,0,1680,1050 &&
 sleep 2
 xvkbd -window $WID -text "REDACTED"\r"

Eu posso automatizar com sucesso o processo de login. Simplesmente rodando o script irá abrir o cliente do jogo, movê-lo para qualquer monitor que eu disser e redimensioná-lo para o que eu disser, ele então espera 2 segundos e depois canaliza minha senha através do xvkbd e me conecta.

Eu também tive sucesso em fazer o script abrir uma caixa para eu digitar minha senha, para que meu PW não seja salvo em um arquivo em algum lugar.

No entanto, quando tento fazer isso com dois clientes, nenhum deles recebe o texto. Se eu compensar o tempo de espera dos dois, entre quando a janela é feita e o xvkbd é usado, somente aquele com o maior tempo de espera recebe a informação.

Estou com a impressão de que pode ter algo a ver com o foco da janela, mas fazer com que o wmctrl defina o foco para cada janela (wmctrl -a $ WID) e então fazer xvkbd passar, parece não funcionar, se eu não Para compensar os temporizadores de sono, nenhum programa o obtém, se eu fizer, somente aquele que tiver um temporizador mais longo o faz. Eu tentei compensá-los por pouco a 1seg e até 10seg e é o mesmo.

Existe alguma outra maneira de fazer isso? se sim como? Estou faltando alguma coisa no meu script em algum lugar? ou isso simplesmente não é possível? Obrigado.

    
por Josh Raymond 09.04.2015 / 10:51

1 resposta

0

A fonte pode ser encontrada aqui .

Extraia o pacote em /usr/local/src :

tar -xvf keyboardcast_0.1.1.orig.tar.gz
cd keyboardcast-0.1.1/
make
su -
make install

O executável será colocado em /usr/local/bin .

    
por 22.04.2016 / 08:51