Как заменить клавишу на клавиатуре на другую
Перейти к содержимому

Как заменить клавишу на клавиатуре на другую

  • автор:

Как заменить клавишу на клавиатуре на другую

Иногда возникает желание переместить или отключить какие-то кнопки клавиатуры. Мысль, сделать это физически, не всегда плодотворна, хотя я встречал советы, выломать Caps Lock или Ins. Функциональность компьютерной клавиатуры в определенных пределах можно подогнать и софтверным путем. Начиная с Windows 2000 (включая XP, Vista и 7), существует возможность переопределения или отключения клавиш, для чего необходимо внести специальную запись в системный реестр Windows.

Софт и решения
► Спецсимволы – быстрый набор
► Буфер обмена – всегда на виду
► Картинки & Exif –
без инсталляции
► Смотрим GIF-анимации как нам угодно

Плюс данного способа заключается в том, что изменения действуют для всех приложений, для самой Windows, в том числе в окне командной строки («консоль»). По понятным причинам функциональность клавиш при работе с BIOS не может быть изменена таким образом. Для сравнения, другие механизмы имеют более ограниченный «радиус действия»: макросы работают лишь внутри отдельно взятых прикладных программ; утилита ЮNIK преследует другую цель, а именно присвоение символьным клавишам произвольных символьных значений, со служебными клавишами она не работает

Важная оговорка: В то время как «ядро» механизма (стандартные клавиши, настройка всего компьютера целиком) работает единообразно, дополнительные функции требуют учета особенностей конкретной версии Windows и/или компьютера. Так описанная ниже перенастройка «валютных» клавиш ноутбуков фирмы Acer работает не во всех моделях. В некоторых версиях Windows возможно присвоение разных схем переопределения отдельным пользователям одного и того же компьютера.

Чаще всего необходимость в переопределении клавиш может возникать у пользователей ноутбуков. Особенность ноутбучных клавиатур заключается в том, что служебные клавиши часто располагаются по-разному. По этой причине могут возникать проблемы, например:
(1) При переходе с одного ноутбука на другой приходится переучиваться.
(2) Необходимо попеременно работать с несколькими компьютерами с разным рас­по­ложе­нием отдельных клавиш, например, на стандартной клавиатуре десктопа и нестандартной ноутбука.
(3) От приобретения неплохого ноутбука приходится отказаться по причине неудачного рас­положения всего лишь нескольких, но важных клавиш.

Как это делается
Типичная ошибка
В этом треде на «Волшебном форуме» используется неверный путь для размещения записи Scancode Map.

Необходимые изменения в реестр можно вносить разными способами. В частности, в Интернете находится (расположено & можно найти) некоторое количество программ, которые могут сделать это автоматически. Мы рассмотрим здесь правку реестра вручную, справиться с чем может, в принципе, почти любой мало-мальски знакомый с компьютером пользователь. Для этого запускаем программу regedit (Пуск/Start – Выполнить/Run – regedit). В реестре ищем позицию:

Создаем здесь новую двоичную запись («двоичный параметр») под названием Scancode Map. Плавающее меню «Создать» и диалог для обработки двоичного параметра, показанные на картинках ниже, вызываются кликом правой кнопки мыши, соответственно внутри пустого пространства редактора реестра либо по имени параметра, который нужно изменить. Эти команды можно вызвать и через позицию «Правка» меню окна regedit.

Данная запись может быть отредактирована средствами regedit.

Она имеет строго предписанную структуру, описание которой может быть найдено на этой странице сайта Microsoft.

Cтруктуру данной строки можно пояснить на примере ниже, все числа – в шестнадцатеричной форме (hexadecimal):

00 00 00 00 00 00 00 00 04 00 00 00 53 E0 52 E0 52 E0 53 E0 00 00 3A 00 00 00 00 00
всегда нули число записей первая замена вторая замена третья замена всегда нули
Меняем местами Ins и Del Отключаем Caps Lock

Группировки по две шестнадцатеричные цифры – 00, E0, 3A и т.д. – означают отдельные байты, знание чего пригодится нам чуть ниже. Промежутки введены исключительно для удобства восприятия человеком, ту же самую строчку можно записать следующим образом:

