Elementi di Karabiner: come disabilitare un gruppo di chiavi in ​​modo semplice?


4

C'è un modo semplice per disabilitare un gruppo di chiavi in ​​complesse modifiche in Karabiner-Elements?

Considera un esempio:

Sotto la seguente condizione

  "set_variable": {
      "name": "con-1",
      "value": 1
  }

Voglio disabilitare tutti gli alfabeti / numeri / simboli (o la maggior parte di essi almeno), ad eccezione di a e b.

Solo per riferimento, questa pagina discute su come disabilitare le singole chiavi. Applicare questo approccio a molte molte chiavi non è efficiente.

Apprezzo in anticipo la tua visione.

Risposte:


2

EDIT: Ho appena aggiunto due parentesi "[]" alla finale "to": [{-part, dato che la loro mancanza ha avuto un errore [errore]!

================================================== ========================

Quindi, ecco una "versione finale" (alcune note a / da un primo tentativo sono aggiunte in fondo):

... un codice di esempio che esclude qualsiasi digitazione eccetto le lettere "a" & amp; "B".
Questo esempio è impostato per funzionare solo in TextEdit (a scopo di test), ma ovviamente è possibile modificare / eliminare queste "condizioni" (nell'ultimo manipolatore).

- Il "Escluso" è preparato da Shft-Ctrl-A che imposta esclusivamente "none_but_ab" a vero (1).
- Il prossimo in linea è uno Stop-manipulator (prima sicurezza); imposta "none_but_ab" a "0" dopo aver premuto "x" 2 sec.
- Entrambe le seguenti parti mostrano le nostre lettere "a" e "b", esclusa loro dal seguire annientamento .
- L'ultimo manipolatore fatale prende "any: key_code" e lo rende "none" ...
- Fai attenzione con il tuo meccanismo di arresto: i tasti singolari funzionano meglio, le combo modificate possono fallire!

- Altre idee:
Aggiungendo "command" ("shift") all'ultimo "from", è possibile evitare le scorciatoie app-Cmd (lettere maiuscole).
Karabiner El. può iniziare prima di accedere (Preferenze & gt; 'Copia il corrente ...'); "password" sarebbe interessata!
Vorrei anche sapere come "Shift" potrebbe essere applicato a "any": "key_code", forzando le lettere maiuscole o se i numeri possono essere "selezionati" in qualche modo. Bene vediamo …

{ "description": "=============  vk_none but a,b  ============= ",
   "manipulators": [
        {
           "from": { "key_code": "a",
                     "modifiers": {
                         "mandatory": ["left_shift", "left_control"]
                   }              },
             "to": [
                    { "set_variable": {
                      "name": "none_but_ab",
                      "value": 1 }    }
                   ],
           "type": "basic"
         },
         {
           "from": { "key_code": "x" },
     "parameters": { "basic.to_if_held_down_threshold_milliseconds": 2000 },
"to_if_held_down": [
                    { "key_code": "x" },
                    { "set_variable": {
                      "name": "none_but_ab",
                      "value": 0 }    }
                   ],
           "type": "basic"
         },
         { "from": { "key_code": "a" },
             "to": [ { "key_code": "a" } ],
           "type": "basic" }, 
         { "from": { "key_code": "b" },
             "to": [ { "key_code": "b" } ],
           "type": "basic" },
         { 
     "conditions": [
                    { "name": "none_but_ab",
                      "type": "variable_if",
                      "value": 1 },
                    { "bundle_identifiers": [
                              "^com.apple.TextEdit" ],
                      "type": "frontmost_application_if"
                    }
                   ],
           "from": { "any": "key_code",
                     "modifiers": {
                          "optional": ["any"] }
                   },
             "to": [ { "key_code": "vk_none" } ],
           "type": "basic"
                   }
                   ]
}

(Qui ci sono alcuni resti di una prima risposta (cancellata) a questo:

note the twisted "any: key_code" part that calls every key, including "modifiers…any"

Interestingly 'from-to' units within {manipolatori: ...} Karabiner.json are worked through from top to bottom fino a quando uno è eseguibile .
So if you want particular letters (a, b) to work nonetheless, you must call them previously.

Starting value for any variable is "0" ... i valori saranno "vivi" mentre Karabiner è in esecuzione!

… while experimenting I made my monitor sleep, but when I typed my pw – one letter simply was not recognised. I had to start from an external drive and change my code. )


[Aggiungo commenti precedenti (alla seconda risposta "cancellata"):] ________________________________ Più importante - grazie per le grandi risposte. - bmike ♦ _______________________________ Oh, sei il benvenuto - e probabilmente giusto. Più avanti cercherò in quali informazioni del mio primo tentativo vale la pena di aggiungerne una nuova; ero così concentrato, non l'ho fatto subito. Grazie per i tuoi punti reputazione! - lang clemsam
clemsam lang

1
Grazie per la tua comprensione Sto cercando di creare una versione semplice di modalità vi. Voglio annullare chiavi diverse da quelle usate in modalità normale, come 'jkhlwbgG0 $ oOiI'. Ma il tuo codice dà un errore '[errore] [grabber] complex_modifications json error: to dovrebbe essere array: {"condizioni": [{"nome": "none_but_ab", "tipo": "variabile_if", "valore": 1}, {"identificatori pacchetto": ["^ com.apple.TextEdit"], "tipo": "frontmost_application_if"}], "da": { "qualsiasi": "key_code", "modificatori": { "optional": [ "qualsiasi"]}}, "a": { "key_code":" vk_none "}," tipo ":" base "}". Mi sto perdendo qualcosa?
T_T

All'inizio non ero abbastanza sicuro di aver capito la tua domanda (avevo incollato il mio codice postato in karabiner.json e funzionava). Sembra "[errore] ..." aspetta solo parentesi "[]". Questi sono necessari solo in "da" quando c'è più di un {} nel tuo "da": [{...}, {...}, {...}] ma "a" li vuole OGNI volta - divertente che il mio codice abbia funzionato comunque ... ma ho cambiato questo sopra !!!
clemsam lang

1
Grazie per il tuo codice meraviglioso! L'ho usato nella mia semplice modalità Vim per KE. Puoi trovarlo in un file Nullify_keys.json nel Qui se siete interessati.
T_T

Ciao, non sono sicuro se quello che penso sia vero: ho esaminato il tuo codice GitHub - devi chiamare ripetutamente alcune chiavi doublet come "b" ed "e"? ... Se sono "riconosciuti" nel tuo 1 ° "da ... a" il secondo non sarà nemmeno chiamato. Sospetto, potresti omettere questi (2) doppietti. Bel lavoro, le tue "modalità Vim"!
clemsam lang
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.