Зробіть власну розкладку клавіатури для системи за замовчуванням - навіть для екрана входу


37

Чи можу я зробити власну розкладку клавіатури (та, яка не була включена до OS X за умовчанням) для системи за замовчуванням - навіть для екрана входу?


(тим часом, ви не можете прийняти відповідь, це читачі можуть розгубитися)
o0 '.

1
@Lohoris: Готово!
Mathias Bynens

Будь ласка, оновіть питання 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
Mathias Bynens

Працювали бездоганно, дякую! Вибачте, що більше не можу дати вам винагороду, тому я просто налаштую нову, щоб винагородити вас за цю відповідь.
Mathias Bynens

Радий, що це допомогло. Дякуємо за додаткову суму! :-)
Ерік Дж. Франсуа

Працював як шарм. Чудова порада!
ƘɌỈSƬƠƑ

Це фантастично. Мене довгий час зачарували мої бельгійські клавіатури! Я хотів би, щоб я міг дати вам кілька голосів!
Bert Goethals

12

Я знайшов цю стару підказку MacWorld , яка запропонувала запустити Assistant Assistant знову:

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

Спочатку я подумав, що це більше не підтримується в Леві, оскільки виконання цієї команди не мало ефекту. Лише після публікації цього питання я помітив, що в команді є друкарська помилка. Космічні символи потрібно уникати належним чином, або розташування двійкового файлу потрібно вказати. З цієї причини підказка, з якою я пов’язаний, не працює.

Ось правильна команда:

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для того, щоб вона відображалася на екрані вибору розкладки клавіатури Асистента налаштування.


Оновлення: На ОС X X 10.8 вам потрібно буде виконати додаткову команду (тобто спочатку видалити файл):

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

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

Цей трюк більше не працює в останніх версіях OS X 10.8.


Оновлення: Ось все , що я знаю про розкладці клавіатури на замовлення OS X .


Я дотримувався ваших кроків для Mountain Lion 10.8 і запустив посилення помічника налаштування, встановив мою клавіатуру за замовчуванням на Dvorak і спробував увійти, але це не вийшло. при перезавантаженні він все ще використовував qwerty для екрана входу.
ams

Так, це, здається, вже не працює з OS X 10.8. :(
Mathias Bynens

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.


Я нагородив вас винагородою, оскільки це здавалося найкращою відповіддю, але це насправді не працює - це завжди повертається до стандартної розкладки американської клавіатури. Щоб перевірити це, я використав розкладку клавіатури, яка дозволяє мені вводити три символи одним натисканням клавіші, щоб я міг побачити, скільки маскованих символів з’являється у полі введення пароля. Після застосування вказаних вами кроків я міг одночасно вводити лише один символ (відповідно до клавіатури США).
Mathias Bynens

Чи можете ви описати, що не працює з OS X 10.9? Я в змозі успішно виконувати ці кроки (я не робив крок 6) при використанні макета Workman (знайдено тут: workman.deekayen.net ). Однак моя проблема полягає в тому, що якщо цей макет обраний і я заблокую комп'ютер, меню введення не відображатиметься на екрані входу, тоді як це нормально, якщо у мене є Dvorak або щось інше, що підтримується OS X. (тобто я бачу меню і може перейти назад до США за потреби)
Timothée Boucher

@ TimothéeBoucher Мій попередній коментар описує, що йде не так, і як я це перевірив.
Mathias Bynens

2

Після встановлення 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 у папці після? Це вимагало, щоб ОС це розглядало.
jrobichaud

Так, зробив це, взагалі не отримав жодного результату. Перевірив усе, що міг, але все-таки ... Працював бездоганно на Ель-Капітан, на Сієррі не пощастило.
Павло Гурков
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.