Поле число записей содержит число полей по 4 байта (= 8 шестнадцатиричных цифр; = 32 бита), расположенных после этого этого поля, и равно числу замен + 1. Если строка Scancode Map создана, но ни одна клавиша не переназначена, то это поле должно содержать значение 1.

В более развернутом виде, число записей образуется путем суммирования следующих позиций:
(1: факультативно) число пар клавиш, обменивающихся своими функциями, * 2 +
(2: факультативно) число клавиш, получающих новые функции, но не отдающих свои +
(3: факультативно) число отключаемых клавиш +
(4: всегда) один (последняя цепочка нулей).
Например, если мы меняем местами Del и Ins, что требует две записи, а Caps Lock отключаем совсем, для чего нужна одна запись, то здесь нужно поставить число 04000000 (1*2 + 0 + 1 + 1).

Ключевую роль играют поля замена , содержащие т.н. скан-коды клавиш, которые генерируются клавиатурой. Скан-коды, как правило, состоят из одного или двух байт, хотя известны и более длинные комбинации. В реестре всегда должны быть указаны два байта (= 4 цифры), поэтому, если скан-код состоит из одного байта (= две цифры), то две недостающие цифры просто заменяются нулями. Сразу нужно указать на то, что порядок записи байтов в реестр обратный (т.н. little endian). Проиллюстрировать это лучше всего на примерах:

  • скан-код клавиши Enter: 1C; для получения двухбайтовой комбинации это число нужно предварить двумя нулями, итого получаем: 00 1С; при вставке в реестр нужно поменять порядок байт на противоположный: 1С 00
  • скан-код клавиши PgUp изначально содержит два байта: E0 49; следовательно, нам нужно лишь поменять их местами при записи в реестр: 49 E0

Каждое из полей первая и вторая замена содержат скан-коды двух клавиш. Вначале идут четыре цифры, означающие скан-код той клавиши, функцию которой данная физическая клавиша должна начать выполнять после переопределения. Последние четыре цифры означают первоначальный скан-код самой физической клавиши, что соответствует символу, который на нее нанесен. Еще раз обратим внимание: порядок пар цифр (= байтов), вводимых в реестр, должен быть обратным по сравнению со скан-кодом. Структура отдельной замены выглядит следующим образом:

0E 00 38 E0
0E 00 38 E0
Новая функция переназначаемой клавиши – «Backspace» (скан-код: 0E или 00 0E) Изначальная функция переназначаемой клавиши – «Правый Alt» (скан-код: E0 38)

Каждая замена присваивает новую функцию лишь одной клавише, по причине чего, для обмена функциями между двумя клавишами необходимы две замены. В таком случае вторая замена содержит те же коды, но записанные наоборот. В принципе, можно присваивать новые функции не попарно, а произвольно. Главное, не запутаться потом самому.

В случае, если клавиша просто отключается ( третья замена ), то вместо скан-кода новой функции ставятся четыре нуля. Например, запись для отмены (запрета, деактивации) клавиши Caps Lock будет выглядеть следующим образом: 0000 3A00.

Список скан-кодов, а также общую информацию об этом механизме применительно к операционным системам Windows можно получить из файла scancode.doc, который скачивается с сайта компании Microsoft. Так как этот файл содержит много другой информации и слегка устарел (он датирован 2000 годом), я сделал собственную таблицу скан-кодов для клавиатуры QWERTY. Бóльшую часть кодов я мог экспериментально наблюдать хотя бы у одного их моих компьютеров.

MD5: bf9cd7ae993c11301914fa19c548decd
SHA-1: d5e1e71c5d4f67c20fec9415acf78c9a8c1832e1

Можно воспользоваться и простой утилитой KeyCode.exe. Для вставки в реестр используется шестнадцатеричное значение из левого поля в сегменте Scan Code initially. В сегменте Scan Code reaching your Application показывается значение скан-кода после переопределения. Если такового нет, то соответствующие – шестнадцатеричные (слева) и десятичные (справа) – значения обоих сегментов должны совпадать. Утилита работает описанным образом для подавляющего большинства стандартных клавиш. Дополнительные технические детали относительно работы KeyCode.exe и скан-кодов приведены на этой странице.

