Como remapear o Caps Lock para Escape e Control?

22

Eu geralmente corro Linux. Eu uso muito o Vim, então a tecla Escape é extremamente importante. Eu também uso muito outros atalhos de teclado, então o Controle também é "chave". No Linux, resolvi isso usando o xcape para mapear a tecla Caps lock para Escape se pressionada por si só, ou Control se pressionada em combinação com outra tecla. Isso coloca o melhor dos dois mundos ao alcance rápido do meu dedo mindinho. Existe alguma maneira de fazer isso em um Mac?

BenjaminRH
fonte

Respostas:

19

Sim , usando o Karabiner (anteriormente KeyRemap4Macbook) .

Primeiro, entre no painel de preferências Teclado, clique em "Modifier Keys ..." e altere Caps Lock para Control. Em seguida, entre no Karabiner e procure por esta opção:

Control_L para Control_L
      (+ quando você digita apenas Control_L, envia Escape)

Verifique isso e pronto. Com o Karabiner, você pode fazer coisas muito mais interessantes, como mapear sua (agora meio inútil) tecla Escape para uma tecla Hyper com ainda mais combinações de teclas.

0942v8653
fonte
é possível remapear esc para caps lock e mapear caps lock para controlar e escapar? Porque, em algum momento, ainda sinto a necessidade de usar caps lock para digitar uma longa seqüência de letras maiúsculas.
Aaron Shen
O Karibiner agora diz para você alterar o Caps Lock para "No Action" nas preferências do teclado OSX (em vez de defini-lo como Control) e usar o Seil, o programa irmão do Karabiner para fazer o remapeamento. A última parte da resposta acima (+ quando você digita apenas Control_L ...) ainda é feita no Karabiner.
ScoBe
@AaronShen acaba de remapear escape para caps lock ;-).
Ven
@ScoBe eu recomendo contra fazendo isso, você realmente não precisa de Seil,
Ven
Eu recomendo reduzir o parâmetro Modificador de chave sobreposta do Karabiner > Tempo limite de 1000ms para 200ms . Se eu segurar a tecla, mas mudar de idéia e soltá-la, não quero disparar um Escape.
Joeytwiddle
16

Atualmente, o Karabiner é incompatível com o MacOS Sierra. Outra solução amigável para o Sierra é o Keyboard Maestro (não é gratuito). Altere o comportamento da tecla Caps-Lock para Control através de System Preferences-> Keyboard-> Modifier Keyscomo outros sugeriram.

Em seguida, no Keyboard Maestro, configure uma macro da seguinte maneira:

  • Disparado por USB Device Key Trigger
  • Pressione a tecla Caps-Lock no teclado
  • é tocado uma vez
  • com estes modificadores: ^
  • (você precisará repetir o gatilho anterior para cada teclado USB usado)
  • Em seguida, adicione uma ação Text->Type a keystroke
  • Pressione Esc
ranzinza
fonte
11
Só para esclarecer, existe um projeto chamado Karabiner Elements que roda no Sierra (que é um precursor de uma versão do Karabiner que roda no Sierra). Eu não tentei, então não sei se essa funcionalidade está disponível ou não.
precisa saber é o seguinte
5
O Karabiner-Elements ainda não suporta a ação de um toque na tecla modificadora, o que seria necessário para isso.
grokfully
Esta opção 'com estes modificadores: ^' só precisa ^ser pressionada juntamente com capslock para disparar uma ação. Não é de todo o que é necessário na pergunta.
defhlt
Desde que alteramos o Caps-Lock pela primeira vez para se comportar como Control através das Preferências do Sistema, o KM vê o evento USB com a tecla Control pressionada. Se você omitir o ^modificador, a ação nunca será acionada.
21817 grokfully
Se você seguir a rota do maestro do teclado, existe alguma maneira de mapear a tecla Escape para Caps Lock para recuperar a funcionalidade Caps Lock? Eu amo ter caps lock como ambos ctrl e escape embora.
Kvass #
1

Para fazer isso com o Karabiner Elements , que suporta o macOS 10.12 e posterior, abra ~/.config/karabiner/karabiner.jsone adicione a seguinte regra à 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"
    }
  ]
}

Você também pode tentar usar ControlEscape.spoon com Hammerspoon .

Danny Guo
fonte
Não consegui fazer isso funcionar, a menos que eu tenha removido os modificadores (palavra-chave e tudo) na to_if_aloneseção. Mas obrigado pelo trecho. É super útil.
Michael