4 votos

Karabiner-Elements: ¿Cómo desactivar un grupo de teclas de forma sencilla?

¿Hay una manera simple de deshabilitar un grupo de teclas en modificaciones complejas en Karabiner-Elements?

Considera un ejemplo:

Bajo la siguiente condición

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

Quiero deshabilitar todas las letras/números/símbolos (o al menos la mayoría de ellos), excepto a y b.

Solo por referencia, esta página discute cómo deshabilitar teclas individuales. Aplicar este enfoque a muchas teclas no es eficiente.

Aprecio tu perspectiva de antemano.

3voto

zonble Puntos 2925

EDICIÓN: ¡Acabo de agregar dos corchetes "[ ]" al final de la parte "to":[{ -, ya que su falta causó un [error]!

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

Entonces, aquí está una "versión final" (algunas notas de/inferior de un primer intento están añadidas en la parte inferior):

... algún código de ejemplo que excluye cualquier escritura excepto las letras "a" y "b".
Este ejemplo está configurado para funcionar solo en TextEdit (con fines de prueba), pero por supuesto puedes cambiar/eliminar estas "condiciones" (en el último manipulador).

– La "Exclusión" está preparada por Shft-Ctrl-A que establece únicamente "none_but_ab" como verdadero (1).
– A continuación, viene un manipulador de Parada (primero la seguridad); establece "none_but_ab" como "0" después de mantener presionada la tecla "x" durante 2 segundos.
– Ambas partes siguientes imprimen nuestras letras "a" y "b", excluyéndolas de la aniquilación que sigue.
– El fatal último manipulador captura "cualquier: key_code" y lo convierte en "ninguno" …
– ¡Ten cuidado con tu mecanismo de Parada: las teclas simples funcionan mejor, las combinaciones modificadas pueden fallar!

– Algunas ideas más:
Al agregar "comando" ("shift") al último "de", podrías prevenir los atajos de teclado de Comando en las aplicaciones (letras mayúsculas).
Karabiner El. puede iniciarse antes de iniciar sesión (Preferencias > 'Copiar el actual …'); ¡"contraseña" se vería afectada!
También me gustaría saber cómo "Shift" podría aplicarse a "cualquier":"key_code", forzando letras mayúsculas, o si de alguna manera los números podrían ser "seleccionados". Bueno, veamos …

{ "description": "=============  vk_none but a, b  ============= ",
   "manipuladores": [
        {
           "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" },
         { 
     "condiciones": [
                    { "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"
                   }
                   ]
}

(Aquí quedan algunos restos de una primera respuesta (eliminada) en esto:

nota la parte "cualquier: key_code" retorcida que llama a cada tecla, incluidos los "modificadores…ninguno"

Interesantemente, las unidades 'de-a' dentro{manipuladores: …} Karabiner.json se trabajan de arriba abajo hasta que una es ejecutable.
Entonces, si quieres que letras particulares (a, b) funcionen de todas formas, debes llamarlas previamente.

El valor inicial para cualquier variable es "0" … ¡los valores "vivirán" mientras Karabiner esté en funcionamiento!

… mientras experimentaba, hice que mi monitor se durmiera, pero cuando escribí mi contraseña – una letra simplemente no fue reconocida. Tuve que arrancar desde una unidad externa y cambiar mi código.)

0 votos

[Agrego comentarios anteriores (borrados del 2do "respuesta"): ] ________________________________ Lo más importante - gracias por las excelentes respuestas. - bmike _______________________________ Oh, de nada - y probablemente tengas razón. Más tarde revisaré qué información de mi primer intento vale la pena añadir a la nueva; estaba tan concentrado que no lo hice de inmediato. ¡Gracias por tus puntos de reputación! - clemsam

1 votos

Gracias por tu aportación. Estoy tratando de crear una versión simple del modo vi. Quiero anular teclas que no sean las utilizadas en el Modo Normal, como 'jkhlwbgG0$oOiI'. Pero tu código da un error '[error] [grabber] error json de modificaciones complejas: to debería ser un array: {"conditions":[{"name":"none_but_ab","type":"variable_if","v‌​alue":1},{"bundle_id‌​entifiers":["^com.ap‌​ple.TextEdit"],"type‌​":"frontmost_applica‌​tion_if"}],"from":{"‌​any":"key_code","mod‌​ifiers":{"optional":‌​["any"]}},"to":{"key‌​_code":"vk_none"},"t‌​ype":"basic"} '. ¿Me estoy perdiendo algo?

0 votos

Al principio no estaba del todo seguro de si entendía tu pregunta (había pegado mi código publicado en karabiner.json y funcionaba). Parece que "[error] ..." solo espera corchetes "[ ]". Estos solo son necesarios en "from" cuando hay más de un {} en tu "from": [ { ... }, { ... }, { ... } ] pero "to" los quiere SIEMPRE - ¡curioso que mi código funcionara de todos modos ... pero CAMBIÉ esto arriba!

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