Jak mogę ponownie przypisać Caps Lock do Escape i Control?

22

Generalnie używam Linuksa. Często używam Vima, więc klawisz Escape jest niezwykle ważny. Często używam też innych skrótów klawiaturowych, więc Kontrola też jest „kluczowa”. W systemie Linux rozwiązałem ten problem, używając Xcape do mapowania klawisza Caps Lock na Escape, jeśli został naciśnięty sam, lub Control, jeśli został naciśnięty w połączeniu z innym klawiszem. To daje najlepsze z obu światów w zasięgu mojego małego palca. Czy mogę to zrobić na komputerze Mac?

BenjaminRH
źródło

Odpowiedzi:

19

Tak , używając Karabinera (wcześniej KeyRemap4Macbook) .

Najpierw przejdź do okienka preferencji Klawiatura, kliknij „Klawisze modyfikujące…” i zmień Caps Lock na Control. Następnie przejdź do Karabinera i wyszukaj tę opcję:

Control_L do Control_L
      (+ gdy wpiszesz tylko Control_L, wyślij Escape)

Sprawdź to i gotowe. Dzięki Karabinerowi możesz robić o wiele więcej interesujących rzeczy, takich jak mapowanie (teraz trochę bezużytecznego) klawisza Escape na klawisz Hyper z jeszcze większą liczbą skrótów klawiszowych.

0942v8653
źródło
czy jest możliwe ponowne mapowanie Esc na Caps Lock i Map Caps Lock na kontrolę i ucieczkę? Ponieważ czasami nadal czuję potrzebę używania Caps Lock do wpisywania długich wielkich liter.
Aaron Shen,
Karibiner mówi teraz, abyś zmienił Caps Lock na „Brak akcji” w preferencjach Klawiatury OSX (zamiast ustawiania go tutaj na Kontrolę) i aby użył Seap, siostrzanego programu Karabinera, aby wykonać mapowanie. Ostatnia część powyższej odpowiedzi (+ po wpisaniu Control_L tylko ...) jest nadal wykonywana w Karabiner.
ScoBe,
@AaronShen po prostu zamapuj ucieczkę do caps lock ;-).
Ven
@ScoBe Odradzam robienie tego, naprawdę nie potrzebujesz Seila,
Ven
Polecam zmniejszenie parametru Karabiner Key Overlaid Modifier> Limit czasu z 1000 ms do 200 ms . Jeśli trzymam klucz, ale zmieniam zdanie i go puszczam, nie chcę strzelać w Ucieczkę.
joeytwiddle
16

Karabiner jest obecnie niezgodny z MacOS Sierra. Kolejnym rozwiązaniem przyjaznym Sierra jest Keyboard Maestro (nie jest darmowy). Zmień zachowanie klawisza Caps-Lock na Control przez System Preferences-> Keyboard->, Modifier Keysjak sugerowali inni.

Następnie w programie Keyboard Maestro skonfiguruj makro w następujący sposób:

  • Wyzwolony przez USB Device Key Trigger
  • Naciśnij klawisz Caps-Lock na klawiaturze
  • jest stuknięty raz
  • z tymi modyfikatorami: ^
  • (konieczne będzie powtórzenie poprzedniego wyzwalacza dla każdej używanej klawiatury USB)
  • Następnie dodaj akcję Text->Type a keystroke
  • Naciśnij Esc
okropnie
źródło
1
Dla jasności istnieje projekt o nazwie Karabiner Elements , który działa na Sierra (który jest prekursorem wersji Karabiner, która będzie działać na Sierra). Nie próbowałem tego, więc nie wiem, czy ta funkcja jest dostępna, czy nie.
tubedogg
5
Karabiner-Elements nie obsługuje jeszcze działania po naciśnięciu klawisza modyfikatora, co byłoby do tego wymagane.
okropnie
Ta opcja „z tymi modyfikatorami: ^” wymaga jedynie ^naciśnięcia razem z Capslock, aby uruchomić akcję. To wcale nie jest wymagane w pytaniu.
defhlt
Odkąd po raz pierwszy zmieniliśmy Caps-Lock, aby zachowywał się jak Kontrola przez Preferencje systemowe, KM widzi zdarzenie USB z wciśniętym klawiszem Control. Jeśli pominiesz ^modyfikator, akcja nigdy się nie uruchomi.
okropnie
Jeśli wybierzesz trasę Maestro na klawiaturze, czy jest jakiś sposób odwzorowania klawisza Escape na Caps Lock, aby odzyskać funkcję Caps Lock? Uwielbiam mieć klawisze Caps Lock zarówno jako Ctrl, jak i Escape.
Kwas
1

Aby to zrobić z Karabiner Elements , który obsługuje system macOS 10.12 i nowszy, otwórz ~/.config/karabiner/karabiner.jsoni dodaj do rulestablicy następującą regułę .

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

Można również spróbować użyć ControlEscape.spoon z Hammerspoon .

Danny Guo
źródło
Nie mogłem tego uruchomić, dopóki nie usunę modyfikatorów (słowa kluczowego i wszystkich) w to_if_alonesekcji. Ale dziękuję za fragment. To jest bardzo przydatne.
Michael