Controle a sinergia programaticamente

Controle a sinergia programaticamente

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

Cenário: no super+,evento (vírgula), que é capturado pelo wm, ele deve disparar outro keycombo que o synergys está escutando. Por algum motivo XTestFakeKeyEvent(função xlib) não funcionou, e simular o pressionamento de tecla XSendEventnão funciona com modificadores, então 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 causará falha de segurança nas sinergias. Observe que acionar o mesmo keycombo sem xdotool não resulta em segfault.

Quais opções eu tenho, se houver?

Editar: uma solução óbvia seria ouvir o super+,evento com sinergia em primeiro lugar e lidar com a lógica lá (seja trocando de tela ou enviando 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 através de seu teclado nativo não funcionaria como esperado).

informação relacionada