como enviar o teclado para o host correto ao compartilhar um teclado entre vários hosts

1

Eu tenho dois hosts (windows-7) rodando lado a lado. Eu uso Mouse sem Bordas para usar um único mouse / teclado (usando Synergy eu tenho o mesmo problema, então tudo aqui se aplica também).

Em cada host, estou executando alguns scripts do AHK que fornecem alguns atalhos de teclado. Então, se minha configuração é assim:

  • Script A - AHK do host A - teclado A
  • Host B - Script AHK B - teclado A (via Mouse sem bordas / sinergia)

Enquanto digita:

  • Host A: minha tecla de atalho (por exemplo, o CapsLock-S é sempre manipulado pelo AHK-script-A (obviamente)
  • Host B: este é o problema ... enquanto digito neste host, minha palavra-chave CapsLock-S ÀS VEZES é manipulada por AHK-script-B (a saída desejada) e às vezes por AHK-script-A.

Ao digitar no Host B, apenas atalhos AHK B devem ser acionados, e não um AHK A (no Host A).

Isso provavelmente depende da ordem em que alguns programas (ahk etc) foram executados em cada host, ou em qual aplicativo foi enfocado ou algo assim, mas não tenho idéia.

Alguém tem alguma pista sobre como fazer isso funcionar? Ou como encontrar algum determinismo sobre por que às vezes funciona e às vezes não?

    
por albert_vad 11.11.2015 / 17:17

2 respostas

0

Eu não estou familiarizado com os programas que você mencionou, embora eu ache que entendi a configuração. Eu provavelmente depuraria isso vendo se as teclas digitadas chegam ao script AHK ou não e qual script está interceptando-as.

Duas ferramentas fáceis que eu posso começar com ...

1) Coloque um til na frente da definição da tecla de atalho que permite que o toque de tecla passe. Substitua o código por uma dica simples para mostrar o que está sendo executado. Veja quais as teclas que passam e quais são bloqueadas. Veja se adicionar o til em ambos os sistemas permite que os pressionamentos de tecla passem para o sistema que não está sendo executado de outra forma.

2) Abra as janelas de script em A e B e vá para o log de pressionamento de tecla de cada. Envie as chaves que não parecem estar funcionando e veja se elas estão indo para o script de interesse (presumivelmente, elas não são).

O indeterminismo que você mencionou é interessante. Na Área de Trabalho Remota e no VNC, onde você tem o sistema A interceptando as teclas digitadas, você está tentando acessar o Sistema B, ou possivelmente o contrário, o comportamento é bastante determinístico ou pode ser alterado nas configurações do software para quais chaves são permitidas para passar para o host remoto e quais não são.

Se você encontrar algo que não funcione corretamente, mas que seja pelo menos determinista, há outras maneiras de contornar isso se suas duas caixas puderem se comunicar, ou verificar onde está a posição do mouse, por exemplo, e não execute se estiver na borda ou após a borda em um monitor, por exemplo.

    
por 15.11.2015 / 08:46
0

Talvez seja possível usar o comando #If e tornar as teclas de atalho específicas para cada host supondo que haja alguma forma de distinguir cada host usando uma das variáveis internas do sistema operacional link (A_ComputerName ou A_UserName)

Mais sobre #Se aqui link

    
por 22.11.2015 / 15:58