После изменения реестра компьютер необходимо перезагрузить либо выйти/войти с завершением сеанса текущего пользователя.

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

«The Application key can be located wherever it appropriately fits.»
Microsoft

В какой-то момент развития компьютеростроения стандартная клавиатура показалась скучноватой и компания Microsoft решила обогатить ее двумя (или тремя, как считать) новыми клавишами. Одной из них стала клавиша Application, назначение которой заключалось в вызове контекстного (= плавающего) меню. Однако, так как пользователи привыкли вызывать это меню правой кнопкой мыши, популярность новой клавиши оказалась скромной. Отказаться от нее совсем было нельзя, иначе такая клавиатура не прошла бы тест на Windows-совместимость и не смогла бы носить гордый предикат Designed for Windows YX, а вот отправить куда-нибудь на периферию, можно было вполне, тем более что на это было дано явное разрешение самим Майкрософтом. Для сравнения, подобная вольность в отношении другой новой кнопки (или кнопок) с логотипом Windows не приветствовалась, ее следовало располагать поблизости от вспомогательных, но важных клавиш Ctrl, Alt и Shift.

Большинство производителей не воспользовались великодушием поставщика ОСов и слепо влепили кнопку Application туда, где ее нарисовали программисты из Редмонда, т.е. между правыми Alt и Ctrl. Иным был подход компании Toshiba, которая отправила Application в крайний правый угол, а ценное место заняла кнопками |, Ins и Del. Насчет правильности решения в отношении первых двух не уверен, а вот расположение Del в районе между клавишей Space (Пробел) и блоком стрелочных клавиш мне понравилось. В итоге чего на своем новом ноутбуке, пришедшем на смену Тошибе, я присвоил кнопке Application функцию Delete. Заодно, клавиши Ins и Del оказались разнесенными, что тоже является положительным эффектом.

Скан-код клавиши Application – E0 5D; Del – E0 53. Следовательно, строчка для обмена функциями будет выглядеть следующим образом:

00000000 00000000 03000000 5DE053E0 53E05DE0 00000000

Зачем нам валюта?

При разработке своих ноутбуков фирма Acer проявила чудеса инновативности (или все же инновационности?) и ввела в блоке «стрелочных» клавиш две отдельные кнопки для валютных единиц: € и $. Лично мне оба этих знака нужны нечасто. А вот против того, чтобы рядом с четырьмя стрелочными клавишами находилась пара других для управления курсором, например, Home и End, я ничего не имею. Кстати, именно таково конструктивное решение в некоторых ноут- и нетбуках, например, LG X110. Интересно отметить, что хотя этот нетбук и производится на основе MSI Wind, но его клавиатура представляет собой специальную разработку: Это касается не только разумного расположения клавиш, но и прекрасных механических характеристик; на мой взгляд клавиатура LG X110/130 на текущий момент является одной из лучших в классе нетбуков.

Скан-код клавиши «евро» – E0 33; «доллар» – E0 34. Следовательно, строчка для присвоения обеим клавишам значений Home и End, соответственно, будет выглядеть следующим образом:

00000000 00000000 03000000 47E033E0 4FE034E0 00000000

Замечание : Для получения нужного эффекта при переназначении «валютных» клавиш в ноутбуках фирмы Acer, загружаемая по умолчанию утилита Launch Manager должна быть выгружена. Если по каким-то причинам вы не можете пойти на этот радикальный шаг, то в файле mmkeybd.cfg (расположенном в директории программы, скорее всего, C:\Program Files\Launch Manager) нужно закомментировать соответствующие строчки (номера клавиш в начале строк могут быть другими, ориентироваться при поиске следует на скан-коды и комментарии; клавиша Dollar Symbol может называться Money Symbol):

; Key 23 = 1, E0,33, E0,B3,F508,Euro Symbol
; Key 24 = 1, E0,34, E0,B4,F509,Dollar Symbol

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

