2 votos

Elementos del mosquetón: ¿Por qué una serie (o secuencia/lote) de llaves llamadas en {..: } sólo se ejecuta cada dos veces?

Utilicé la aplicación original de Karabiner 10.22 y pude restringir de forma muy precisa cualquier acción a través del Inspector de Accesibilidad de Apple para que funcionara en ventanas de diálogo específicas.

Esto ya no es posible con los elementos Karabiner.

Así que para (en Safari) hacer clic en el elemento del menú contextual "Información del elemento" (que uso muy a menudo) he probado este código en "Modificaciones complejas":

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

Que hizo funcionar, pero alternativamente sólo abría/mostró el menú contextual o realmente ejecutado "Información del elemento".

Experimentando, he encontrado una solución que me funciona casi siempre:

"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 son todo "comandos" en el primer ejemplo de código ejecutados en el orden debido (o: sólo alternativamente) y (más interesante:) cómo se puede asegurar que cada "comando" se ejecuta cada ¿tiempo?

3voto

timothymh Puntos 5183

Creo que tu solución demuestra perfectamente la razón: estás 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 el E y return Si los códigos clave se envían instantáneamente después de hacer clic con el botón derecho del ratón, es posible que el menú contextual aún no esté enfocado y no se dirijan adecuadamente.

En resumen, si estás haciendo una macro de la GUI, es posible que tengas que esperar a que la GUI responda.

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

  • simplemente añadir un breve retraso, como has hecho tú,
  • utilizar una herramienta alternativa (por ejemplo, Keyboard Maestro) que le permita hacer una pausa hasta que se cumpla una determinada condición, o
  • utilizar 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 esa opción existe para este objetivo específico).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X