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).