В ноутбуках фирмы Toshiba Launch Manager называется Easy Button, а соответствующий конфигурационный файл находится в директории этой программы C:\Program Files\EzButton и может называться ezbutton.cfg или cpldbl10.cfg.

Коварная Fn-кциональность

В ноутбучных и малогабаритных клавиатурах используется клавиша Fn . Как правило, она находится справа от левого Ctrl. У ноутбуков Lenovo – наоборот. В некоторых ноутбуках, например, lenovo x100e в BIOS’е есть настройка, позволяющая поменять левый Ctrl и Fn местами. Техническая реализация клавиши Fn отличается от других и привязана к «железу», а не к операционной системе, а это означает, что механизм переопределения с помощью записи в реестр Windows здесь не поможет. Поэтому, хотя эта клавиша и может генерировать скан-код – неодинаковый у разных моделей ноутбуков –, ее полноценное переопределение с помощью записи в реестр, как подтвердили эксперименты, невозможно. Даже если клавише Fn присвоить какое-то другое значение скан-кода, и она будет выполнять соответствующую ему новую функцию, свою прежнюю функциональность она при этом не потеряет. Аналогично, если присвоить скан-код клавиши Fn какой-то другой, это не приведет к тому, что эта другая клавиша начнет выполнять функции Fn.

Вместе с тем, я допускаю, что в каких-то моделях ноутбуков (которые можно назвать «100 проц. Win-book») или клавиатур такое переназначение все-таки возможно, поэтому стоит, как минимум, попробовать. Скан-код клавиши Fn может быть определен с помощью представленной выше утилиты KeyCode. Последующее ничем не отличается от переназначения других клавиш.

Внимание : Манипуляции с системным реестром могут привести к сбоям в работе с компьютером! Автор данной страницы не несет ответственности за вызванные тем самым проблемы.

Как переназначить одну клавишу на другую (тем, у кого не срабатывает нажатие кнопки на клавиатуре)

vmesto-odnoy-klavishi-budet-srabatyivat-drugaya

Вопрос от пользователя

Здравствуйте.

У меня ноутбуку уже где-то около 4-5 лет. И клавиша «я/z» перестала срабатывать (точнее, если на нее сильно нажать — только тогда сработает). Хотел заменить клавиатуру, но в точности такой же нет (прилаживать похожую — это значит испортить ноутбук).

Не подскажите, как вместо «я» переназначить клавишу, скажем, на левый «Ctrl (им все равно почти не пользуюсь, привык к правому). Пробовал утилиты KeyExtender, SharpKeys (и еще какую-то, название уже не помню), но они у меня почему-то не заработали (возможно защита системы не дает).

PS использую сейчас Windows 8.

Также добавлю, что с подобной задачей сталкиваются не только те, у кого не работает определенная клавиша, но и те, кто хочет улучшить управляемость персонажа в игре, задать на одну клавишу сразу последовательность нажатий, те, кто хочет вообще отключить лишние кнопки (например, такие могут быть на мультимедийной клавиатуре) .

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

Приступим к делу.

«Меняем» одну кнопку на другую

�� MapKeyboard

MapKeyboard: всего три действия для замены клавиши (кликабельно!)

MapKeyboard: всего три действия для замены клавиши (кликабельно!)

Одна из самых надежных в плане работы утилит. По крайней мере у меня она работала как в «старых» Windows 2000/XP, так и в относительно новых ОС Windows 8/10/11.

Утилита очень компактная и не нуждается в установке. После запуска, для замены клавиши, вам нужно выполнить всего 3 действия (они у меня помечены на скрине выше):

  1. выбрать клавишу, взамен неработающий (например, левый Ctrl) ;
  2. затем указать в графе «Remap selected key to» клавишу, которая не работает (т.е. вместо нее будет использован левый Ctrl) ;
  3. нажать кнопку сохранения «Save layout» (система будет перезагружена) . После перезагрузки — вместо Ctrl, будет срабатывать кнопка «Z».

Если вы хотите сбросить все введенные изменения: воспользуйтесь кнопкой «Reset keyboard layout» .

