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

37

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

Матиас Биненс
источник
(между тем, вы можете не принять ответ, читатели могут быть сбиты с толку)
o0 '.
1
@ Лохорис: Готово!
Матиас Биненс
Пожалуйста, обновите вопрос b, удалив примечание об обновлении. Лучший ответ теперь работает и на последних версиях osx
Bert Goethals

Ответы:

13

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

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

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

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

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
Матиас
Работал без нареканий, спасибо! Извините, я больше не могу дать вам награду, поэтому я просто назначу новую, чтобы вознаградить вас за этот ответ.
Матиас Биненс
Рад, что это помогло. Спасибо за дополнительную награду! :-)
Эрик Дж. Франсуа
Работал как шарм. Отличный совет!
ƘɌỈS 10
Это фантастика. По умолчанию бельгийская клавиатура застопорилась на долго! Я хотел бы дать вам несколько голосов до!
Берт Гуталс
12

Я нашел этот старый совет 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 и запустил усиление помощника по установке, установив раскладку клавиатуры по умолчанию на Dvorak, и попытался войти, но это не сработало. при перезагрузке он все еще использовал qwerty для экрана входа в систему.
13
Да, похоже, он больше не работает с OS X 10.8. :(
Матиас Биненс
3

Я использую пользовательскую раскладку клавиатуры, созданную с помощью 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.

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

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

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

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

sudo touch / Библиотека / Клавиатура \ Раскладки /

Выход:

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

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

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