Ustaw niestandardowy układ klawiatury domyślny system - nawet dla ekranu logowania

35

Czy mogę zrobić niestandardowy układ klawiatury (domyślnie nie był dołączony do OS X) domyślny system - nawet na ekranie logowania?

Mathias Bynens
źródło
(w międzyczasie nie możesz zaakceptować odpowiedzi, czytelnicy mogą być zdezorientowani)
o0'.
1
@Lohoris: Gotowe!
Mathias Bynens
Zaktualizuj pytanie b usuwając notatkę aktualizacji, najlepsza odpowiedź działa teraz także na najnowszych wersjach osx
Bert Goethals

Odpowiedzi:

13

Działa to na OSX 10.9 Mavericks, z układem klawiatury, który stworzyłem z Ukulele. Zakładając, że masz już zainstalowany układ w swoim systemie, zaloguj się na swoje konto i aktywuj niestandardowy układ klawiatury.

Otwórz terminal i uruchom następujące polecenie:

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

Jeśli zamierzasz używać edytora tekstu (np. TextWrangler), aby dokonać tej zmiany zamiast XCode (który ma wyspecjalizowany edytor grafiki plist), także biegnij :

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

Teraz otwarte /tmp/com.apple.HIToolbox.plist w edytorze tekstu lub w XCode.

W całym pliku znajdziesz kilka wzmianek o a KeyboardLayout ID klucz, po którym następuje liczba całkowita i KeyboardLayout Name po którym następuje ciąg. Zmień te ciągi na nazwę niestandardowego układu klawiatury i id liczb całkowitych na identyfikator swojego układu (najprostszym sposobem znalezienia właściwych wartości jest porównanie z ustawieniami użytkownika znajdującymi się w pliku ~/Library/Preferences/com.apple.HIToolbox.plist.

Również wartość klucza AppleCurrentKeyboardLayoutInputSourceID należy odpowiednio zmienić (prawdopodobnie na coś takiego org.unknown.keylayout.NameOfYourLayout ). Ponownie możesz znaleźć tę wartość w lokalnym pliku preferencji.

Po zakończeniu tych zmian zapisz plik i wróć do terminala. Aby zagrać bezpiecznie, możesz utworzyć kopię oryginału com.apple.HIToolbox.plist plik, na wypadek gdybyś popełnił błąd i musiałeś wycofać. Na przykład, aby zapisać kopię w swoim Dokumenty teczka:

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

Następnie zainstaluj swoją zmianę w następujący sposób:

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

(Nie jest konieczne konwertowanie pliku z formy tekstowej za pomocą plutil jeśli zrobiłeś to wcześniej.)

Zamknij terminal i uruchom ponownie komputer (wylogowanie nie jest wystarczające: plik nie zostanie ponownie odczytany). Po restarcie powinieneś mieć układ klawiatury na ekranie logowania.

UWAGA: możliwe, że wystarczyłoby skopiować plik com.apple.HIToolbox.plist z ~/Library/Preferences/ do /Library/Preferences/jednak w moim przypadku ma więcej wpisów, więc postanowiłem zagrać bezpiecznie i zmodyfikować istniejący plik.

Eric J. Francois
źródło
Próbuję tego teraz, ponieważ inna odpowiedź nie zadziałała. FWIW, oto co mam com.apple.HIToolbox.plist plik wygląda jak po zmianach: gist.github.com/anonymous/d18bae208b5cf12e48be
Mathias Bynens
Pracował bez zarzutu, dzięki! Przykro mi, że nie mogę już dać ci nagrody, więc po prostu ustawię nową, aby nagrodzić cię za tę odpowiedź.
Mathias Bynens
Cieszę się, że to pomogło. Dzięki za dodatkową nagrodę! :-)
Eric J. Francois
Pracował jak urok. Świetna wskazówka!
ƘɌỈSƬƠƑ
To jest fantastyczne. Zostałem ugrzęznięty przez moje belgijskie domyślne klawisze! Chciałbym dać ci wielokrotne głosy!
Bert Goethals
12

znalazłem ta stara wskazówka MacWorld , co sugerowało ponowne uruchomienie Asystenta instalacji:

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

Na początku myślałem, że nie jest to już obsługiwane w Lionie, ponieważ uruchomienie tego polecenia nie wydaje się mieć żadnego efektu. Dopiero po opublikowaniu tego pytania zauważyłem literówkę w poleceniu. Znaki spacji muszą być poprawnie ukrywane lub należy podać miejsce binarne. Z tego powodu wskazówka, z którą nawiązałem połączenie, nie działa.

Oto poprawne polecenie:

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

Alternatywnie, to również zadziałałoby:

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

