Elementi di Karabiner: Perché una serie (o sequenza / lotto) di chiavi chiamate da {... "a": ...} viene eseguita solo una seconda volta?

1

Ho usato l'app Karabiner originale 10.22 e ho potuto limitare in modo molto preciso qualsiasi azione tramite Accessibility Inspector di Apple a funzionare per finestre di dialogo specifiche.

Questo non è più possibile con Karabiner Elements.

Quindi per (in Safari) fare clic sull'elemento del menu contestuale "Informazioni sull'elemento" (che uso molto spesso) Ho provato questo codice in "Modifiche complesse":

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

Quali hanno funzionano, ma alternativamente hanno aperto / mostrato solo il menu di scelta rapida o effettivamente eseguito "Informazioni sull'elemento".

Sperimentando, ho trovato una soluzione che per lo più funziona per me:

"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"} ]

Le mie domande:

Perché non ci sono tutti "comandi" nel primo esempio di codice eseguito nell'ordine dovuto (o: solo alternativamente) e (più interessante :) come puoi assicurarti che ogni "comando" viene eseguito ogni tempo?

    
posta clemsam lang 06.10.2018 - 12:25
fonte

1 risposta

1

Penso che la tua soluzione sia perfettamente dimostrata dal motivo: stai selezionando "Informazioni sull'elemento" tramite la GUI e il menu di scelta rapida potrebbe richiedere alcuni millisecondi. Questo non è un problema specifico per Karabiner - se i keycode E e return vengono inviati istantaneamente dopo aver cliccato col tasto destro, il menu di scelta rapida potrebbe non essere ancora a fuoco, e non sarà indirizzato in modo appropriato.

In breve, se stai creando una macro GUI, potresti dover attendere che la GUI risponda.

Come vedo, ci sono tre soluzioni possibili:

  • aggiungi semplicemente un breve ritardo, come hai fatto,
  • utilizza uno strumento alternativo (ad esempio, Maestro della tastiera) che ti consente di mettere in pausa fino a quando non viene soddisfatta una determinata condizione oppure
  • utilizzare un metodo alternativo per attivare il risultato desiderato, ovvero qualcosa che non si basa sull'interfaccia utente grafica a livello utente, come AppleScript (anche se non so se esiste una tale opzione per questo obiettivo specifico) .
risposta data 14.10.2018 - 23:42
fonte

Leggi altre domande sui tag