Сделайте пользовательскую раскладку клавиатуры системной по умолчанию — даже для экрана входа в систему

Могу ли я сделать пользовательскую раскладку клавиатуры (та, которая не была включена в OS X по умолчанию) системой по умолчанию — даже для экрана входа в систему?

@Lohoris: Готово!
Пожалуйста, обновите вопрос b, удалив примечание об обновлении, лучший ответ теперь работает и в последних версиях OSX.

Ответы (4)

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

Откройте терминал и выполните следующую команду:

cp /Library/Preferences/com.apple.HIToolbox.plist /tmp/

Если вы собираетесь использовать текстовый редактор (например, TextWrangler) для внесения этого изменения вместо XCode (у которого есть специализированный графический редактор plist), также запустите :

plutil -convert xml1 /tmp/com.apple.HIToolbox.plist

Теперь откройте /tmp/com.apple.HIToolbox.plistв текстовом редакторе или в XCode.

В файле вы найдете несколько упоминаний KeyboardLayout IDключа, за которым следует целое число и KeyboardLayout Nameстрока. Измените эти строки на имя вашей пользовательской раскладки клавиатуры, а целые числа id — на идентификатор вашей раскладки (самый простой способ найти правильные значения — сравнить с вашими пользовательскими настройками, найденными в файле ~/Library/Preferences/com.apple.HIToolbox.plist.

Также значение ключа AppleCurrentKeyboardLayoutInputSourceIDдолжно быть соответствующим образом изменено (возможно, на что-то вроде org.unknown.keylayout.NameOfYourLayout). Опять же, вы можете найти это значение в вашем локальном файле настроек.

После внесения этих изменений сохраните файл и вернитесь в терминал. Чтобы не рисковать, вы можете создать копию исходного com.apple.HIToolbox.plistфайла на тот случай, если вы допустили ошибку и вам нужно откатиться. Например, чтобы сохранить копию в папке « Документы »:

sudo cp /Library/Preferences/com.apple.HIToolbox.plist ~/Documents

Затем установите ваше изменение со следующим:

sudo sh -c 'cat /tmp/com.apple.HIToolbox.plist > /Library/Preferences/com.apple.HIToolbox.plist'

(Нет необходимости преобразовывать ваш файл обратно из текстовой формы с помощью plutil, если вы сделали это ранее.)

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

ПРИМЕЧАНИЕ: возможно, было бы достаточно скопировать файл com.apple.HIToolbox.plistиз ~/Library/Preferences/в /Library/Preferences/, однако в моем случае в нем больше записей, поэтому я решил перестраховаться и просто изменить существующий файл.

Попробуйте это прямо сейчас, так как другой ответ не сработал. FWIW, вот как com.apple.HIToolbox.plistвыглядит мой файл после изменений: gist.github.com/anonymous/d18bae208b5cf12e48be
Сработало без нареканий, спасибо! Мне жаль, что я больше не могу дать вам награду, поэтому я просто создам новую, чтобы вознаградить вас за этот ответ.
Работал как шарм. Отличный совет!
Это фантастика. Я увяз в том, что моя бельгийская клавиатура по умолчанию слишком длинная! Хотел бы я дать вам несколько голосов!
Кажется, в Йосемити не работает, кто-нибудь еще пробовал?
Кажется, это тоже не работает на Эль-Капитане --- или кто-нибудь смог воссоздать?
Я сделал это точно так же в Эль-Капитане без каких-либо проблем, на двух разных компьютерах.

Я нашел этот старый совет MacWorld , в котором предлагалось снова запустить Ассистент настройки:

sudo /System/Library/CoreServices/Setup Assistant.app\
/Contents/MacOS/Setup Assistant

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

Вот правильная команда:

sudo "/System/Library/CoreServices/Setup Assistant.app/Contents/MacOS/Setup Assistant"

В качестве альтернативы это также сработает:

sudo /System/Library/CoreServices/Setup\ Assistant.app/Contents/MacOS/Setup\ Assistant

Еще одна ошибка, которая не была упомянута на странице, на которую я ссылался: пользовательскую раскладку клавиатуры необходимо установить в /Library/Keyboard Layouts/(т.е. cd /Library/Keyboard\ Layouts), а не ~/Library/Keyboard Layoutsв , чтобы она отображалась на экране выбора раскладки клавиатуры помощника по настройке.


Обновление: начиная с OS X 10.8 вам нужно будет запустить дополнительную команду (т.е. сначала удалить файл):

sudo rm /var/db/.AppleSetupDone; sudo "/System/Library/CoreServices/Setup Assistant.app/Contents/MacOS/Setup Assistant"

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

Этот трюк больше не работает в последних версиях OS X 10.8.


Обновление: вот все, что я знаю о пользовательских раскладках клавиатуры в OS X.

Я выполнил ваши шаги для Mountain Lion 10.8 и запустил помощника по настройке, установил раскладку клавиатуры по умолчанию на Дворак и попытался войти в систему, но это не сработало. при перезагрузке он все еще использовал qwerty для экрана входа в систему.
Да, похоже, он больше не работает с OS X 10.8. :(

Я использую пользовательскую раскладку клавиатуры, созданную с помощью Ukelele в OS X 10.8.5 . Я изменил раскладку клавиатуры экрана входа в систему, выполнив следующие действия:

  1. Открыть Users & GroupsвSystem Preferences
  2. Выберите Login Optionsв нижней части левой панели
  3. ПроверятьShow Input menu in login window
  4. Перейти к экрану входа
  5. Выберите предпочтительный макет Other input sourcesв меню ввода, расположенном в правом верхнем углу.
  6. Вернитесь назад и снимите флажок, Show Input menu in login windowчтобы предотвратить дальнейшие изменения макета входа.

Я нашел этот метод намного проще, чем редактирование некоторых случайных .plistфайлов и запуск команд в терминале.

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

Обновление: К сожалению, это не работает в OS X 10.9.

Я присудил вам награду, так как это казалось лучшим ответом, но на самом деле он не работает — он всегда возвращается к раскладке клавиатуры США по умолчанию. Чтобы проверить это, я использовал раскладку клавиатуры, которая позволяет мне набирать три символа одним нажатием клавиши, чтобы я мог видеть, сколько замаскированных символов появляется в поле ввода пароля. После применения шагов, которые вы упомянули, я мог вводить только один символ за раз (согласно клавиатуре США).
Можете ли вы описать, что не работает с OS X 10.9? Я могу успешно выполнить эти шаги (я не делал шаг 6) при использовании макета Workman (находится здесь: workman.deekayen.net ). Однако моя проблема заключается в том, что если выбран этот макет и я заблокирую компьютер, меню ввода не будет отображаться на экране входа в систему, тогда как это нормально, если у меня есть Дворжак или что-то еще, изначально поддерживаемое OS X. (т.е. я вижу меню и может вернуться к США, если это необходимо)
@TimothéeBoucher В моем предыдущем комментарии описывается, что идет не так, и как я это проверял.

После установки macOS Sierra мой пользовательский макет снова инициализировался по умолчанию каждый раз после входа в мою учетную запись.

Apple добавила новые клавиатуры, и идентификатор конфликтовал с клавиатурой, которую я использовал.

Чтобы проверить, есть ли у вас эта проблема, запустите:

sudo touch/Библиотека/Клавиатура\Макеты/

Выход:

Keyboard Layouts: duplicate keyboard layout identifier 5000.
Keyboard Layouts: keyboard layout identifier 5000 has been replaced with 16383.

Вывод утверждает, что он что-то исправляет, но на самом деле ничего не сделал. Мне все равно пришлось самому редактировать макет, и он заработал, как раньше.

Также поменяли свой пользовательский. К сожалению, исправление идентификаторов в файлах .plist мне не помогло.
@PavelGurkov Вы запускали команду sudo touch для папки после этого? Требовалось, чтобы ОС это рассмотрела.
Да, так и сделал, ничего не вышло. Проверил все, что мог, но все же... На Эль-Капитане работало без нареканий, на Сьерре не повезло.