Контроль синергии программно

Я пытаюсь переключить 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 в синергии. Обратите внимание, что запуск одной и той же комбинации клавиш без xdotool не приводит к segfault.

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

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

0 ответов

Другие вопросы по тегам