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

Go to main page

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

EU vs. US keyboard

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

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

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

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

Це перемикає клавішу з кодом 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>

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

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

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

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

Джерела