Ich versuche umzuschaltenswitchInDirection()von einem Fenstermanager (dwm, geschrieben in C). Da es anscheinend keine Möglichkeit gibt, Synergy-Aktionen von der Kommandozeile aus zu steuern, habe ich versucht, entsprechende Tastenkombinationen vom WM aus auszulösen.
Szenario: Bei einem super+,
(Komma)-Ereignis, das vom WM abgefangen wird, sollte eine weitere Tastenkombination ausgelöst werden, auf die Synergys wartet. Aus irgendeinem Grund XTestFakeKeyEvent
funktionierte (xlib-Funktion) überhaupt nicht, und die Simulation eines Tastendrucks XSendEvent
funktioniert nicht mit Modifikatoren, also musste ich einen Systemaufruf an xdotool durchführen:
xdotool keyup comma key control+alt+shift+F11 // note the required comma key up;
Es scheint als POC zu funktionieren, aber irgendwann wird es einen Segmentierungsfehler in Synergys verursachen. Beachten Sie, dass das Auslösen derselben Tastenkombination ohne xdotool nicht zu einem Segmentierungsfehler führt.
Welche Optionen habe ich, wenn überhaupt?
Bearbeiten:
Eine naheliegende Lösung wäre, das super+,
Ereignis zunächst mit Synergy abzuhören und dort die Logik zu handhaben (ob Bildschirm wechseln oder eine andere Tastenkombination an dwm senden). Dies sollte funktionieren, impliziert aber unterschiedliche dwm-Konfigurationen für Server und Client, da dies super+,
im Client weiterhin von dwm gehandhabt werden sollte (sonst würde die Steuerung des Clients über seine native Tastatur nicht wie erwartet funktionieren).