Elementos de mosquetón: ¿Por qué una serie (o secuencia/lote) de teclas invocadas en {…"to": …} solo se ejecuta cada dos veces?

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

Esto ya no es posible con Karabiner Elements.

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

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

Lo cual funcionó , pero alternativamente solo abrió / mostró el menú contextual o ejecutó "Información del elemento".

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

"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é no se ejecutan todos los "comandos" en el primer ejemplo de código en el debido orden (o: solo alternativamente) y (más interesante:) cómo puede asegurarse de que cada "comando" se ejecute cada vez?

¿Quizás preguntar en el foro dedicado de Karabiner? groups.google.com/forum/#!forum/osx-karabiner

Respuestas (1)

Creo que su solución demuestra perfectamente el motivo: está seleccionando "Información del elemento" a través de la GUI, y el menú contextual puede tardar unos milisegundos en aparecer. Esto no es un problema con Karabiner específicamente: si los códigos clave Ey returnse 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 se dirigirán de manera adecuada.

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

Tal y como yo lo veo, hay tres posibles soluciones:

  • simplemente agregue un breve retraso, como lo ha hecho,
  • use una herramienta alternativa (por ejemplo, Keyboard Maestro) que le permita 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 dependa de la interfaz gráfica de usuario a nivel de usuario, como AppleScript (aunque no sé si existe tal opción para este objetivo específico).
Muchas gracias por su respuesta, que aborda la primera parte (por qué) de mi pregunta; la segunda parte (how2) sigue siendo lo más interesante para obtener un método a prueba de fallas (sin depender de la CPU, RAM, etc.). Resolví el "por qué" con mi solución alternativa, pero esto no funcionará en todas las computadoras, tal vez ni siquiera en la mía si hay demasiadas aplicaciones funcionando simultáneamente. Voto tu respuesta uno, así que si nadie encuentra una respuesta how2, obtendrás la recompensa... :-)
[AÑADIDO DEMASIADO TARDE:]... si es así, "de acuerdo"... :-)
@clemsamlang Agregué mi respuesta a mi respuesta, ya que no encajaba bien en un comentario. :)
– Agradezco esto… no tiene idea, ¿cómo se puede hacer que KE ESPERE realmente un evento GUI?
@clemsamlang No estoy muy familiarizado con el lado de las secuencias de comandos de KE. Tendría que investigar más.
Sugiero que alguien que lea este hilo "suba" su respuesta o la de Timothy* a +2: de esa manera obtendrá la mitad de la "recompensa". Como la parte importante (2da) de mi pregunta no está respondida, no quisiera que este hilo pareciera que hubo una respuesta final...