Удалить „неудаляемую“ раскладку клавиатуры в macOS

Почему это проблема?

Зачем вообще может понадобиться удалять раскладку клавиатуры? Потому что мы поставили другую, свою.

Например Типографскую раскладку Ильи Бирмана. В неё входит английская версия, но стандартную английскую удалить всё равно не получается.

Ранее предлагалось решение через глюк операционки, согласно которому можно было добавить японскую раскладку и удалить английскую штатным образом. Но этот способ не работает в macOS Monterey и Ventura.

Список только необходимых раскладок
Список только необходимых раскладок

Решение

Отредактировать файл конфигурации раскладок для текущего пользователя, находящийся по адресу ~/Library/Preferences/com.apple.HIToolbox.plist

Проблема усугубляется двумя факторами: файл бинарный (просто так отредактировать его не получится) и файл периодически перезаписывается системой (поэтому всё может сработать не с первого раза).

1. Преобразование файла в текстовый (раскодирование)

Для начала необходимо подготовиться и перейти к файлу. Делается это в открыв Finder, нажав ⇧Shift+⌘CMD+G и вставив путь до файла:

~/Library/Preferences/com.apple.HIToolbox.plist

Затем открыть Терминал и ввести команду:

plutil -convert xml1 ~/Library/Preferences/com.apple.HIToolbox.plist

После чего необходимо сразу открыть файл в любом текстовом редакторе. Это важно, т.к. файл может автоматически «закодироваться» системой обратно через какое-то время вследствие автоматического сохранения настроек системы.

Бинарный файл plist - непригоден для редактирования
Бинарный файл plist — непригоден для редактирования

Если вы не успели это сделать и вместо текста «кракозябры» (файл начинается с символов bplist), то повторите действия по-новой.

Текстовый файл plist - то что надо!
Текстовый файл plist — то что надо!

2. Редактирование файла

Удалить необходимую раскладку после AppleEnabledInputSources

В моём случае я удалял раздел с раскладкой English — US, т.е. такой текст:

		<dict>
			<key>InputSourceKind</key>
			<string>Keyboard Layout</string>
			<key>KeyboardLayout ID</key>
			<integer>15000</integer>
			<key>KeyboardLayout Name</key>
			<string>USInternational-PC</string>
		</dict>

Если есть секция AppleDefaultAsciiInputSource — её так же необходимо удалить.

После чего файл необходимо сохранить.

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

В моем случае итоговый файл получился вот такой:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>AppleCurrentKeyboardLayoutInputSourceID</key>
	<string>org.sil.ukelele.keyboardlayout.t.russian-ilyabirmantypography</string>
	<key>AppleEnabledInputSources</key>
	<array>
		<dict>
			<key>Bundle ID</key>
			<string>com.apple.CharacterPaletteIM</string>
			<key>InputSourceKind</key>
			<string>Non Keyboard Input Method</string>
		</dict>
		<dict>
			<key>Bundle ID</key>
			<string>com.apple.PressAndHold</string>
			<key>InputSourceKind</key>
			<string>Non Keyboard Input Method</string>
		</dict>
	</array>
	<key>AppleFnUsageType</key>
	<integer>0</integer>
	<key>AppleGlobalTextInputProperties</key>
	<dict>
		<key>TextInputGlobalPropertyPerContextInput</key>
		<true/>
	</dict>
	<key>AppleInputSourceHistory</key>
	<array>
		<dict>
			<key>InputSourceKind</key>
			<string>Keyboard Layout</string>
			<key>KeyboardLayout ID</key>
			<integer>-31553</integer>
			<key>KeyboardLayout Name</key>
			<string>Russian - Ilya Birman Typography</string>
		</dict>
		<dict>
			<key>InputSourceKind</key>
			<string>Keyboard Layout</string>
			<key>KeyboardLayout ID</key>
			<integer>151</integer>
			<key>KeyboardLayout Name</key>
			<string>English - Ilya Birman Typography</string>
		</dict>
	</array>
	<key>AppleSelectedInputSources</key>
	<array>
		<dict>
			<key>Bundle ID</key>
			<string>com.apple.PressAndHold</string>
			<key>InputSourceKind</key>
			<string>Non Keyboard Input Method</string>
		</dict>
		<dict>
			<key>InputSourceKind</key>
			<string>Keyboard Layout</string>
			<key>KeyboardLayout ID</key>
			<integer>-31553</integer>
			<key>KeyboardLayout Name</key>
			<string>Russian - Ilya Birman Typography</string>
		</dict>
	</array>
</dict>
</plist>

3. Преобразование файла обратно (кодирование)

Ввести в Терминал команду обратного преобразования в бинарный формат:

plutil -convert binary1 ~/Library/Preferences/com.apple.HIToolbox.plist

Перезагрузить компьютер (перезаход в учётную запись не поможет).

Результат

Список доступных раскладок
Список доступных раскладок

Обратно добавить раскладку можно штатным образом зайдя в Настройки — Клавиатура — Источники ввода.


Источник информации: https://apple.stackexchange.com/questions/44921/how-to-remove-or-disable-a-default-keyboard-layout

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

  1. Антон

    На Сономе ваш метод не работает, только что пробовал. С добавлением и удалением японской раскладки у меня работало 5 лет назад, а сейчас не получилось.
    Но когда прочитал здесь, что нужно поиграться с галочками, поставил внутри японской Romaji (а может что другое, не запомнил последовательность 🙂 — и всё заработало! Японская после этого удалилась. Маша Лукоморцева, гран мерси!

    Ответить
  2. Маша Лукоморцева

    Очень даже работает на Ventura удаление английской раскладки через добавление японской. Там просто надо с галочками «поиграться» — уже в самой японской раскладке.

    Ответить
    1. finderX автор

      Сколько не игрался у меня не получилось. Главное, что есть альтернативный вариант, который точно работает.

      Ответить