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

Generalmente uso Linux. Uso mucho Vim, por lo que la tecla Escape es extremadamente importante. También uso mucho otros métodos abreviados de teclado, por lo que Control también es "clave". En Linux, resolví esto usando xcape para asignar la tecla de bloqueo de mayúsculas a Escape si se presiona sola, 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 que pueda hacer esto en una Mac?

Respuestas (3)

, utilizando Karabiner (anteriormente KeyRemap4Macbook) .

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

Control_L a Control_L
      (+ cuando escribe solo Control_L, envíe Escape)

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

¿Es posible reasignar esc a bloqueo de mayúsculas y bloqueo de mayúsculas de mapa para controlar y escapar? Porque en algún momento, todavía siento la necesidad de usar el bloqueo de mayúsculas para escribir una cadena larga en mayúsculas.
Karibiner ahora le dice que cambie el bloqueo de mayúsculas a "Sin acción" en las preferencias del teclado OSX (en lugar de configurarlo allí en 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 only...) todavía se realiza en Karabiner.
@AaronShen simplemente reasigna escape a bloqueo de mayúsculas ;-).
@ScoBe Recomiendo no hacer eso, realmente no necesitas a Seil,
Recomiendo reducir el parámetro Key Overlaid Modifier > Timeout de Karabiner de 1000ms a 200ms . Si mantengo presionada la tecla pero luego cambio de opinión y la suelto, no quiero disparar un Escape.

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

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

  • Desencadenado porUSB Device Key Trigger
  • Presione la tecla Bloq Mayús en su teclado
  • se toca una vez
  • con estos modificadores:^
  • (tendrá que repetir el activador anterior para cada teclado USB que utilice)
  • Luego agrega una acción Text->Type a keystroke
  • Presiona Esc
Para que quede claro, 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.
Karabiner-Elements aún no admite actuar sobre un toque de tecla modificadora, que sería necesario para esto.
Esta opción 'con estos modificadores: ^' solo requiere ^ser presionada junto con el bloqueo de mayúsculas para activar una acción. No es en absoluto lo que se requiere en la pregunta.
Dado que primero cambiamos el bloqueo de mayúsculas 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á.
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 bloqueo de mayúsculas como ctrl y escape.
A partir de la versión 12, parece que esto es compatible con github.com/tekezo/Karabiner-Elements/issues/18 que apunta a pqrs.org/osx/karabiner/complex_modifications/#caps_lock tenga en cuenta que deberá descargar el archivo json: fue un poco confuso para mí al principio también una de las opciones es solo a partir del 12.02

Para hacerlo con Karabiner Elements , que admite macOS 10.12 y versiones posteriores, 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 puedes intentar usar ControlEscape.spoon con Hammerspoon .

No pude hacer que esto funcionara a menos que eliminara los modificadores (palabra clave y todo) en la to_if_alonesección. Pero gracias por el fragmento. Es súper útil.