Come posso rimappare il blocco maiuscole su Escape e Control?


22

In genere eseguo Linux. Uso Vim molto, quindi il tasto Esc è estremamente importante. Uso anche altre scorciatoie da tastiera, quindi anche Control è "chiave". Su Linux, ho risolto questo problema usando xcape per mappare il tasto BLOC MAIUSC su Esc se premuto da solo o Control se premuto in combinazione con un altro tasto. Questo mette il meglio di entrambi i mondi a portata di mano del mio mignolo. Esiste un modo per farlo su un Mac?

Risposte:


19

, usando Karabiner (precedentemente KeyRemap4Macbook) .

Innanzitutto, vai nel riquadro delle preferenze della tastiera, fai clic su "Tasti modificatori ..." e imposta il tasto Bloc maiusc su Controllo. Quindi, accedi a Karabiner e cerca questa opzione:

Da Control_L a Control_L
      (+ quando digiti solo Control_L, invia Escape)

Controlla quello e il gioco è fatto. Con Karabiner puoi fare molte cose più interessanti, come mappare la tua chiave Escape (ora un po 'inutile) su una chiave Hyper con ancora più combinazioni di tasti.


è possibile rimappare esc per bloccare maiuscole e mappare il blocco maiuscole per controllare e fuggire? Perché a volte sento ancora la necessità di usare il maiuscolo per digitare una lunga stringa maiuscola.
Aaron Shen,

Karibiner ora ti dice di cambiare Caps Lock su "Nessuna azione" nelle preferenze della tastiera OSX (invece di impostarlo lì su Control) e di usare Seil, il programma gemello di Karabiner per eseguire il remapping. L'ultima parte della risposta sopra (+ quando si digita Control_L solo ...) viene ancora eseguita in Karabiner.
ScoBe

@AaronShen rimappa semplicemente il tasto maiuscole ;-).
Ven

@ScoBe Consiglierei di non farlo, davvero non hai bisogno di Seil,
Ven

Consiglio di ridurre il modificatore di chiave sovrapposto di Karabiner > parametro Timeout da 1000ms a 200ms . Se tengo premuto il tasto ma poi cambio idea e lo rilascio, non voglio sparare una fuga.
joeytwiddle,

16

Karabiner è attualmente incompatibile con MacOS Sierra. Un'altra soluzione compatibile con Sierra è con Keyboard Maestro (non è gratuita). Cambia il comportamento del tasto BLOC MAIUSC in Controllo tramite System Preferences-> Keyboard-> Modifier Keyscome altri hanno suggerito.

Quindi in Keyboard Maestro, imposta una macro come segue:

  • Innescato da USB Device Key Trigger
  • Premi il tasto BLOC MAIUSC sulla tastiera
  • viene toccato una volta
  • con questi modificatori: ^
  • (dovrai ripetere il trigger precedente per ogni tastiera USB che usi)
  • Quindi aggiungi un'azione Text->Type a keystroke
  • Premi Esc

1
Per essere chiari, esiste un progetto chiamato Karabiner Elements che funziona su Sierra (che è un precursore di una versione di Karabiner che verrà eseguita su Sierra). Non l'ho provato, quindi non so se questa funzionalità è disponibile o meno.
tubedogg,

5
Karabiner-Elements non supporta ancora l'azione su un tocco del tasto modificatore, che sarebbe necessario per questo.
Grokfully

Questa opzione "con questi modificatori: ^" richiede solo ^di essere premuta insieme al maiuscolo per attivare un'azione. Non è affatto ciò che è richiesto nella domanda.
defhlt

Poiché per la prima volta cambiamo Caps-Lock in modo che si comporti come Controllo attraverso le Preferenze di Sistema, KM vede l'evento USB con il tasto Control premuto. Se si omette il ^modificatore, l'azione non si innescherà mai.
Grokfully il

Se segui il percorso del maestro della tastiera, c'è un modo per mappare il tasto Esc sul tasto maiuscolo per riottenere la funzionalità di blocco maiuscole? Adoro avere il blocco maiuscole sia come ctrl che come escape.
Kvas

1

Per farlo con Karabiner Elements , che supporta macOS 10.12 e versioni successive, apri ~/.config/karabiner/karabiner.jsone aggiungi la seguente regola rulesall'array.

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

Puoi anche provare a usare ControlEscape.spoon con Hammerspoon .


Non riuscivo a farlo funzionare se non avessi rimosso i modificatori (parola chiave e tutti) nella to_if_alonesezione. Ma grazie per lo snippet. È super utile.
Michael,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.