Кстати, утилиту рекомендуется запускать от имени администратора. Для этого, после ее извлечения из архива, щелкните по исполняемому файлу правой кнопкой мышки и выберите «Запуск от имени админа. «. (см. пример ниже).

Запуск от имени администратора

Запуск от имени администратора

�� PowerToys

Эта утилита обладает лучшей совместностью с ОС Windows 10 (работает во всех ее версиях!). К тому же, отключать и переназначать клавиши в ней простой и быстро!

Рассмотрю краткий пример.

1) После установки и запуска утилиты — необходимо будет открыть раздел «Keyboard Manager» и нажать по кнопке «Remap a key» . ��

Утилита PowerToys - настройка клавиш

Утилита PowerToys — настройка клавиш

  • клавишу, которую будем менять (или отключать) — она слева (в моем примере «Numpad 0»);
  • а справа указать то, на что ее меняем — например, «Undefined» (если ее совсем отключаем) или указать конкретную клавишу (сочетание).

Undefined — клавиша будет отключена (Утилита PowerToys).

Undefined — клавиша будет отключена (Утилита PowerToys).

Вот так всё просто! ��

�� KeyTweak

Сайт разработчика: http://webpages.charter.net/krumsick/

Главное окноДействие 1

Главное окно KeyTweak: действие №1

Простая, но надежная программа, позволяющая менять назначение клавиш на клавиатуре. Позволяет поменять scan-код клавиш между собой, либо вообще отключить отдельные клавиши.

Отмечу, что пользоваться программой крайне просто (несмотря на то, что у нее нет перевода на русский) . Сначала выбираете клавишу, которая у вас плохо срабатывает, затем в графе «Choose New Remmaping» указываете клавишу взамен, и нажимаете кнопку «Remap Key» (см. скрин выше) .

После чего примите изменения (кнопка «Apply» в правом нижнем углу экрана) и согласитесь на перезагрузку компьютера.

Применяем изменения

Собственно, перезагрузившись, ваши клавиши станут выполнять «новые» назначенные действия. Удобный, простой, и эффективно работающий инструмент!

�� Key Remapper

Главное окно программы

Главное окно программы (после установки и запуска программы).

Эту программу просто не мог не отметить в этой статье. Она не просто позволяет переназначать отдельные клавиши клавиатуры, но и позволяет задавать целые комбинации нажатий: как вам, например, если на колесико мышки вы повесите Alt+Shift+Esc (быстрое переключение программ) ?!

Также с помощью кнопок на клавиатуре можно эмулировать работу мышки.

И еще одна важная деталь: настроить замену можно только в определенных приложениях (что, несомненно, понравиться любителям игр: ведь можно получить некоторое преимущество и ускорить свою реакцию, если по нажатию на одну кнопку — будет выполняться целая комбинация!). ��

Программа поддерживает несколько профилей (например, можно создать набор замен под каждую игру в отдельности).

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

Что касается использования: то здесь все просто:

  • указываете сначала ту клавишу, которую хотите поменять;
  • а затем, во второй графе, ту клавишу, которая заменит ее. См. скрин ниже.

Обратите внимание, что задавать можно целые комбинации

Обратите внимание, что задавать можно целые комбинации

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

�� В помощь!

Если вышеприведенные программы вам никак не помогли — попробуйте просто отключить ненужную клавишу . Например, в играх часто мешается Win или Shift — их отключение не займет у вас более 30 сек.!

Первая публикация: 16.05.2018

Your access to this site has been limited by the site owner

If you think you have been blocked in error, contact the owner of this site for assistance.

If you are a WordPress user with administrative privileges on this site, please enter your email address in the box below and click «Send». You will then receive an email that helps you regain access.

Block Technical Data

Block Reason: Access from your area has been temporarily limited for security reasons.
Time: Fri, 16 Feb 2024 9:50:07 GMT

About Wordfence

Wordfence is a security plugin installed on over 4 million WordPress sites. The owner of this site is using Wordfence to manage access to their site.

You can also read the documentation to learn about Wordfence’s blocking tools, or visit wordfence.com to learn more about Wordfence.

Click here to learn more: Documentation

