Заміна розташування кнопок на клавіатурі в MacOS

До головної сторінки

Макбук з європейською клавіатурою відрізняється від американської розташуванням деяких клавіш.

EU vs. US keyboard

І якщо форма клавіші "Enter" та розташування "Backslash" мене якось не зачіпають, то знак ~ для мене особисто одна з найчастіше використовуваних клавіш. І через те що вона розташована внизу замість гори, мені доводиться викручувати собі пальці кожного разу. Тож я знайшов спосіб як "повернути" її на своє нормальне місце.

Є така вбудована утиліта ​​hidutil

За допомогою однієї єдиної команди можно перевизначити розташування клавіш.

1hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000035,"HIDKeyboardModifierMappingDst":0x700000064},{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000035}]}'
2

Це перемикає клавішу з кодом 0x700000035 з клавішею з кодом 0x700000064.

Від ребута до ребута

Але, після перезавантаження операційки потрібно виконувати цю команду щоразу. Тож, маємо щось із цим робити. Створюємо файл ~/Library/LaunchAgents/local.hidutilKeyMapping.plist з наступним змістом:

1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3<plist version="1.0">
4<dict>
5  <key>Label</key>
6  <string>local.hidutilKeyMapping</string>
7  <key>ProgramArguments</key>
8  <array>
9      <string>/usr/bin/hidutil</string>
10      <string>property</string>
11      <string>--set</string>
12      <string>{
13          "UserKeyMapping": [
14            {
15              "HIDKeyboardModifierMappingSrc":0x700000035,
16              "HIDKeyboardModifierMappingDst":0x700000064
17            },
18            {
19              "HIDKeyboardModifierMappingSrc":0x700000064,
20              "HIDKeyboardModifierMappingDst":0x700000035
21            }
22          ]
23      }</string>
24  </array>
25  <key>RunAtLoad</key>
26  <true/>
27</dict>
28</plist>
29

Далі потрібно завантажити цей файл та запустити сервіс

1launchctl load ~/Library/LaunchAgents/local.hidutilKeyMapping.plist
2launchctl start local.hidutilKeyMapping
3

👎 Update at 2023-12-12

Оновився сьогодні до MacOS версії Sonoma 14.2 і всьо... Ворекераунд більше не працює. Наразі рішення не маю. Додано лінки про все що знайшов по темі, щоб слідкувати.

🤨 Update at 2024-01-23

Оновився до Sonoma 14.3, після чого виконав hidutil property --set ... із sudo привілеями і, о чудо, кнопки свапнулися. Залишається порішати чого воно при завантаженні системи не спрацювало.

👍 Update at 2024-02-19

1sudo mv ~/Library/LaunchAgents/local.KeyRemapping.plist /Library/LaunchDaemons/
2sudo chown root:wheel /Library/LaunchDaemons/local.KeyRemapping.plist
3sudo launchctl load /Library/LaunchDaemons/local.KeyRemapping.plist
4

Порішало проблєму 👆

👎 Update at 2024-11-20

Оновився до Sequoia 15.1, знову не працює. Шукаю рішення.

👍 Update at 2024-11-23

Знайшов 🚀

У відповіді на питання під заголовком Edit for MacOS 15 Sequoia Update Kemal Erbakirci радить додати hidutil до спика додатків яким дозволено моніторити пристрої вводу.

Для цього необхідно відкрити меню Системні параметри 👉 Приватність і безпека 👉 Контроль вводу, натиснути "+" та знайти утіліту hidutil яка знаходиться за адресою /usr/bin/hidutil. Після цього увімкнути тоглік навпроти.

❕ Увімнути відображення прихованих файлів у Finder можна за допомогою комбінації Cmd + Shift + .

Системні параметри -> Приватність і безпека -> Контроль вводу

Джерела