Controle a sinergia programaticamente

1

Estou tentando alternar switchInDirection () de um gerenciador de janelas (dwm, escrito em c). Como parece não haver nenhuma maneira de controlar as ações de sinergia a partir da linha de comando, tentei disparar combinações de teclas apropriadas do wm.

Cenário: no evento super+, (comma), que é capturado pelo wm, ele deve disparar outro keycombo pelo qual o synergys está escutando. Por alguma razão XTestFakeKeyEvent (função xlib) não funcionou, e simular keypress com XSendEvent não funciona com modificadores, então eu tive que fazer uma chamada de sistema para xdotool:

xdotool keyup comma key control+alt+shift+F11 // note the required comma key up;

Parece funcionar como um POC, mas em algum momento isso causará segfault em sinergias. Note que disparar o mesmo keycombo sem xdotool não resulta em segfault.

Quais opções, se houver, eu tenho?

Editar: uma solução óbvia seria ouvir o evento super+, com sinergia em primeiro lugar, e lidar com a lógica lá (seja trocar a tela ou enviar outro keycombo para o dwm). Isso deve funcionar, mas implica diferentes configurações de dwm para servidor e cliente, pois super+, ainda deve ser tratado pelo dwm no cliente (caso contrário, controlar o cliente por meio de seu teclado nativo não funcionará como esperado).

    
por laur 01.06.2015 / 15:22

0 respostas