Использование Caps Lock в качестве Esc в Mac OS X


449

Как мне заставить Caps Lockработать как Escв Mac OS X?


31
Это кажется стандартной задачей для программиста, который использует vim; отсюда мой голос, чтобы вновь открыть
Jeromy Anglim

4
Альтернативой является сопоставление Caps Lock с Control (Системные настройки> Клавиатура> Клавиши-модификаторы) и выполнение escape-последовательности Ctrl + [для esc. Полезно для Vim.
thelostspore

2
Нативное решение, которое работает в macOS Sierra: stackoverflow.com/a/41004544/1940276
Кевин Рот

1
Нативное решение, которое работает в macOS Sierra - это второй лучший ответ (от @rkusa)
Мариан Черны

Ответы:


395

Изменить: Как описано в этом ответе , более новые версии MacOS теперь имеют встроенную поддержку для привязки Caps Lockк Escape. Таким образом, больше нет необходимости устанавливать стороннее программное обеспечение для достижения этой цели.


Вот моя попытка получить исчерпывающий визуальный ответ (со ссылками) о том, как этого добиться, используя Seil (ранее известный как PCKeyboardHack).

  1. Сначала перейдите в Системные настройки , выберите « Клавиатура» , затем вкладку «Клавиатура» (первая вкладка) и нажмите « Клавиши-модификаторы» :

Шаг 1

Во всплывающем диалоговом окне установите Caps Lock Key на No Action:

не выбирай действий

2) Теперь нажмите здесь, чтобы загрузить Seil и установить его:

3) После установки у вас будет установлено новое приложение (Mountain Lion и новее), и если вы работаете в более старой ОС, вам, возможно, придется проверить новую панель «Системные настройки»:

открытый шильдик или панель настроек

4) Установите флажок «Change Caps Lock» и введите «53» в качестве кода для клавиши ESC:

установить код клавиатуры

И вы сделали! Если это не сработает сразу, вам может потребоваться перезагрузить компьютер.

Пораженный? Хотите больше контроля?

Вы также можете попробовать KeyRemap4MacBook, который на самом деле является флагманским инструментом переназначения клавиатуры pqrs.org- он также бесплатный.

Если вам нравятся эти инструменты, вы можете сделать пожертвование . Я не имею к ним никакого отношения, но я уже давно пользуюсь этими инструментами и должен сказать, что ребята отлично справились с этим, добавили функции и исправили ошибки.

Вот скриншот, чтобы показать несколько (сотни) предварительно выбираемых опций:

Picture 1.png

В PQRS также есть отличная утилита NoEjectDelay, которую вы можете использовать в сочетании с KeyRemap4MacBook для перепрограммирования клавиши Eject. После небольшой настройки я установил переключатель AirPort Wifi.

Эти утилиты предлагают неограниченную гибкость при переназначении клавиатуры Mac. Радоваться, веселиться!


3
Я хотел бы уточнить, что я использую один PCKeyboardHack без KeyRemap4Macbook в течение почти 2 лет, чтобы сделать именно это.
Россипедия

13
Обратите внимание, что если вы используете внешнюю клавиатуру, вы должны повторить первый шаг (т.е. caps lock = no action) для каждой клавиатуры. Я не смог выполнить этот шаг для своей внешней клавиатуры, и в результате блокировка клавиш не реагировала на очень быстрые нажатия клавиш из-за случайной защиты от блокировки клавиш. superuser.com/questions/317900/eliminate-macbook-capslock-delay
Джером Энглим,

11
Отличный учебник. Я сопоставил Caps Lock с Esc около года. Это было невероятно эффективно. Однажды, однако, я был в паре со старшим разработчиком. Я сказал ему, что использовал Vim в качестве основного редактора. Я тоже, сказал он. Он открыл свою машину, и мы начали работать. Когда пришла моя очередь редактировать код, я нащупал и запнулся, потому что его Caps Lock не был нанесен на карту. Я продолжал пытаться пройти весь путь до Esc, но время от времени я нажимал Caps, и тогда мои обычные команды менялись. Он научил меня, что Ctrl-c также вернет вас в визуальный режим. Сделайте себе одолжение и начните использовать Ctrl-c.
Campeterson

