Elementos de Karabiner: ¿Por qué una serie (o secuencia / lote) de teclas llamadas en {... “a”:…} solo se ejecutan cada segunda vez?

1

Utilicé la aplicación Karabiner original 10.22 y podría restringir de manera muy precisa cualquier acción a través del Inspector de accesibilidad de Apple para trabajar con ventanas de diálogo específicas.

Esto ya no es posible con Karabiner Elements.

Entonces, para (en Safari) hacer clic en el elemento del menú contextual "Información del elemento" (que uso muy a menudo), probé este código en "Modificaciones complejas":

 "to": [ { "pointing_button": "button2" },
         { "key_code": "e" },
         { "key_code": "return_or_enter"}  ]

Qué funcionó , pero alternativamente solo abrió / mostró el menú contextual o ejecutado en realidad "Información del elemento".

Al experimentar, encontré una solución que en su mayoría me funciona:

"parameters": { "basic.to_if_held_down_threshold_milliseconds": 50 }, 
"to":       [ { "pointing_button": "button2" } ],
"to_if_held_down":
            [ { "key_code": "e" },
              { "key_code": "return_or_enter"} ]

Mis preguntas:

¿Por qué los "comandos" no son todos en el primer ejemplo de código ejecutados en el orden debido (o: solo alternativamente) y (más interesante :) cómo puede asegurarse de que cada "comando" se ejecuta cada vez?

    
pregunta clemsam lang 06.10.2018 - 12:25

1 respuesta

1

Creo que su solución demuestra perfectamente la razón: está seleccionando "Información del elemento" a través de la GUI, y el menú contextual puede tardar unos milisegundos en aparecer. Este no es un problema específico de Karabiner: si los códigos clave E y return se envían instantáneamente después de hacer clic con el botón derecho, es posible que el menú contextual aún no esté enfocado, y no será dirigido apropiadamente.

En resumen, si está creando una macro GUI, es posible que deba esperar a que la GUI responda.

Como yo lo veo, hay tres soluciones posibles:

  • simplemente agregue un breve retraso, como lo ha hecho,
  • utiliza una herramienta alternativa (por ejemplo, Keyboard Maestro) que te permite hacer una pausa hasta que se cumpla una determinada condición, o
  • use un método alternativo para activar el resultado deseado, es decir, algo que no se basa en la interfaz gráfica de usuario a nivel del usuario, como AppleScript (aunque no sé si existe una opción de este tipo para este objetivo específico) .
respondido por el Timothy Mueller-Harder 14.10.2018 - 23:42

Lea otras preguntas en las etiquetas