Управляйте синергией программно

Управляйте синергией программно

Я пытаюсь переключитьswitchInDirection()из оконного менеджера (dwm, написанный на c). Поскольку, похоже, нет возможности управлять действиями синергии из командной строки, я попытался запустить соответствующие комбинации клавиш из wm.

Сценарий: при super+,событии (запятая), которое перехватывается wm, он должен запустить другую комбинацию клавиш, которую прослушивает synergys. По какой-то причине XTestFakeKeyEvent(функция xlib) вообще не сработала, а имитация нажатия клавиш с помощью XSendEventне работает с модификаторами, поэтому мне пришлось сделать системный вызов xdotool:

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

Кажется, это работает как POC, но в какой-то момент это вызовет segfault в synergys. Обратите внимание, что запуск той же комбинации клавиш без xdotool не приводит к segfault.

Какие у меня есть варианты, если таковые имеются?

Редактировать: Одним из очевидных решений было бы прослушивание super+,события с помощью synergy в первую очередь и обработка логики там (будь то переключение экрана или отправка другой комбинации клавиш в dwm). Это должно работать, но подразумевает разные конфигурации dwm для сервера и клиента, поскольку super+,должно по-прежнему обрабатываться dwm в клиенте (иначе управление клиентом с помощью его собственной клавиатуры не будет работать так, как ожидается).

Связанный контент