7
(Учиться больше каждый день) CTRL-[на самом деле является надлежащим эквивалентом ESC. stackoverflow.com/questions/5030164/…
campeterson

5
Было бы замечательно, если бы вы могли также отредактировать и упомянуть в верхней части, что теперь это встроенная функция в macOS 10.12.1 для ответа @ rkusa, чтобы новым пользователям не приходилось загружать стороннее программное обеспечение
edhurtig,

309

Начиная с macOS 10.12.1 его можно переназначить Caps Lockв Escисходное состояние (Системные настройки -> Клавиатура -> Клавиши-модификаторы).

введите описание изображения здесь


11
Потрясающие! Я обнаружил это после того, как услышал, что у нового MBP не было клавиши Escape. Похоже, Apple ожидала некоторой обратной реакции.
Энди Э

1
Запуск El Capitan 10.11.6 и эта настройка уже доступна.
zool

1
Слава Богу за это; после того, как Сьерра разбила Сейл / Карабинер, я думал, что обречен.
Филипп

4
Как ни странно, я нахожусь на 10.11.6 и не имею этой опции. Мне разрешено только переназначать esc в caps, ctrl, opt или command. Это верно для моей клавиатуры WASD v2.
Бенни Пауэрс

1
Есть ли способ сделать это через командную строку? Возможно в методе, подобном этим? github.com/herrbischoff/awesome-osx-command-line#keyboard
Джордан Элдридж

40

Я не был рад ни одному из ответов здесь, и пошел искать решение командной строки .

В macOS Sierra 10.12 Apple представила новый способ для пользователей переназначать ключи.

  • Нет необходимости возиться с системным графическим интерфейсом
  • Никаких особых привилегий не требуется
  • Полностью настраиваемый
  • Нет необходимости устанавливать какую-либо стороннюю хрень, такую ​​как PCKeyboardHack / Seil / Karabiner / KeyRemap4MacBook / DoubleCommand / NoEjectDelay

Если это звучит хорошо для вас, посмотрите hidutil.

Например, чтобы переназначить caps-lock для экранирования, обратитесь к таблице ключей и найдите, что caps-lock имеет код использования 0x39, а escape - код использования 0x29. Поместите эти коды or'd с шестнадцатеричным значением 0x700000000 в источник и dest, как это:

hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000039,"HIDKeyboardModifierMappingDst":0x700000029}]}'

Вы можете добавить другие сопоставления в той же команде. Лично мне нравится переназначать caps-lock в backspace и переназначать backspace для удаления:

hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000039,"HIDKeyboardModifierMappingDst":0x70000002A}, {"HIDKeyboardModifierMappingSrc":0x70000002A,"HIDKeyboardModifierMappingDst":0x70000004C}]}'

Чтобы увидеть текущее отображение:

hidutil property --get "UserKeyMapping"

Ваши изменения будут потеряны при перезагрузке системы. Если вы хотите, чтобы они сохранялись, поместите их в скрипт и настройте хук входа в систему:

sudo defaults write com.apple.loginwindow LoginHook /path/to/login_script.sh

3
+! это современный и правильный способ переназначения ключей в macOS
Fanckush

2
Проблема Карабинера с повторяющимися ключами заставила меня искать собственное решение для переназначения ключей. Этот пост и другой в apple.stackexchange.com очень помогли.
chb

Спасибо за это, +1! Я добавил некоторые заметки к посту Apple, которые, как мы надеемся, добавят некоторую ценность для нас, бедных людей, которым не нужна клавиша Esc, но нет Caps Lock.
трипл

Отличный метод для MacBook, у которых есть проблемы со встроенной клавиатурой. У меня были проблемы с настройками клавиатуры, поэтому я не мог переназначить там какие-либо клавиши.
Игорь

Я не смог заставить это работать должным образом с LoginHookметодом - я думаю, может быть, что-то после его выполнения выбирает мои локальные настройки клавиатуры для скандинавской клавиатуры? Во всяком случае, stackoverflow.com/a/22872222/874188 отмечает, что LoginHookэто устарело, и рекомендует использовать launchdвместо этого.
tripleee

34

Возможно.

Решение 1

Из статьи на TrueAffection.net.

  • Скачайте PCKeyboardHack и установите его.
  • Перейти к PCKeyboardHack в системных настройках.
  • Включите «Изменить Caps Lock» и установите код клавиши на 53.