Kolejny błąd, o którym nie wspomniałem na stronie, do której nawiązałem połączenie: niestandardowy układ klawiatury musi być zainstalowany /Library/Keyboard Layouts/ (to znaczy. cd /Library/Keyboard\ Layouts ), nie ~/Library/Keyboard Layouts, aby pojawił się na ekranie wyboru klawiatury Asystenta ustawień.


Aktualizacja: Od wersji OS X 10.8 musisz uruchomić dodatkowe polecenie (tzn. Najpierw usunąć plik):

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

Musisz także utworzyć nowe konto użytkownika, aby ukończyć Asystenta ustawień - ale nie martw się, możesz później usunąć nowe konto.

Ta sztuczka nie działa już w ostatnich wersjach OS X 10.8.


Aktualizacja: Oto wszystko, co wiem o niestandardowych układach klawiatury w systemie OS X .

Mathias Bynens
źródło
Podążyłem za twoimi krokami w Mountain Lion 10.8 i uruchomiłem asystenta konfiguracji, ustaw mój domyślny układ klawiatury na Dvoraka i próbowałem się zalogować, ale to nie działa. przy ponownym uruchomieniu nadal korzystał z qwerty na ekranie logowania.
ams
Tak, wydaje się, że nie działa już od OS X 10.8. :(
Mathias Bynens
3

Używam niestandardowego układu klawiatury utworzonego za pomocą Ukulele w OS X 10.8.5 . Zmieniłem układ klawiatury ekranu logowania, wykonując następujące czynności:

  1. otwarty Users & Groups w System Preferences
  2. Wybierz Login Options od dołu lewego panelu
  3. Czek Show Input menu in login window
  4. Przejdź do ekranu logowania
  5. Wybierz preferowany układ w Other input sources z menu wprowadzania, znajdującego się w prawym górnym rogu
  6. Wróć i usuń zaznaczenie Show Input menu in login window aby zapobiec dalszym zmianom układu logowania

Uważam, że ta metoda jest znacznie łatwiejsza niż edycja losowa .plist pliki i uruchomione polecenia to Terminal.

Ta metoda może wymagać dostępu administracyjnego, ponieważ prawdopodobnie trzeba odblokować prawy panel w kroku 3. powyżej, klikając ikonę kłódki na dole.

Aktualizacja: Niestety, nie działa to w systemie OS X 10.9.

Jawa
źródło
Przyznałem Ci nagrodę, która wydawała się najlepszą odpowiedzią, ale tak naprawdę nie działa - zawsze wraca do domyślnego układu klawiatury w USA. Aby to przetestować, użyłem układu klawiatury, który pozwala mi wpisywać trzy symbole jednym naciśnięciem klawisza, dzięki czemu mogę zobaczyć, ile zamaskowanych znaków pojawia się w polu wprowadzania hasła. Po zastosowaniu kroków, o których wspomniałeś, mogłem wprowadzać tylko jeden symbol na raz (jak na klawiaturze amerykańskiej).
Mathias Bynens
Czy możesz opisać, co nie działa z OS X 10.9? Jestem w stanie wykonać te kroki (nie zrobiłem kroku 6) z powodzeniem podczas korzystania z układu Workman (tutaj: workman.deekayen.net ). Moim problemem jest jednak to, że jeśli ten układ zostanie wybrany i zablokuję komputer, menu wprowadzania nie pojawi się na ekranie logowania, podczas gdy jest dobrze, jeśli mam Dvoraka lub coś innego natywnie obsługiwanego przez OS X. (tj. Widzę menu i w razie potrzeby może wrócić do USA)
Timothée Boucher
@ TimothéeBoucher My poprzedni komentarz opisuje, co się dzieje źle i jak to przetestowałem.
Mathias Bynens
2

Po zainstalowaniu macOS Sierra mój niestandardowy układ został ponownie zainicjowany do stanu domyślnego za każdym razem po zalogowaniu na moim koncie.

Apple dodał nowe klawiatury, a identyfikator był sprzeczny z klawiaturą, której używałem.

Aby sprawdzić poprawność, jeśli masz ten problem, uruchom:

sudo touch / Library / Keyboard

Wyjście:

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

Wyjście twierdzi, że coś naprawia, ale w rzeczywistości nic nie robi. Nadal musiałem samodzielnie edytować układ i zaczął działać jak poprzednio.

jrobichaud
źródło
Zmienił się też mój własny. Niestety, naprawianie identyfikatorów w plikach .plist mi nie pomogło.
Pavel Gurkov
@PavelGurkov uruchomiłeś polecenie sudo w folderze po? Wymagało to, aby system operacyjny to rozważył.
jrobichaud
Tak, zrobiłem to, nie otrzymałem żadnego wyjścia. Sprawdziłem wszystko, co mogłem, ale nadal ... Pracowałem bezbłędnie na El Capitanie, nie miałem szczęścia w Sierra.
Pavel Gurkov