Generated by Wordfence at Fri, 16 Feb 2024 9:50:07 GMT.
Your computer’s time: .

Переназначение клавиш на Маке

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

Вообще, я не стремлюсь менять клавиши и затачивать программы под себя. Разработчики предлагают удобные схемы, и в целом удобно, когда вы работаете на стандартных настройках. Всё же, годы за клавиатурой подталкивают к некоторым изменениям.

Главный довод в пользу изменения клавиш — физиология. У людей разная форма кистей и длина пальцев. Невозможно выпустить клавиатуру, которая подошла бы всем людям. Именно физиология и чуткое внимание к ощущениям подсказывают, что менять что-то нужно, иначе — боль в суставах.

Одно время я увлекался эргономичными клавиатурами, но быстро разочаровался в них. За огромные деньги мы получим поделие Франкенштейна: огромных размеров, тяжелое, неудобное. Такая клавиатура полностью меняет рабочее пространство, заставляет кое-что купить в довесок. Её не возьмешь в командировку или на дачу, словом — нет.

На последней картинке – 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

, где — краткий код клавиши. Таблица кодов находится на официальной странице 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 у меня работают обычные комбинации Command-C/V . Возникает вопрос, как послать сигнал Ctrl-C , чтобы завершить процесс. Если вы посмотрите на клавиатуру, то станет ясно — нужно тянуться левым мизинцем к Control, что полный ужас для сустава: кисть поворачивается влево градусов на тридцать.

Мизинец — не лучший палец для комбинаций клавиш, ему можно доверить только одну буквенную. Более лучший способ — поручить Control большому пальцу правой руки. Поскольку правый Command уже занят под Alt из-за Емакса, повесим Control на соседнюю кнопку — правый Alt. Теперь достаточно сместить правый большой палец вправо. Впрочем, это случается редко, потому что на Маке почти все функции Control выполняет Command.

Вот такая у меня раскладка и как я к ней пришёл.

Я пишу этот пост несколько дней и заметил: с удалением Karabiner Elements исчезли подвисания после выхода ноута из сна. Считаю это важными поводом отказаться от программы.

С другой стороны, у hidutils тоже недостаток. Её эффект не сохраняется после перезагрузки машины. Чтобы это исправить, добавьте ваш скрипт в автозагрузку. Это можно сделать несколькими способами:

  1. Открыть “Users & Groups” и выбрать своего пользователя. Во вкладке “Login Items” добавить путь к шелл-скрипту.
  2. Положить в папку ~/Library/LaunchAgents файл user.ivan.remap.plist примерно такого содержания:
   version="1.0">  Label user.ivan.remap ProgramArguments  /path/to/remapping/script.sh  RunAtLoad    

Беглое знакомство с hidutils подсказывает, что утилита (и стоящий за ней фреймворк) могут довольно многое. Было бы здорово прописать опции не только клавиатуры, но и тачпада, мыши и так далее, чтобы не париться при смене ноута. Например, однажды я час искал нужную галочку для тачпада, а она оказалась в “Accessibility”.

Но графического интерфейса у hidutils нет. Вот если бы кто-то написал веб-страничку с конструктором опций на JavaScript. Указываешь, что изменить, а на выходе получаешь шелл-скрипт.

Поделитесь, какие клавиши изменяете вы и что для этого используете — добавлю ссылки в статью.

UPD

Нашли ошибку? Выделите мышкой и нажмите Ctrl/⌘+Enter

В «Karabiner Elements» мне нравиться что там есть сложные комбинации.
Например у меня Caps Lock замаплена таким образом, что если
я просто однократно нажму, то это будет клавиша Escape, а если держать зажатой
то это уже будет Control.

https://ke-complex-modifica.
(Change caps_lock to control if pressed with other keys, to escape if pressed alone.)

Да, Карабинер умеет очень сложные комбо, я одно время искал на Гитхабе конфиги умельцев.

