4 votes

Éléments de mousqueton : Comment désactiver un groupe de clés de manière simple ?

Existe-t-il un moyen simple de désactiver un groupe de clés lors de modifications complexes dans Karabiner-Elements ?

Prenons un exemple :

Sous la condition suivante

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

Je veux désactiver tous les alphabets/chiffres/simboles (ou la plupart d'entre eux au moins), à l'exception de a y b .

Pour mémoire, cette page explique comment désactiver des touches individuelles. L'application de cette approche à un grand nombre de touches n'est pas efficace.

Je vous remercie d'avance de votre perspicacité.

3voto

zonble Points 2925

EDIT : Je viens d'ajouter deux crochets "[ ]" à la partie finale "to" :[{ -, car leur absence a provoqué une [erreur] !

\==========================================================================

Voici donc une "version finale" (quelques notes à/depuis une première tentative sont annexées en bas) :

... un exemple de code qui exclut toute saisie sauf les lettres "a" et "b".
Cet exemple est configuré pour fonctionner uniquement dans TextEdit (à des fins de test), mais vous pouvez bien sûr modifier/supprimer ces "conditions" (dans le dernier manipulateur).

- L'"exclusion" est préparée par Shft-Ctrl-A qui fixe uniquement "none_but_ab" à vrai (1).
- Le manipulateur d'arrêt (sécurité d'abord) est le suivant ; il règle les paramètres suivants "none_but_ab" sur "0" après avoir maintenu "x" pendant 2 secondes.
- Les deux parties suivantes dépassent nos lettres "a" et "b", à l'exclusion de les empêcher de suivre anéantissement .
- Le dernier manipulateur fatal saisit "any : key_code" et le rend à "none"
- Faites attention à votre mécanisme d'arrêt : les touches singulières fonctionnent mieux, les combos modifiés peuvent échouer !

- Quelques autres idées :
En ajoutant "command" ("shift") au dernier "from", vous pourriez empêcher les raccourcis "app-Cmd" (lettres majuscules).
Karabiner El. peut démarrer avant la connexion (Préférences > 'Copier le ' actuel) ; le "mot de passe" serait affecté !
J'aimerais également savoir comment "Shift" pourrait être appliqué à "n'importe quel" : "key_code", en forçant les lettres majuscules, ou si les chiffres peuvent en quelque sorte être "sélectionnés". Eh bien, voyons voir

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

(Voici quelques restes d'une première réponse (supprimée) à ce sujet :

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

Interestingly 'from-to' units within {manipulateurs : } Karabiner.json are worked through from top to bottom jusqu'à ce que l'un d'eux soit exécutable .
So if you want particular letters (a, b) to work nonetheless, you must call them previously.

Starting value for any variable is "0" les valeurs seront "vivantes" pendant que le mousqueton fonctionne !

… 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. )

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X