Karabiner: [Feature Request] Stärkung der Zusammenarbeit mit Synergy

Erstellt am 12. Mai 2011  ·  22Kommentare  ·  Quelle: tekezo/Karabiner

Fügen Sie eine Option hinzu, mit der KeyRemap4MacBook die Änderung von Schlüsselereignissen beendet
wenn Synergy unter Mac OS X läuft und der Cursor zu einem anderen Computer geht.

feature request

Hilfreichster Kommentar

Falls jemand anderes dies über ein Skript tun möchte, wird dies funktionieren.
Ersetzen Sie an die Stelle, auf die Ihr Synergieprotokoll verweist.

tail -f /usr/local/var/log/synergy.log | awk '/leaving screen/{system("/Applications/Karabiner.app/Contents/Library/bin/karabiner select 0")} /entering screen/ {system("/Applications/Karabiner.app/Contents/Library/bin/karabiner select 1")}' &

Alle 22 Kommentare

Das wäre fantastisch!! Ich habe versucht, das selbst zu umgehen.

@tekezo , das ist natürlich nicht möglich, wenn Sie Synergy verwenden, um auf ein anderes Betriebssystem zuzugreifen, aber wenn das andere Ende auch OS X ist, versuchen Sie es mit Teleport. Ich benutze das regelmäßig und ich habe nie irgendwelche seltsamen Probleme mit den Mappings bemerkt (aber ich habe nicht sehr viele fortgeschrittene aktiviert).

Danke für die Auskunft.
Wie Sie sagen, ist dies nicht möglich, es sei denn, wir ändern Synergy.
Es gibt jedoch einige Synergy-Supportanfragen.
Ich werde mich in Zukunft mit diesem Thema auseinandersetzen.

Ich laufe auch darauf ein. Ich habe meinen Mac als Synergie-Server, mit einer Linux-Box als Synergie-Client. Ich möchte, dass die Neuzuordnung nur auf dem Mac stattfindet, aber ich möchte in der Lage sein, Ausschlüsse zu erstellen, damit keine Neuzuordnung erfolgt, wenn ich über Synergie auf die Linux-Box umsteige.

Ich habe versucht, eine Appdef für Synergie zu erstellen, aber das schien keine Auswirkungen zu haben. Hat jemand herausgefunden, wie man das zum Laufen bekommt?

Eine andere Sache ist, dass bei Verwendung eines Windows als Synergieserver die in Karabiner definierte Tastenzuordnung im Client auf einem Mac-Book nicht wirksam ist.

@paulhybryant Karabiner modifiziert Eingabeereignisse im Tastaturtreiber.
Daher benötigt Karabiner leider angeschlossene Tastaturen.

Ich habe ein Profil erstellt, standardmäßig und inaktiv, um dieses Problem zu beheben. Wäre schön, einen automatischen Profilwechsel basierend auf einem externen Trigger zu ermöglichen. Anscheinend hat Synergy ein Plugin-Modell zur Unterstützung von Ereignissen.

Anscheinend hat Synergy ein Plugin-Modell zur Unterstützung von Ereignissen.

Es ist großartig!
Sie können die Befehlszeilenschnittstelle verwenden, um das Profil zu wechseln. (select_by_name)
https://pqrs.org/osx/karabiner/document.html.en#commandlineinterface

@mooreaa kannst du

Karabiner ermöglicht Ihnen, verschiedene Profile einzurichten, die Sie aus der Menüleiste auswählen können. Wenn Sie in die Karabiner-Einstellungen gehen, klicken Sie auf die Registerkarte Menüleiste, Sie können eine neue Einstellungsliste hinzufügen.

Ich habe mein Standardprofil mit allen Einstellungen, die mir gefallen, eine inaktive Einstellung, bei der ich alle Funktionen von Karabiner deaktiviert habe. Wenn ich den Monitor wechsle, wechsle ich Profile, die Karabiner im Wesentlichen in einen deaktivierten Zustand versetzen, damit es nicht stört.

Es wäre schön, diesen Profilwechsel automatisch auszulösen, wenn sich Bildschirme ändern. Leider scheint das Plugin-Modell nur auf einer sehr alten Version von Synergy und nur von Windows unterstützt zu werden.

Ich weiß nicht, wie man Bildschirmänderungen erkennt.
Ich denke, dass der einfachste Weg darin besteht, Synergy einen Hook hinzuzufügen, der Shell-Befehle ausführt, wenn sich Bildschirme ändern.

Vielleicht kann https://github.com/nbolton vom Synergy-Projekt eine globale Nachricht erstellen, auf die Sie beim Umschalten zwischen Windows hören können, damit Karabiner seine Funktionen ein- und ausschalten kann?

Ja.
Wenn Synergy beim Wechsel des Betriebssystems einen Shell-Befehl ausführt, können wir die Befehlszeilenschnittstelle verwenden.
https://pqrs.org/osx/karabiner/document.html.en#commandlineinterface

Eigentlich wäre es meiner Meinung nach angemessener, wenn Synergy eine Art SDK zur Verfügung stellt, damit andere Programme mithören können, wenn die Bildschirme gewechselt wurden.

Karabiner wäre in der Lage, jedes Mal umzuschalten, wenn das Ereignis eintritt.

Es gibt eine Problemumgehung, die ein Skript schreibt, um das Synergy-Log zu bereinigen.
dann können wir das Profil automatisch mit dem Karabiner-CLI-Befehl entsprechend dem Endergebnis ("INFO: Eingabebildschirm", "INFO: Verlassen des Bildschirms") wechseln.