Решение 2

Это решение не включает в себя исправление драйвера клавиатуры, но дает вам конкретное решение Vim.

OS X поддерживает сопоставление ключа Caps Lock с целой связкой ключей, но вы должны сделать это «вручную», редактируя файлы .plist. Процесс описан в этой статье . В качестве дополнения к этой подсказке я предлагаю сначала установить для Caps-Lock значение None в Системных настройках, затем вам нужно изменить только одно значение в файле .plist. Кроме того, вы, конечно, можете использовать Редактор списка свойств вместо того, чтобы выполнять шаги преобразования XML.

Хитрость заключается в том, чтобы сопоставить клавишу Caps Lock с клавишей Help (код 6), которой нет на большинстве клавиатур. Но если это так, он будет рассматриваться как клавиша вставки, которую вы, вероятно, в любом случае не используете, поскольку вы спрашиваете о переназначении вашего Caps Lock, чтобы не растягивать руки;)

Затем вы можете сопоставить справку и Insertключ с Escvim.

map  <Help> <Esc>
map! <Help> <Esc>
map  <Insert> <Esc>
map! <Insert> <Esc>

Это будет работать для gvim (Vim.app). Я не заставил его работать с vim в Терминале, и я не тестировал его с MacVim.

Таким образом, это довольно сложное, недоделанное решение или установка сторонней хакерской программы. Ваш выбор;)

Изменить: только что заметил решение 3, если вы используете MacVim, вы можете использовать Ctrl, Optionи Commandкак Esc. С Системными настройками тривиально сопоставить Caps Lock с одной из этих клавиш.


1
Решение 3: Как вы используете Ctrl, Option или Command в качестве Esc в MacVim? Я не могу найти этот параметр в настройках.
clizzin

Вы отображаете это в системных настройках => клавиатура.
maletor

9
Где подсказка, на которую вы намекаете?
Мэтью Шинкель

2
Малетор - там нет места, где можно сказать Маквиму, чтобы он использовал контроль как побег
Скотт Шультесс,

1
@MatthewSchinckel вот одна из таких ссылок: hints.macworld.com/article.php?story=20060825072451882
Бен Чалленор

33

Теперь намного проще сопоставить Caps Lockключ Escс macOS Sierra.

  1. Откройте Системные настройки → Клавиатура.

  2. Нажмите кнопку «Ключи модификатора» в нижнем правом углу.

  3. Щелкните раскрывающийся список рядом с аппаратным ключом, который вы хотите переназначить, и выберите Escape.

  4. Нажмите OK и закройте Системные настройки.

введите описание изображения здесь

https://9to5mac.com/2016/10/25/remap-escape-key-action-macbook-pro-macos-sierra-10-12-1-modifier-keys/


30

Единственное, что я знаю, как это сделать - привязать Caps Lock к Control, Option или Command. Это можно сделать с помощью панели «Клавиатура и мышь» в Системных настройках. Нажмите «Ключи модификаторов» в левом нижнем углу, и вы сможете переназначить Caps Lock, Control, Option и Command на любой из них.

@Craig: Это говорит о том, что Caps Lock можно использовать как обычный, то есть не переключаемый ключ. На моем MacBook, так как я повторно сопоставил Caps Lock с Control, индикатор Caps Lock никогда не загорается. Он просто действует как клавиша управления.

введите описание изображения здесь


2
красивые картинки здесь: stackoverflow.com/questions/162896/…
Кайл Кронин

1
К сожалению, не с клавиатурами Logitech, поэтому на CapsLock нет клавиши escape, нет vim == я возвращаю клавиатуру
Enric Ribas

14

Seil пока недоступен в macOS Sierra (бета-версия 10.12). Поэтому я использую Keyboard Maestro со следующими настройками:введите описание изображения здесь

Предоставьте этот комментарий github: https://github.com/tekezo/Seil/issues/68#issuecomment-230131664


2
Я использую github.com/tekezo/Karabiner-Elements (который работает на Sierra). Работает до сих пор замечательно, хотя я хотел бы, чтобы он сделал «Control_L to Control_L (+ когда вы набираете только Control_L, отправьте Escape)»
atomkirk

1
@atomkirk Не могли бы вы поделиться используемой JSON-конфигурацией Karabiner?
LandonSchropp

1
{"анкеты": [{"name": "Профиль по умолчанию", "selected": true, "simple_modification": {"caps_lock": "escape"}}]}
atomkirk


Карабинер помог мне с JSON от Атомкирка. Несмотря на скриншот выше, пользовательский интерфейс Keyboard Maestro является бесполезным, и я не смог его настроить.
Пол

10

Перепробовав несколько из этих решений, у меня есть несколько заметок:

DoubleCommand будет не позволит вам своп ЭСК и колпаков замком.

PCKeyboardHack будет позволит вам карту CapsLock бежать,но не имеет возможности отобразить переход к кепке, Последние версии позволят вам выполнить полный обмен, отредактировав обе клавиши.

Это может или не может быть достаточно для ваших нужд (я знаю, что это для моих).


1
PCKeyboardHack не позволяет вам сопоставить escape с capslock, но сопутствующее приложение KeyRemap4MacBook делает. Это позволяет сопоставить «Escape to CapsLock» и «Shift + Escape to CapsLock».
Рори О'Кейн

9

Если вы не хотите устанавливать стороннее приложение и вам действительно важен vim внутри iTerm, работает следующее:

Переустановите CapsLock в Help, как описано здесь .

Краткая версия: используйте plutil или аналогичный для редактирования ~/Library/Preferences/ByHost/.GlobalPreferences*.plist, он должен выглядеть примерно так:

<key>HIDKeyboardModifierMappingDst</key>
<integer>6</integer>
<key>HIDKeyboardModifierMappingSrc</key>
<integer>0</integer>

Запустить снова! Простой выход из системы и вход не работал для меня.

В iTerm добавьте новое сопоставление клавиш для справки: отправьте шестнадцатеричный код 0x1b, который соответствует Escape.

Я знаю, что это не совсем то, о чем просили, но я предполагаю, что намерение многих людей, ищущих решение, подобное этому, на самом деле является более специализированным вариантом.


4

Чтобы на самом деле поменять местами клавишу escape с ключом caps lock (а не просто привязать один к другому), используя PCKeyboardHack и KeyRemap4MacBook, необходимо следовать инструкциям в этой теме , сопоставив ключ блокировки caps с кодом, не используемым клавиатура, но учитывается KeyRemap4MacBook (например, 110). Затем в PCKeyboardHack выберите соответствующую опцию, которая отображает этот код клавиши для выхода (в случае 110 это «Application Key to Escape»). Вот как должны выглядеть ваши настройки KeyRemap4MacBook (при условии, что вы установили флажок «показывать только»).

введите описание изображения здесь

Первоначально я пытался опубликовать эту информацию как редактирование к отличному ответу cwd , но она была отклонена. Я призываю всех, кто хочет идти по пути, который я описал, сначала прочитать его / ее ответ.


2

Seil еще не работает на macOS Sierra, поэтому я использую элементы Karabiner , загрузите их с https://pqrs.org/latest/karabiner-elements-latest.dmg .

Либо используйте графический интерфейс, либо вставьте следующее в ~/.karabiner.d/configuration/karabiner.json:

{
  "profiles" : [
    {
      "name" : "Default profile",
      "selected" : true,
      "simple_modifications" : {
        "caps_lock" : "escape"
      }
    }
  ]
}

Обратите внимание, что элементы Karabiner ломают сенсорную панель и клавишу fn
mperrin

1

Вы также можете использовать DoubleCommand для переназначения этого и других ключей.

IIRC, он отобразит Caps Lock на Esc.


1
На самом деле, я должен был написать патч, чтобы сделать это. Это было для более старой версии, но я все еще использую это сейчас: sourceforge.net/tracker/?group_id=65339&atid=510607
Мэтью Шинкель

1

Откройте настройки клавиатуры и нажмите клавиши-модификаторы ... вы можете изменить клавишу Caps Lock на control, option, escape или command.

введите описание изображения здесь


9
Ни один из них не является "Esc", о котором спрашивал плакат. Вероятно, для использования Vim.
Рафи Джейкоби

1
@RafiJacoby Какая разница между Escи Escape? (серьезный вопрос)
byxor

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.