Karabiner: [Solicitud de función] Fortalecer la cooperación con Synergy

Creado en 12 may. 2011  ·  22Comentarios  ·  Fuente: tekezo/Karabiner

Agregue una opción para que KeyRemap4MacBook deje de modificar eventos clave
cuando Synergy se está ejecutando en Mac OS X y el cursor va a otra máquina.

feature request

Comentario más útil

en caso de que alguien más quiera hacer esto a través de un script, esto funcionará.
reemplace a donde tiene apuntado su registro de sinergia.

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")}' &

Todos 22 comentarios

¡¡Esto sería fantástico !! He estado tratando de solucionar esto yo mismo.

@tekezo , obviamente esto no es posible si está utilizando Synergy para acceder a un sistema operativo diferente, pero si el otro extremo también es OS X, intente comprobar Teleport. Lo uso con regularidad y nunca he notado ningún problema extraño con las asignaciones (pero no tengo muchas avanzadas habilitadas).

Gracias por la información.
Como dices, no es posible a menos que modifiquemos Synergy.
Sin embargo, existen algunas solicitudes de soporte de Synergy.
Desafiaré este problema en el futuro.

Me estoy encontrando con esto también. Tengo mi Mac como servidor de sinergia, con una caja Linux como cliente de sinergia. Quiero que la reasignación se lleve a cabo solo en Mac, pero quiero poder crear exclusiones para que la reasignación no ocurra cuando me muevo a la caja de Linux a través de la sinergia.

Traté de crear una definición de aplicación para sinergia, pero eso no pareció tener ningún efecto. ¿Alguien ha descubierto cómo hacer que esto funcione?

Otra cosa es que cuando se usa Windows como servidor de sinergia, el mapeo de teclas definido en mosquetón no es efectivo en el cliente en un macbook.

@paulhybryant Karabiner modifica los eventos de entrada en el controlador del teclado.
Por lo tanto, lamentablemente, Karabiner requiere teclados conectados.

He creado un perfil, predeterminado e inactivo para resolver este problema. Sería bueno permitir el cambio automático de perfil basado en un disparador externo. Parece que Synergy tiene un modelo de complemento para respaldar eventos.

Parece que Synergy tiene un modelo de complemento para respaldar eventos.

¡Es genial!
Puede utilizar la interfaz de línea de comandos para cambiar de perfil. (select_by_name)
https://pqrs.org/osx/karabiner/document.html.en#commandlineinterface

@mooreaa, ¿puedes explicar lo que quieres decir con hacer un perfil?

Karabiner le permite configurar diferentes perfiles que puede seleccionar desde la barra de menú. Si ingresa a la configuración de Karabiner, haga clic en la pestaña MenuBar, puede agregar una nueva SettingList.

Tengo mi perfil predeterminado con todas las configuraciones que me gustan, una configuración Inactiva donde he desactivado todas las funciones de Karabiner. Cuando cambio de monitores, cambio de perfil, lo que básicamente configura Karabiner en un estado desactivado para que no interfiera.

Sería bueno activar automáticamente este cambio de perfil cuando cambien las pantallas. Desafortunadamente, el modelo de complemento solo parece ser compatible con una versión muy antigua de Synergy y solo con Windows.

No sé cómo detectar cambios en las pantallas.
Creo que la forma más fácil es agregar un gancho en Synergy que ejecute comandos de shell cuando cambian las pantallas.

¿Quizás https://github.com/nbolton del proyecto Synergy pueda crear algún mensaje global que pueda escuchar cuando cambie entre Windows para que Karabiner pueda activar / desactivar sus funciones?

Si.
Si Synergy ejecuta un comando de shell cuando se cambia el sistema operativo, podemos usar la interfaz de línea de comandos.
https://pqrs.org/osx/karabiner/document.html.en#commandlineinterface

En realidad, creo que sería más apropiado si Synergy proporcionara un SDK de algún tipo para que otros programas puedan escuchar para saber cuándo se han cambiado de pantalla.

El mosquetón podría alternar cada vez que ocurra el evento.

Existe una solución alternativa que escribe un script para seguir el registro de sinergia,
luego podemos cambiar de perfil automáticamente usando el comando CLI de Karabiner de acuerdo con el resultado final ("INFO: pantalla de entrada", "INFO: pantalla de salida").

