¿Cómo puedo reasignar el bloqueo de mayúsculas a Escape y Control?

22

Generalmente ejecuto Linux. Yo uso mucho Vim, por lo que la tecla Escape es extremadamente importante. También uso mucho otros atajos de teclado, por lo que Control también es "clave". En Linux, he resuelto esto usando xcape para asignar la tecla de bloqueo de mayúsculas a Escape si se presiona solo, o Control si se presiona en combinación con otra tecla. Esto pone lo mejor de ambos mundos al alcance de mi dedo meñique. ¿Hay alguna manera de hacer esto en una Mac?

BenjaminRH
fuente

Respuestas:

19

, usando Karabiner (anteriormente KeyRemap4Macbook) .

Primero, vaya al panel de preferencias Teclado, haga clic en "Teclas modificadoras ..." y cambie Bloq Mayús a Control. Luego, vaya a Karabiner y busque esta opción:

Control_L a Control_L
      (+ cuando escribe Control_L solamente, envía Escape)

Comprueba eso y listo. Con Karabiner puedes hacer muchas cosas más interesantes, como asignar tu (ahora un poco inútil) tecla de escape a una tecla Hyper con aún más combinaciones de teclas.

0942v8653
fuente
¿es posible reasignar esc al bloqueo de mayúsculas y el bloqueo de mayúsculas del mapa para controlar y escapar? Porque en algún momento, todavía siento la necesidad de usar mayúsculas para escribir una cadena larga en mayúscula.
Aaron Shen
Karibiner ahora le dice que cambie Bloq Mayús a "Sin acción" en las preferencias del teclado OSX (en lugar de configurarlo como Control) y que use Seil, el programa hermano de Karabiner para hacer la reasignación. La última parte de la respuesta anterior (+ cuando escribe Control_L solo ...) todavía se realiza en Karabiner.
ScoBe
@AaronShen simplemente reasigna el escape al bloqueo de mayúsculas ;-).
Ven
@ScoBe Recomiendo no hacerlo, realmente no necesitas Seil,
Ven
Recomiendo reducir el parámetro Modificador superpuesto clave de Karabiner > Tiempo de espera de 1000 ms a 200 ms . Si sostengo la tecla pero luego cambio de opinión y la libero, no quiero disparar un escape.
joeytwiddle
16

Karabiner es actualmente incompatible con MacOS Sierra. Otra solución amigable para Sierra es con Keyboard Maestro (no es gratis). Cambie el comportamiento de la tecla Bloq Mayús a Control mediante System Preferences-> Keyboard-> Modifier Keyscomo otros han sugerido.

Luego, dentro de Keyboard Maestro, configure una macro de la siguiente manera:

  • Desencadenado por USB Device Key Trigger
  • Presione la tecla Bloq Mayús en su teclado
  • se toca una vez
  • con estos modificadores: ^
  • (deberá repetir el disparador anterior para cada teclado USB que use)
  • Luego agrega una acción Text->Type a keystroke
  • Presione Esc
grokfully
fuente
1
Para ser claros, hay un proyecto llamado Karabiner Elements que se ejecuta en Sierra (que es un precursor de una versión de Karabiner que se ejecutará en Sierra). No lo he probado, así que no sé si esta funcionalidad está disponible o no.
tubedogg
55
Karabiner-Elements aún no admite actuar sobre un toque de tecla modificadora, lo que sería necesario para esto.
Grokfully
Esta opción 'con estos modificadores: ^' solo requiere ^presionarse junto con el bloqueo de mayúsculas para activar una acción. No es en absoluto lo que se requiere en la pregunta.
defhlt
Desde que primero cambiamos Caps-Lock para que se comporte como Control a través de las Preferencias del Sistema, KM ve el evento USB con la tecla Control presionada. Si omite el ^modificador, la acción nunca se activará.
grokfully
Si sigue la ruta del maestro del teclado, ¿hay alguna forma de asignar la tecla de escape al bloqueo de mayúsculas para recuperar la funcionalidad de bloqueo de mayúsculas? Sin embargo, me encanta tener mayúsculas bloqueadas como Ctrl y escapar.
Kvass
1

Para hacerlo con Karabiner Elements , que admite macOS 10.12 y posterior, abra ~/.config/karabiner/karabiner.jsony agregue la siguiente regla a la rulesmatriz.

{
  manipulators: [
    {
      description:
        "Change caps_lock to control when used as modifier, escape when used alone",
      from: {
        key_code: "caps_lock",
        modifiers: {
          optional: ["any"]
        }
      },
      to: [
        {
          key_code: "left_control"
        }
      ],
      to_if_alone: [
        {
          key_code: "escape",
          modifiers: {
            optional: ["any"]
          }
        }
      ],
      type: "basic"
    }
  ]
}

También puede intentar usar ControlEscape.spoon con Hammerspoon .

Danny Guo
fuente
No podría hacer que esto funcione a menos que elimine los modificadores (palabra clave y todo) en la to_if_alonesección. Pero gracias por el fragmento. Es super útil.
Michael