Falls jemand anderes dies über ein Skript tun möchte, wird dies funktionieren.
Ersetzen Sie an die Stelle, auf die Ihr Synergieprotokoll verweist.

tail -f /usr/local/var/log/synergy.log | awk '/leaving screen/{system("/Applications/Karabiner.app/Contents/Library/bin/karabiner select 0")} /entering screen/ {system("/Applications/Karabiner.app/Contents/Library/bin/karabiner select 1")}' &

OK, meine Konfiguration ist also ein Mac und ein Windows-PC. Der Mac ist der Karabiner 'Server' und der PC ist der Client. Auf dem Mac habe ich zwei Profile eingerichtet. Standardprofil ist das Profil, auf dem ich die gewünschten Einstellungen für den Mac aktiviert habe, und das zweite Profil ("PCMode") enthält Einstellungen, wenn ich die Maus in den PC-Bildschirmbereich bewege.

Alles ist jetzt großartig und ich habe meine Tastaturen wirklich gut mit der Synergy- und Karabiner-Kombination arbeiten lassen. Ich habe den obigen Beispiel-Tail-Befehl verwendet (danke plessbd!)

@tekezo Hallo! Ich verwende Synergy mit einem Windows-Rechner als Server und meinem Mac als Client.
Sie haben erwähnt, dass Karabiner Eingabeereignisse im Tastaturtreiber modifiziert und daher angeschlossene Tastaturen benötigt.

Aber wenn ich die Karabiner-Ereignisanzeige öffne, sehe ich tatsächlich die Ereignisse von Synergie

STRG + C vom Mac:
eventType:FlagsGeänderter Code:0x3b name:left_control flags:Strg
eventType:KeyDown- Code:0x8 Name:c Flags:Strg
eventType:KeyUp- Code:0x8 Name:c Flags:Strg
eventType:FlagsGeänderter Code:0x3b name:left_control Flags:

STRG + C von Synergie:
eventType:KeyDown- Code:0x8 Name:c Flags:Cmd
eventType:KeyUp- Code:0x8 Name:c Flags:Cmd

Wie Sie sehen, enthalten die Ereignisse von Synergy nicht die "FlagsChanged"-Ereignisse, obwohl in den KeyDown/KeyUp-Ereignissen die Flags korrekt gesetzt sind. Sollten diese Informationen nicht ausreichen, um die Ereignisse zu ändern??

Da der Karabiner nun veraltet ist und ich auf Karabiner-Elements umgestiegen bin, hier mein Workaround für Synergy, falls jemand zufällig auf diesen Thread stößt.
Auf der Idee von @plessbd arbeiten .

Holen Sie sich JQ - schneller 1-Minuten-Download
Shell-Skript erstellen: Ich habe es switch_karabiner.sh genannt

#!/bin/bash

PROFILE=$1

JQ="${HOME}/bin/jq"
CONFIG=".config/karabiner/karabiner.json"
TMP_CONFIG=${CONFIG}.1

${JQ} ".profiles[].selected = false" ${CONFIG} \
  | ${JQ} ".profiles[${PROFILE}].selected = true" \
  > ${TMP_CONFIG}

if [ $? != 0 ]; then
  echo "Failed!"
  rm ${TMP_CONFIG}
else
  mv ${TMP_CONFIG} ${CONFIG}
fi

Ändern Sie die Variablen nach Bedarf.
Mein Setup ist 0 - Mac, 1 - Linux

Dann rufen Sie dieses Skript einfach mit

tail -f /var/log/synergy.log | awk '/leaving screen/{system("~/bin/switch_karabiner.sh 1")} /entering screen/ {system("~/bin/switch_karabiner.sh 0")}' &

PROFITIEREN!

Karabiner Elements unterstützt jetzt das Wechseln von Profilen über CLI, zB '/Library/Application Support/org.pqrs/Karabiner-Elements/bin/karabiner_cli' --select-profile '-' . Ich habe jedoch Probleme, diese Problemumgehung auf der Synergy 1-Seite zu implementieren:

  1. Ich habe kein /var/log/synergy.log: Ausführen von Synergy GUI.
  2. Wenn ich versuche, zu synergys CLI zu wechseln, erhalte ich FATAL: A runtime error occurred: assistive devices does not trust this process, allow it in system settings. . Ich konnte es beim Ausführen von Synergien von iTerm2 überwinden, indem ich iTerm zur Whitelist für Barrierefreiheit hinzufügte. Ich führe jedoch den Synergy-Server beim Start über ein benutzerdefiniertes Shell-Skript aus, das von einem Benutzeragenten bereitgestellt wurde, und ich habe kein Glück, da die Whitelist für Eingabehilfen nur Apps akzeptiert.

Ich habe diese dem Synergy-Support gemeldet. Ich werde sehen, was sie sagen.

Es ist 2020 und ich verwende Barrier anstelle von Synergy, und so integriere ich es mit Hammerspoon in Karabiner-Elements: https://gist.github.com/knu/8b3b784100bae2f8088ff09afc7c451b

Es ist 2020 und ich verwende Barrier anstelle von Synergy, und so integriere ich es mit Hammerspoon in Karabiner-Elements: https://gist.github.com/knu/8b3b784100bae2f8088ff09afc7c451b

Dies war erstaunlich. Danke schön!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

nikitavoloboev picture nikitavoloboev  ·  13Kommentare

CedricGatay picture CedricGatay  ·  241Kommentare

jeffmikels picture jeffmikels  ·  32Kommentare

affmarker picture affmarker  ·  20Kommentare

franciscolourenco picture franciscolourenco  ·  15Kommentare