Иван! Благодарю за статью! как я рад что на неё нарвался! у меня macbook air m1 и на нём всё заработало. Я сделал две замены: правый Cmd назначил на него F18 и затем переключение языка, а правый Alt назначил ему F19 и назначил в меню finder строку: На уровень выше. В win для этого используется Backspace и я этим пользовался, очень мне удобно, привычно одной клавишей выходить на уровень выше в папке и благодаря смене функций клавиш я смог это назначить и здесь. Благодарю!

Добрый день. Юзают Хакинтош с обычной РС клавиатурой. Хочу переназначить сочетание клавиш CMD+вправо (влево) на HOME и END соответственно. Вопрос: как выяснить код сочетания искомых клавиш?

Добрый день. Юзают Хакинтош с обычной РС клавиатурой. Хочу переназначить сочетание клавиш CMD+вправо (влево) на HOME и END соответственно. Вопрос: как выяснить код сочетания искомых клавиш?

hidutil property --set "UserKeyMapping < "UserKeyMapping": [ < "HIDKeyboardModifierMappingSrc":0x7000000E6, "HIDKeyboardModifierMappingDst":0x70000004C >] > 

В терминале не работает команда, что я делаю не так, подскажите?

Разобрался с командой ))

forward delete устанавливает на правый OPT, если кому-то нужно

Была проблема в кавычках и переносах строк. Проще всего будет составить plist-файл и поместить по этому пути: ~/Library/LaunchAgents/com.local.KeyRemapping.plist

    Label com.local.KeyRemapping ProgramArguments /usr/bin/hidutil property --set <"UserKeyMapping":[ < "HIDKeyboardModifierMappingSrc": 0x700000039, "HIDKeyboardModifierMappingDst": 0x7000000E1 >, < "HIDKeyboardModifierMappingSrc": 0x7000000E7, "HIDKeyboardModifierMappingDst": 0x7000000E2 >, < "HIDKeyboardModifierMappingSrc": 0x7000000E6, "HIDKeyboardModifierMappingDst": 0x7000000E4 >]>  RunAtLoad   

Как мне поменять левый контрл на home? @antonyRock

Как мне поменять левый контрл на home?

С помошью конструктора по ссылке: https://hidutil-generator.netlify.app/

   version="1.0">  Label com.local.KeyRemapping ProgramArguments  /usr/bin/hidutil property --set  <"UserKeyMapping":[ < "HIDKeyboardModifierMappingSrc": 0x7000000E0, "HIDKeyboardModifierMappingDst": 0x70000004A >]>  RunAtLoad    

А как можно поменять клавиши при русской раскладке? У меня на старом МАСе, при русской раскладке, на клавише / стояли . и , (если зажать shift). Я перешел на М1 и там в обоих раскладках стоит / Жутко неудобно когда печатаешь на русском. На новом ноуте . переехала на shift+7 А символ , переехал на shift+6 Хотелось бы их снова переназначить на / при русской раскладке

Проблема решилась с помощью утилиты Ukelele. Она позволяет создать свою раскладку и потом можно заменить системную на свою.

Иван, а Вы не пробовали поставить не просто русскую раскладку, а русскую для ПК (поищите в списке, она есть)? Тогда точка и запятая под правым мизинцем.

Вы не пробовали поставить не просто русскую раскладку, а русскую для ПК (поищите в списке, она есть)?

Да, у меня как раз Russian PC, после долгих лет за писюком не смог переучится на Маковскую.

Добрый день. я немного лузер в кодах, не могли бы вы мне помочь переназначить delete на правый option и чуть подробнее объяснить как заменить . и , чтобы они шли через правый шифт на б ю?

Добрый день. Юзают Хакинтош с обычной РС клавиатурой. Хочу переназначить сочетание клавиш CMD+вправо (влево) на HOME и END соответственно. Вопрос: как выяснить код сочетания искомых клавиш?

Смотрите тут: https://gist.github.com/trusktr/1e5e516df4e8032cbc3d Переназначил себе все комбинации клавиш через DefaultKeyBinding.Dict

Привет! (предыстория) У меня перестала работать кнопка с цифрой два, не могу пост. Попробовал карабин, две версии, не получилось, не переназначается.

  • Ivan Grishaev’s blog
  • ivan@grishaev.me

Writing on programming, education, books and negotiations.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *