Переназначение клавиш на Маке
В этой статье я бы хотел поговорить об изменении клавиш на клавиатуре. Сперва это была короткая заметка, но со временем текст вырос во что-то большее. Оказалось, есть что сказать по теме.
Вообще, я не стремлюсь менять клавиши и затачивать программы под себя. Разработчики предлагают удобные схемы, и в целом удобно, когда вы работаете на стандартных настройках. Всё же, годы за клавиатурой подталкивают к некоторым изменениям.
Главный довод в пользу изменения клавиш — физиология. У людей разная форма кистей и длина пальцев. Невозможно выпустить клавиатуру, которая подошла бы всем людям. Именно физиология и чуткое внимание к ощущениям подсказывают, что менять что-то нужно, иначе — боль в суставах.
Одно время я увлекался эргономичными клавиатурами, но быстро разочаровался в них. За огромные деньги мы получим поделие Франкенштейна: огромных размеров, тяжелое, неудобное. Такая клавиатура полностью меняет рабочее пространство, заставляет кое-что купить в довесок.
Типичные пациенты:
На последней картинке – Microsoft Sculpt. Я пользовался ей полгода, но страшно заболела левая рука.
Сам я предпочитаю внешнюю клавиатуру Эпла: маленькая, лёгкая, без проводов. Заряда хватает на месяц. Бросил в рюкзак и неси в любое место. Метал, а не пластик. Тип кнопок на ней не тот, что в последних прошках, но всё равно удобно.
Конечно, кому-то нужны кастомные эргономичные эти клавиатуры, но я решил проблему простым способом — переназначением клавиш.
Простой способ поменять клавиши на Маке — открыть настройки клавиатуры. На первой вкладке внизу кнопка “Modifier Keys…”. Откроется диаложек, где можно указать, что на что заменить. Работает без перезагрузки в разрезе устройства. Однако этот способ подойдёт только неискушенным пользователям.
Первая проблема в том, что что среди доступных клавишей нет шифта. Это довольно странно: капс, контрол, альт и прочие доступны, а шифт — нет.
Видимо, положение шифта кажется настолько “нормальным”, что разработчики решили: а что его менять? И не добавили в список. Что ж, трогать исходный шифт я и не собирался. Но назначить другой кнопке функцию шифта тоже нельзя, что очень печально.Вторая проблема — диалог не различает правые и левые кнопки. Даже быстрый взгляд на клавиатуру доказывает, что она не симметрична, и поэтому у людей могут быть предпочтения из-за физиологии. У меня именно тот случай — правый и левый Command ведут себя по-разному (причину объясню ниже). Из-за обеих причин стандартный диалог мне не подошёл.
Под Мак написана программа Karabiner Elements (в прошлом — просто Karabiner). Это убер-комбайн, с помощью которого можно переназначить что угодно, в том числе задать хитрые комбинации и комбо. Например, медленное нажатие, быстрое, связку конкретных клавиш и прочее. Я долго им пользовался, и вот что меня смущало.
Во-первых, Karabiner явно испытывает трудности с операционной системой. Пару лет назад программа радикально обновилась как раз из-за изменений в Маке (то ли в Каталине, то ли другой версии, неважно). Во-вторых, я частенько ловил баги с клавиатурой, которые смутно указывали на Karabiner, и это стало напрягать.
Например, после выхода из сна клавиатура порой не работала — как внешняя, так встроенная в ноут. Или внизу экрана всплывало уведомление, что Karabiner не заработает, пока не нажмёшь такую-то кнопку. Эти баги трудно описать, потому что обычно на них нет времени, плюс поведение то одно, то другое. Но чем-то задним чувствуешь: так быть не должно.
Я стал искать замену Karabiner, и нашёл на удивление быстро. Нужно было только погуглить.
Встроенная утилита hidutil
предлагает доступ к устройствам ввода. Это
CLI-обертка над фреймворком HIDDriverKit. Аббревиатура HID
означает Human Interface Device. Судя по документации, она доступна с версии ОС
10.15+, но я не проверял.
Hidutil
читает и записывает свойства устройств. Нас интересует свойство UserKeyMapping
— переназначение клавиш. Посмотреть текущее состояние можно
так:
hidutil property --get "UserKeyMapping"
Скорей всего, вы увидите (null)
или пустоту, потому что ещё ничего не
переназначили.
Чтобы задать правила, укажите ключ --set
. За ним следует JSON примерно такой
структуры:
{"UserKeyMapping": [ { "HIDKeyboardModifierMappingSrc": ..., "HIDKeyboardModifierMappingDst": ... } ] }
Это массив объектов с полями HIDKeyboardModifierMappingSrc
HIDKeyboardModifierMappingDst
, с чего на что менять. Значения — полные коды
клавиш. Полный код строится по правилу:0x700000000 OR <code>
, где <code>
— краткий код клавиши. Таблица кодов находится на официальной
странице Apple. Название “Keyboard Left/Right GUI” означает Command.
Таким образом, если мы хотим поменять левый Command на Alt, тело --set
будет
следующим:
{ "UserKeyMapping": [ { "HIDKeyboardModifierMappingSrc":0x7000000E7, "HIDKeyboardModifierMappingDst":0x7000000E6 } ] }
В ответ утилита покажет новое соответствие клавиш. Его же можно запросить с
помощью --get UserKeyMapping
:
UserKeyMapping:( { HIDKeyboardModifierMappingDst = 30064771300; HIDKeyboardModifierMappingSrc = 30064771302; } )
Способ работает без перезагрузки, не требует сторонних программ.
Судя по всему, он заработает на новом чипе M1, в то время как у Karabiner проблемы с новым Маком. Это лишний раз говорит в пользуhidutils
. Не хотелось бы покупать новый
Мак и воевать с клавишами, которые внезапно отвалились.Тот JSON, что вы состряпали, логично поместить куда-нибудь на GitHub или хотя бы в gist, чтобы не набирать с нуля. Вот ссылка на мой файл. Для красоты можно оформить JSON в несколько строк и как-то облагородить, но это в будущем.
Теперь объясню, какие кнопки я меняю на своей машине и какой в этом смысл. Предупреждаю, что это исключительно личный фактор, который ни к чему вас не обязывает. Ни в коем случае не топлю за то, чтобы все делали так же.
Комбинаций на самом деле немного, всего лишь три. Первая — замена Caps на Shift (0x700000039 → 0x7000000E1). Дело вот в чём: если я положу левую руку на WASD, то мизинец находится аккурат над Caps. А чтобы нажать шифт, его нужно спустить вниз. Поскольку шифт нужен примерно в тысячу раз чаще, чем капс, выбор очевиден — нужно повесить шифт на ту кнопку, что находится под мизинцем, чтобы не заставлять его перемещаться.
Да, мы лишаемся капса, но ничуть не сожалею об этом. Любой редактор умеет менять регистр по требованию. Кроме того, такая функция есть даже в главном меню Мака. Про замену капса на шифт я даже писал отдельную заметку.
Вторая комбинация — сменить правый Command на Alt (0x7000000E7 → 0x7000000E6). Должно быть, вы знаете, что я пользуюсь Емаксом. В нём две основные клавиши: Command и Meta, которые кратко обозначаются C и M. Их семантика примерно та же, что и у обычных Command и Alt. Это основная команда для буквенной клавиши (C-p, C-n) и модификация (M-p, M-n).
Обе C и M используются постоянно. Иногда я проделываю долгие комбо с зажатым Command, и большой палец сильно устает. Если добавить сюда Meta, который приходится на Alt, начинается боль в физическом смысле, потому что приходится подгибать палец. Открою интимный факт: два раза в год я делаю массаж спины и шеи, и в какой-то момент пришлось добавить левую кисть — вот до чего дошло.
Идея в том, чтобы максимально разгрузить левую руку. Для этого оставим ей на откуп только левый Command, а Meta повесим на правый Command. Это победа со всех сторон. Во-первых, теперь на C и M давят только большие, самые сильные пальцы. Во-вторых, их не нужно никуда подгибать: кнопки прямо под пальцами.
Третья и последняя замена — повесить на правый Alt функцию Control (0x7000000E6 → 0x7000000E4). Объяснение этому следующее. Мне часто
приходится копировать текст из терминала, поэтому в iTerm2 у меня работают
обычные комбинации
. Возникает вопрос, как послать сигнал Ctrl-C
,
чтобы завершить процесс. Если вы посмотрите на клавиатуру, то станет ясно —
нужно тянуться левым мизинцем к Control, что полный ужас для сустава: кисть
поворачивается влево градусов на тридцать.
Мизинец — не лучший палец для комбинаций клавиш, ему можно доверить только одну буквенную. Более лучший способ — поручить Control большому пальцу правой руки. Поскольку правый Command уже занят под Alt из-за Емакса, повесим Control на соседнюю кнопку — правый Alt. Теперь достаточно сместить правый большой палец вправо. Впрочем, это случается редко, потому что на Маке почти все функции Control выполняет Command.
Вот такая у меня раскладка и как я к ней пришёл.
Я пишу этот пост несколько дней и заметил: с удалением Karabiner Elements исчезли подвисания после выхода ноута из сна. Считаю это важными поводом отказаться от программы.
С другой стороны, у hidutils
тоже недостаток. Её эффект не сохраняется после
перезагрузки машины. Чтобы это исправить, добавьте ваш скрипт в
автозагрузку. Это можно сделать несколькими способами:
Открыть “Users & Groups” и выбрать своего пользователя. Во вкладке “Login Items” добавить путь к шелл-скрипту.
Положить в папку
~/Library/LaunchAgents
файлuser.ivan.remap.plist
примерно такого содержания:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1. 0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>user.ivan.remap</string> <key>ProgramArguments</key> <array><string>/path/to/remapping/script.sh</string></array> <key>RunAtLoad</key> <true/> </dict> </plist>
Беглое знакомство с hidutils
подсказывает, что утилита (и стоящий за ней
фреймворк) могут довольно многое. Было бы здорово прописать опции не только
клавиатуры, но и тачпада, мыши и так далее, чтобы не париться при смене
ноута. Например, однажды я час искал нужную галочку для тачпада, а она оказалась
в “Accessibility”.
Но графического интерфейса у hidutils
нет. Вот если бы кто-то написал
веб-страничку с конструктором опций на JavaScript. Указываешь, что изменить, а
на выходе получаешь шелл-скрипт.
Поделитесь, какие клавиши изменяете вы и что для этого используете — добавлю ссылки в статью.
UPD
- Генератор скрипта для hidutil
Как переназначить клавишу клавиатуры в Windows 11
В этом руководстве мы покажем вам, как переназначить клавишу на клавиатуре в Windows 11. Может быть множество разных причин, по которым вы можете предпочесть выполнить переназначение клавиш. Для многих это, как правило, простота взаимодействия с пользователем, поскольку они связывают более длинные комбинации клавиш с одной клавишей. [after all, who would press the Ctrl + Alt + Shift + Win + L keys to open LinkedIn!]. Однако для других это не просто вопрос комфорта, они вынуждены делать это по принуждению.
Одним из таких примеров может быть неработающая одна из клавиш клавиатуры. В связи с этим клавиша Shift на моей клавиатуре недавно попрощалась. В результате я не смог открыть Диспетчер задач, безвозвратно удалить файл или использовать заглавную букву, не выбрав обходные пути. Если вы тоже застряли в подобной ситуации, то это руководство расскажет вам, как переназначить клавишу на клавиатуре в Windows 11. Следуйте инструкциям.
Как переназначить клавишу клавиатуры в Windows 11
Хотя обычно мы рассматриваем эти руководства с помощью редактора реестра, на этот раз мы будем использовать стороннее приложение, разработанное Microsoft. Причина, по которой мы не используем реестр, заключается в том, что каждый ключ поставляется с другим 32-битным D-словом или двоичным значением.
Программы для Windows, мобильные приложения, игры — ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале — Подписывайтесь:)
Таким образом, перечисление значений для каждой из клавиш, присутствующих на клавиатуре, оказалось бы довольно громоздким процессом. Более того, поскольку приложение с открытым исходным кодом предоставляется Microsoft, с ним не возникает никаких проблем. Итак, на этой оптимистичной ноте приступим.
- Для начала скачайте Power Toys из GitHub [Direct Download: PowerToysSetup-0.58.0-x64.exe].
- Затем запустите его и нажмите «Установить». [or click Options to change its installation directory]. После установки откройте его.
- Затем перейдите в «Диспетчер клавиатуры» с левой стороны и нажмите «Открыть настройки».
- После этого нажмите «Переназначить ключ».
- Теперь нажмите на знак плюс под Physical Key.
- Затем выберите из раскрывающегося списка тот ключ, которому вы хотите передать обязанности. Например, в моем случае не работает клавиша Shift, а я хочу, чтобы левая клавиша Alt выполняла свои обязанности. Поэтому я добавлю сюда левую клавишу Alt.
- После этого щелкните стрелку раскрывающегося списка рядом с Mapped To.
- Теперь выберите ключ из раскрывающегося списка, который вы хотите переназначить. [in my case, it is the Shift key]. Затем нажмите OK в правом верхнем углу.
- Теперь вы получите диалоговое окно подтверждения, нажмите «Все равно продолжить».
- Вот и все. Переназначение клавиши клавиатуры на ПК с Windows 11 завершено.
Как отключить клавишу клавиатуры в Windows 11
Если в какой-то момент времени вы захотите отменить процесс, другими словами, отменить сопоставление ключей, то вот что вам нужно сделать.
- Запустите Power Toys и перейдите в Диспетчер клавиатуры.
- Затем нажмите «Открыть настройки» и перейдите к «Переназначить ключ».
- Теперь щелкните значок Удалить рядом с отображением.
Вот и все. Это были шаги по переназначению клавиши на клавиатуре в Windows 11. Мы также перечислили шаги для их отмены. Если у вас есть какие-либо вопросы относительно вышеупомянутых шагов, сообщите нам об этом в комментариях. Мы вернемся к вам с решением в ближайшее время.
Похожие записи
Коды клавиатуры
Коды клавиатурыДоступна более новая версия Макса. Нажмите здесь, чтобы получить доступ к последней версии этого документа.
Четвертый выход объектов key и keyup выводит a независимый от клавиатуры код, который можно использовать для обнаружения нажатия и отпускания клавиш как описано ниже.
При нажатии буквенной или цифровой клавиши значения, сообщаемые из этого источника, соответствуют несмещенная версия Unicode (ASCII) нажатой клавиши.
При нажатии клавиши, которая является символьной, но не буквой или цифрой, значение Unicode символа клавиши, которое будет выводиться клавиатурой , когда клавиша Shift не нажата, выводится . (Например, на клавиатурах США есть ключ как с одинарной, так и с двойной кавычкой. Когда эта клавиша нажата, ключевой объект сообщит об одинарной кавычке.
Другие клавиши, такие как функция, главная страница, страница вверх и т. д., выводят согласованные значения, не зависящие от клавиатура на каждой платформе. Значения перечислены ниже:
- (нет) : -1
- Клавиша пробела : -2
- Побег : -3
- Возврат/Ввод : -4
- Вкладка : -5
- Удалить : -6
- Возврат : -7
- Вставка : -8
- Стрелка вверх : -9
- Стрелка вниз : -10
- Стрелка влево : -11
- Стрелка вправо : -12
- Страница вверх : -13
- Страница вниз : -14
- Дом : -15
- Конец : -16
- F1 (функциональная клавиша): -17
- F2 (функциональная клавиша): -18
- F3 (функциональная клавиша): -19
- F4 (функциональная клавиша): -20
- F5 (функциональная клавиша): -21
- F6 (функциональная клавиша): -22
- F7 (функциональная клавиша): -23
- F8 (функциональная клавиша): -24
- F9 (функциональная клавиша): -25
- F10 (функциональная клавиша): -26
- F11 (функциональная клавиша): -27
- F12 (функциональная клавиша): -28
- F13 (функциональная клавиша): -29
- F14 (функциональная клавиша): -30
- F15 (функциональная клавиша): -31
- F16 (функциональная клавиша): -32
- 0 (цифровая клавиатура): -33
- 1 (цифровой блок): -34
- 2 (цифровой блок): -35
- 3 (цифровой блок): -36
- 4 (цифровой блок): -37
- 5 (цифровой блок): -38
- 6 (цифровой блок): -39
- 7 (цифровой блок): -40
- 8 (цифровой блок): -41
- 9 (цифровой блок): -42
- Добавить (цифровая клавиатура): -43
- Вычесть (цифровой блок): -44
- Умножить (цифровая клавиатура): -45
- Разделить (цифровой блок): -46
- Разделитель (цифровой блок): -47
- Десятичный (цифровой блок): -48
- Равен (цифровой блок): -49
- Удалить (цифровая клавиатура): -50
- Воспроизведение/Пауза : -51
- Стоп : -52
- Следующий трек : -53
- Превтрак : -54
- Справка : -55
: JavaScript и DHTML :: Программирование :: eTutorials.
org- Домашняя страница
- Программирование
- JavaScript и DHTML
Коды клавиш числовые значения, соответствующие физическим клавишам на клавиатуре но не обязательно соответствуют конкретному персонажу. Для Например, клавиша A на клавиатуре производит тот же код клавиши, когда нажата, даже если ее символьный код может быть 65 (верхняя буква A) или 97 (строчная a), в зависимости от того, нажата ли клавиша Shift в в то же время. Коды клавиш не зависят от клавиш-модификаторов. Характер значения (см. Приложение А) можно считать из событие onkeypress, а значения клавиш, включая навигационные и функциональные клавиши доступны из События onkeydown и onkeyup. В Таблице B-1 перечислены все ключи на типичном американском Английская клавиатура и соответствующие им коды клавиш.
Альт. | 18 | Ф5 | 116 | |
Стрелка вниз | 40 | Ф6 | 117 | |
Стрелка влево | 37 | Ф7 | 118 | |
Стрелка вправо | 39 | F8 | 119 | |
Стрелка вверх | 38 | Ф9 | 120 | |
Возврат | 8 | Ф10 | 121 | |
Caps Lock | 20 | Ф11 | 122 | |
Контр. | 17 | Ф12 | 123 | |
Удалить | 46 | Дом | 36 | |
Конец | 35 | Вставка | 45 | |
Введите | 13 | Цифровой замок | 144 | |
Esc | 27 | (Цифровой Блок) — | 109 | |
Ф1 | 112 | (цифровой блок) * | 106 | |
Ф2 | 113 | (Цифровой Блок) . | 110 | |
Ф3 | 114 | (цифровой блок) / | 111 | |
Ф4 | 115 | (цифровой блок) + | 107 | |
(цифровая клавиатура) 0 | 96 | Р | 80 | |
(Цифровой Блок) 1 | 97 | В | 81 | |
(цифровой блок) 2 | 98 | Р | 82 | |
(Цифровой Блок) 3 | 99 | С | 83 | |
(Цифровой Блок) 4 | 100 | Т | 84 | |
(Цифровой Блок) 5 | 101 | У | 85 | |
(цифровой блок) 6 | 102 | В | 86 | |
(цифровой блок) 7 | 103 | Вт | 87 | |
(цифровой блок) 8 | 104 | х | 88 | |
(Цифровой Блок) 9 | 105 | Д | 89 | |
Страница вниз | 34 | З | 90 | |
Страница вверх | 33 | 1 | 49 | |
Пауза | 19 | 2 | 50 | |
Печать экрана | 44 | 3 | 51 | |
Замок прокрутки | 145 | 4 | 52 | |
Смена | 16 | 5 | 53 | |
Пробел | 32 | 6 | 54 | |
Вкладка | 9 | 7 | 55 | |
А | 65 | 8 | 56 | |
Б | 66 | 9 | 57 | |
С | 67 | 0 | 48 | |
Д | 68 | ` | 222 | |
Е | 69 | — | 189 | |
Ф | 70 | , | 188 | |
Г | 71 | . | 190 | |
Х | 72 | / | 191 | |
я | 73 | ; | 186 | |
Дж | 74 | [ | 219 | |
К | 75 | \ | 220 | |
л | 76 | ] | 221 | |
М | 77 | ` | 192 | |
Н | 78 | = | 187 | |
О | 79 |
Включите JavaScript для просмотра комментариев, созданных с помощью Disqus.
|
Ваш комментарий будет первым