en caso de que alguien más quiera hacer esto a través de un script, esto funcionará.
reemplace a donde tiene apuntado su registro de sinergia.

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")}' &

Bien, entonces mi configuración es una Mac y una PC con Windows. La Mac es el 'Servidor' de Karabiner y la PC es el cliente. En Mac he configurado dos perfiles. El perfil predeterminado es aquel en el que habilité la configuración que quiero para Mac y el segundo perfil ("PCMode") tiene configuraciones para cuando moví el mouse al área de la pantalla de la PC.

Todo es genial ahora y tengo mis teclados funcionando muy bien con el combo Synergy y Karabiner. Usé el comando de cola de ejemplo anterior (¡gracias plessbd!) Pero lo modifiqué cambiando entre "seleccionar 0" y "seleccionar 1".

@tekezo ¡Hola! Estoy usando Synergy con una máquina Windows como servidor y mi Mac como cliente.
Mencionaste que Karabiner modifica los eventos de entrada en el controlador del teclado y, por lo tanto, requiere teclados conectados.

Pero, cuando abro el visor de eventos de Karabiner, veo los eventos de la sinergia

CTRL + C desde Mac:
eventType: FlagsCódigo cambiado : 0x3b nombre: left_control flags: Ctrl
eventType: código KeyDown : 0x8 nombre: banderas c : Ctrl
eventType: KeyUp código: 0x8 nombre: c banderas: Ctrl
eventType: FlagsCódigo cambiado : 0x3b nombre: left_control flags:

CTRL + C de Synergy:
eventType: código KeyDown : 0x8 nombre: c banderas: Cmd
eventType: KeyUp código: 0x8 nombre: c banderas: Cmd

Como puede ver, los eventos de Synergy no contienen los eventos "FlagsChanged", aunque en los eventos KeyDown / KeyUp las banderas están configuradas correctamente. ¿No debería ser suficiente esta información para modificar los eventos?

Ahora que el mosquetón está obsoleto y me cambié a Karabiner-Elements, esta es mi solución para Synergy si alguien se encuentra con este hilo.
Trabajando sobre la idea de @plessbd .

Obtenga JQ : descarga rápida de 1 minuto
Crear script de shell: lo llamé switch_karabiner.sh

#!/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

Cambie las variables según sea necesario.
Mi configuración es 0 - Mac, 1 - Linux

Luego, simplemente llame a ese script con el script @plessbd :

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

¡LUCRO!

Karabiner Elements ahora admite el cambio de perfiles a través de CLI, por ejemplo, '/Library/Application Support/org.pqrs/Karabiner-Elements/bin/karabiner_cli' --select-profile '-' . Sin embargo, tengo problemas al intentar implementar esta solución en el lado de Synergy 1:

  1. No tengo /var/log/synergy.log: ejecutando Synergy GUI.
  2. Cuando intento cambiar a synergys CLI, obtengo FATAL: A runtime error occurred: assistive devices does not trust this process, allow it in system settings. . Pude superarlo al ejecutar sinergias desde iTerm2 al agregar iTerm a la lista blanca de accesibilidad. Sin embargo, ejecuto el servidor Synergy al inicio a través de un script de shell personalizado enviado por un agente de usuario, y no tengo suerte porque la lista blanca de accesibilidad solo acepta aplicaciones.

Informé de esto al soporte de Synergy. Veré lo que dicen.

Es 2020 y estoy usando Barrier en lugar de Synergy, y así es como lo integro con Karabiner-Elements usando Hammerspoon : https://gist.github.com/knu/8b3b784100bae2f8088ff09afc7c451b

Es 2020 y estoy usando Barrier en lugar de Synergy, y así es como lo integro con Karabiner-Elements usando Hammerspoon : https://gist.github.com/knu/8b3b784100bae2f8088ff09afc7c451b

Esto fue asombroso. ¡Gracias!

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

joecridge picture joecridge  ·  8Comentarios

jeffmikels picture jeffmikels  ·  32Comentarios

CedricGatay picture CedricGatay  ·  241Comentarios

affmarker picture affmarker  ·  20Comentarios

franciscolourenco picture franciscolourenco  ·  15Comentarios