• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

USB Tastatur (Matias Tactile Pro) und Mac stellt Tastaturlayout immer wieder auf US um

Michael Reimann

Geschäftsführung
AT Administration
Registriert
18.03.09
Beiträge
8.768
Hallo zusammen,

ich habe derzeit einen ärgerlichen Bug auf meinem iMac. Immer mal wieder nach dem Booten ist das Tastaturlayout auf "US" eingestellt, statt auf Deutsch. Ich habe das kleine Bluetooth und ein USB-Keyboard (Matias Tactile Pro) angeschlossen. Ich habe vieles, was diesbezüglich an Tipps im Netz existiert ausprobiert und nichts hat bisher geholfen.

Auch zwei Gespräche mit dem Apple-Support brachten keine Lösung. Die haben die User-ACLs repariert und die com.apple.systempreferences.plist gelöscht. Beides brachte nur temporären Erfolg. Ich habe dann noch mal die Tastaturerkennung neu gestartet. Auch das hat das Problem nicht gelöst.

Da es sich um ein so kleines kosmetisches Problem handelt, habe aber auch keine Lust, das gesamte Betriebssystem neu aufzuspielen, oder gar komplett neu zu installieren (bei fragwürdigem Ausgang).

Ich habe daher ein wenig mit Applescript experimentiert und mir ein kleines Startscript geschrieben, das (wenn es in den Anmeldeobjekten steht) beim Start prüft, ob Deutsch als Eingabesprache gesetzt ist und US als Eingabesprache abgewählt. Ist es nicht so, korrigiert das Script diese Einstellungen und schickt eine Notifikation an Growl.

Wer Interesse hat, hier ist das Script: (eine leicht verbesserte Version hängt als ZIP-File an diesem Beitrag, diese benötigt nicht mehr "growlnotify")
Code:
[COLOR=#5E6161]-- Hier testen wir, ob Grow läuft
[/COLOR][B]tell[/B] [COLOR=#0433ff][I]application[/I][/COLOR] "System Events"
    [B]set[/B] [COLOR=#4f8f00]isRunning[/COLOR] [B]to[/B] ¬
        ([COLOR=#0433ff][B]count[/B][/COLOR] [B]of[/B] ([B]every[/B] [COLOR=#0433ff][I]process[/I][/COLOR] [B]whose[/B] [COLOR=#812fdc]bundle identifier[/COLOR] [B]is[/B] "com.Growl.GrowlHelperApp")) > 0
[B]end[/B] [B]tell[/B]

[COLOR=#5E6161]-- An dieser Stelle überprüfen wir, ob Deutsch als Eingabesprache gesetzt ist[/COLOR]
[COLOR=#5E6161]-- Wenn nicht, stellen wir um und senden eine Notification an Growl[/COLOR]

[COLOR=#5E6161]-- Nummer der Zeile in der Deutsch augewählt wird[/COLOR]
[COLOR=#4F8F00][COLOR=#000000][B]set[/B] [/COLOR]NummerDeutsch[COLOR=#000000] [B]to[/B] 33[/COLOR][/COLOR]


[COLOR=#5E6161]-- Nummer der Zeile in der US augewählt wird[/COLOR]
[B]set[/B] [COLOR=#4f8f00]NummerUS[/COLOR] [B]to[/B] 159


[COLOR=#5E6161]-- Los geht es[/COLOR]
[B]tell[/B] [COLOR=#0433ff][I]application[/I][/COLOR] "System Preferences"
[COLOR=#0433FF][B]activate[/B][/COLOR]
    [B]set[/B] [COLOR=#812fdc]current pane[/COLOR] [B]to[/B] [COLOR=#0433ff][I]pane[/I][/COLOR] "com.apple.Localization"
[B]end[/B] [B]tell[/B]
[B]tell[/B] [COLOR=#0433ff][I]application[/I][/COLOR] "System Events"
    [B]tell[/B] [COLOR=#0433ff][I]application process[/I][/COLOR] "System Preferences"
        [COLOR=#0433ff][B]click[/B][/COLOR] [COLOR=#0433ff][I]radio button[/I][/COLOR] "Eingabequellen" [B]of[/B] [COLOR=#0433ff][I]tab group[/I][/COLOR] 1 [B]of[/B] [COLOR=#0433ff][I]window[/I][/COLOR] "Sprache & Text"
        [B]get[/B] [COLOR=#812fdc]value[/COLOR] [B]of[/B] [COLOR=#0433ff][I]checkbox[/I][/COLOR] 1 [B]of[/B] [COLOR=#0433ff][I]row[/I][/COLOR] [COLOR=#4f8f00]NummerDeutsch[/COLOR] [B]of[/B] [COLOR=#0433ff][I]table[/I][/COLOR] 1 [B]of[/B] [COLOR=#0433ff][I]scroll area[/I][/COLOR] 1 [B]of[/B] [COLOR=#0433ff][I]tab group[/I][/COLOR] 1 [B]of[/B] [COLOR=#0433ff][I]window[/I][/COLOR] "Sprache & Text"
        [B]if[/B] [COLOR=#812fdc]result[/COLOR] [B]is[/B] 0 [B]then[/B]
            [COLOR=#0433ff][B]click[/B][/COLOR] [COLOR=#0433ff][I]checkbox[/I][/COLOR] 1 [B]of[/B] [COLOR=#0433ff][I]row[/I][/COLOR] [COLOR=#4f8f00]NummerDeutsch[/COLOR] [B]of[/B] [COLOR=#0433ff][I]table[/I][/COLOR] 1 [B]of[/B] [COLOR=#0433ff][I]scroll area[/I][/COLOR] 1 [B]of[/B] [COLOR=#0433ff][I]tab group[/I][/COLOR] 1 [B]of[/B] [COLOR=#0433ff][I]window[/I][/COLOR] "Sprache & Text"
[COLOR=#5E6161]-- Nur wenn Growl läuft Notification senden[/COLOR]
            [B]if[/B] [COLOR=#4f8f00]isRunning[/COLOR] [B]then[/B]
                [COLOR=#012fbe][B]do shell script[/B][/COLOR] "/usr/local/bin/growlnotify 'Tastaturlayout' -n 'General' -m 'Deutsches Layout eingeschaltet!'"
            [B]end[/B] [B]if[/B]
            [B]set[/B] [COLOR=#4f8f00]message1[/COLOR] [B]to[/B] "Deutsch wurde eingestellt"
        [B]else[/B]
            [B]if[/B] [COLOR=#4f8f00]isRunning[/COLOR] [B]then[/B]
                [COLOR=#012fbe][B]do shell script[/B][/COLOR] "/usr/local/bin/growlnotify 'Tastaturlayout' -n 'General' -m 'Deutsch ist da! Alles Gut!'"
            [B]end[/B] [B]if[/B]
            [B]set[/B] [COLOR=#4f8f00]message1[/COLOR] [B]to[/B] "Deutsch ist bereits eingestellt"
        [B]end[/B] [B]if[/B]
        [B]get[/B] [COLOR=#812fdc]value[/COLOR] [B]of[/B] [COLOR=#0433ff][I]checkbox[/I][/COLOR] 1 [B]of[/B] [COLOR=#0433ff][I]row[/I][/COLOR] [COLOR=#4f8f00]NummerUS[/COLOR] [B]of[/B] [COLOR=#0433ff][I]table[/I][/COLOR] 1 [B]of[/B] [COLOR=#0433ff][I]scroll area[/I][/COLOR] 1 [B]of[/B] [COLOR=#0433ff][I]tab group[/I][/COLOR] 1 [B]of[/B] [COLOR=#0433ff][I]window[/I][/COLOR] "Sprache & Text"
        [B]if[/B] [COLOR=#812fdc]result[/COLOR] [B]is[/B] 1 [B]then[/B]
            [COLOR=#0433ff][B]click[/B][/COLOR] [COLOR=#0433ff][I]checkbox[/I][/COLOR] 1 [B]of[/B] [COLOR=#0433ff][I]row[/I][/COLOR] [COLOR=#4f8f00]NummerUS[/COLOR] [B]of[/B] [COLOR=#0433ff][I]table[/I][/COLOR] 1 [B]of[/B] [COLOR=#0433ff][I]scroll area[/I][/COLOR] 1 [B]of[/B] [COLOR=#0433ff][I]tab group[/I][/COLOR] 1 [B]of[/B] [COLOR=#0433ff][I]window[/I][/COLOR] "Sprache & Text"
[COLOR=#5E6161]-- Nur wenn Growl läuft Notification senden[/COLOR]
            [B]if[/B] [COLOR=#4f8f00]isRunning[/COLOR] [B]then[/B]
                [COLOR=#012fbe][B]do shell script[/B][/COLOR] "/usr/local/bin/growlnotify 'Tastaturlayout' -n 'General' -m 'US-Layout ausgeschaltet!'"
            [B]end[/B] [B]if[/B]
            [B]set[/B] [COLOR=#4f8f00]message2[/COLOR] [B]to[/B] "US wurde ausgeschaltet"
        [B]else[/B]
            [B]set[/B] [COLOR=#4f8f00]message2[/COLOR] [B]to[/B] "US war nicht eingestellt"
        [B]end[/B] [B]if[/B]
    [B]end[/B] [B]tell[/B]
[B]end[/B] [B]tell[/B]
[B]tell[/B] [COLOR=#0433ff][I]application[/I][/COLOR] "System Preferences" [B]to[/B] [COLOR=#0433ff][B]quit[/B][/COLOR]
[B]if[/B] [B]not[/B] [COLOR=#4f8f00]isRunning[/COLOR] [B]then[/B]
[COLOR=#4F8F00][COLOR=#000000]    [B]set[/B] [/COLOR]messageout[COLOR=#000000] [B]to[/B] [/COLOR]message1[COLOR=#000000] & " und " & [/COLOR]message2[/COLOR]
[B]display alert [/B][COLOR=#4f8f00]messageout [/COLOR][COLOR=#012fbe]giving up after[/COLOR][COLOR=#000000][COLOR=#012FBE] 4[/COLOR][/COLOR]
[B]end[/B] [B]if[/B]

Damit das Script korrekte Notifikationen an Growl senden kann, muss das Tool "growlnotify" installiert sein und Growl natürlich auch. Growlnotify bekommt man hier kostenlos. Wenn Growl nicht installiert ist, gibt das Script am Ende eine normale Meldung über den Zustand aus.

Im Script selber müssen die Variablen NummerDeutsch und NummerUS angepasst werden. Dieses sind die Zeilennummern der jeweiligen Eingabesprache in der Auswahlliste im Menü "Sprache & Text" der Systemeinstellungen. Apple schreibt da keine Zeilennummern davor, daher müsst ihr zählen. :) (Siehe Screenshot)
Bildschirmfoto 2013-08-06 um 07.54.16.png
Theoretisch geht das auch mit anderen Sprachen, wobei die Variable NummerDeutsch immer die Zeilennummer der gewünschten Sprache und die Variable NummerUS die Zeilennummer der fälschlich ausgewählten Sprache enthalten muss. Das Script arbeitet meines Wissens nur dann korrekt, wenn als Anzeigesprache Deutsch verwendet wird. Mit kleinen Anpassungen, kann man es sicher auch modifizieren, dass es mit anderen Sprachen funktioniert.

Ich hoffe das Script ist nützlich. Mir hilft es, das nervige Problem zu überdecken.

Sollte es noch eine Lösung geben, die das Problem dauerhaft behebt, würde ich mich über Infos dazu sehr freuen. Bei meinem iMac (Late 2012 mit Fusion Drive) lädt dieses Script beim Start so schnell, dass man es fast nur an den Notifications bemerkt. Von daher ist es nicht mehr so eilig mit der Lösung.

[UD=Mitteilungszentrale integriert]Ich habe das Script noch weiter verfeinert. Es wird jetzt die Mitteilungszentrale genutzt. Dazu muss allerdings das Tool "Terminal-Notifier" installiert sein. Das ist kostenlos hier erhältlich. https://github.com/alloy/terminal-notifier
Weiterhin wird aber auch Growl genutzt. Jetzt auch ohne "growlnotify".[/UD]
 

Anhänge

  • Sprache umstellen.zip
    10,5 KB · Aufrufe: 116
Zuletzt bearbeitet:

salome

Golden Noble
Registriert
20.08.06
Beiträge
23.750
Hast du schon probiert, ob es bei einem anderen User auch so ist?
Normalerweise nützt es,
aus Library/Preferences und aus ~/Library/Preferences jeweils
com.apple.HIToolbox.plist zu entfernen.
und aus ~/Library/Preferences/ByHost.
com.apple.HIToolbox.xxxxxxxxx.plist (xxxxx…)
Samt allfälligen Lockfiles.
Salome
 

Michael Reimann

Geschäftsführung
AT Administration
Registriert
18.03.09
Beiträge
8.768
Das habe ich schon probiert (okay, die Lockfiles nicht. Das kann ich noch mal machen!)
Einen anderen User habe ich noch nicht angelegt. Das wäre auch noch einen Test wert.
 

Michael Reimann

Geschäftsführung
AT Administration
Registriert
18.03.09
Beiträge
8.768
So, gerade mal alle diese Files (inkl. lockfiles) gelöscht. Gleich beim ersten Neustart war wieder US-Layout eingeschaltet. Das scheint ein tiefergehendes Problem zu sein. Naja mit meinem Script geht es jetzt ja.
 

salome

Golden Noble
Registriert
20.08.06
Beiträge
23.750
Gut, wenn du damit zufrieden bist und dem Fehler nicht auf den Grund gehen willst,dann soll's so bleiben.
:)
Salome
 

Michael Reimann

Geschäftsführung
AT Administration
Registriert
18.03.09
Beiträge
8.768
Gut, wenn du damit zufrieden bist und dem Fehler nicht auf den Grund gehen willst,dann soll's so bleiben.
:)
Salome

Lieber hätte ich eine Lösung, die ohne Script auskommt, aber ich bin inzwischen ratlos.
Selbst der Apple-Support empfiehlt nun OSX drüberinstallieren. Ggf. sogar eine Neuinstallation.

Das kommt nicht in Frage. Ich bin ja auch deswegen bei OSX um nicht bei jeder Kleinigkeit das System neu aufzusetzen.
 

MacAlzenau

Golden Noble
Registriert
26.12.05
Beiträge
22.501
Hast du mal geschaut, ob beim Booten irgendein Programm oder Prozess mitläuft, der für den Wechsel verantwortlich sein könnte? Solche Einstellungsdateien werden doch nur geändert, wenn beim Schreiben was nicht mit den Rechten klappt, oder wenn sie aktiv überschrieben werden. Ich würde nach irgendeinem Hilfsprogramm oder vielleicht einem Gerätetreiber schauen, entweder beim Start im Verbose mode oder hinterher in den Logs suchen.
 

salome

Golden Noble
Registriert
20.08.06
Beiträge
23.750
Vom Apple Support (diesem speziellen, um nicht zu verallgemeinern) halte ich nicht viel. Der hat dir ja auch die falschen -plist Dateien zur Entfernung empfohlen. (systempreference statt HIToolbox.) Ist zwar kein Schaden, aber auch keine Hilfe.
Immer wieder erfahre ich, dass die nur das Offenliegende empfehlen, was ein Mac User nach einem Jahr von selber weiß.
Da weiß MacAlzenau besser zu helfen - Verbose Mode ist eine gute Idee.
Salome
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Hallo,

erstmal ist es wirklich nicht unnütz, auch das "vieles, was diesbezüglich an Tipps im Netz existiert" in Stichpunkten mitzuteilen. Hilft, die Sache einzugrenzen...

Dann ist mir auch erst wirklich klar geworden, was dein Problem genau ist, nachdem ich das Skript gelesen habe:
Du hast 1 Eingabequelle ausgewählt ("Deutsch"). Diese ist nach einem Neustart nicht mehr ausgewählt -> dafür dann aber die (in solchen Fällen automatisch gewählte) Standard-Eingabequelle "US"

Wenn das immer passieren würde, hätte ich auf verbogene Rechte getippt, oder eine nicht mehr richtig funktionierende plist.
So habe ich keine Idee.
Der Verbose Modus wäre hilfreich, um zu sehen, ob es schon beim Start Konflikte mit der USB Tastatur gibt.
Ein Start im Einzelbenutzermodus kann auch hilfreich sein.
Und die Konsole zu bemühen, kann Klarheit bringen!

Aber was passiert denn, wenn du US zusätzlich zu Deutsch angewählt lässt? Stört ja nicht weiter.
Du kannst die Eingabequellen ja zur Sichtkontrolle in der Menüleiste anzeigen lassen (falls dich das kosmetisch nicht stört) und schnell mit einem, genauer zwei Tastaturkürzeln wechseln - die bei dir aber unbedingt geändert werden müssten, da sie momentan denen der Spotlightsuche entsprechen (siehe dein Screenshot)

Falls das nicht hilft, so könntest du dein Skript wenigstens ein wenig modifizieren, so dass die Systemeinstellungen nicht immer erst geöffnet werden müssen:

Hier ein möglicher Anfang:

Code:
[B]set[/B] [COLOR=#4f8f00]currKeyLO[/COLOR] [B]to[/B] [COLOR=#012fbe][B]do shell script[/B][/COLOR] "defaults read '/Users/DEINNAME/Library/Preferences/ByHost/com.apple.HIToolbox.DEINEUUID.plist' AppleCurrentKeyboardLayoutInputSourceID"
[B]if[/B] [COLOR=#4F8F00]currKeyLO[/COLOR] [B]is[/B] "com.apple.keylayout.German" [B]then[/B] [B]set[/B] [COLOR=#4F8F00]currKeyLO[/COLOR] [B]to[/B] "Deutsch"

(Name und UUID eintragen)

Growl ist ja AS fähig und kann auch ohne GrowlNotify Nachrichten anzeigen (aber mit ist auch ok :•))
In 10.8 kann man Nachrichten auch direkt an die Mitteilungszentrale schicken.
Aber das ist alles nur Fachsimpelei...


Hat zwar nichts mit dem Problem zu tun:
Die lockfiles sind ein Überbleibsel aus 10.7 und werden in 10.8 nicht mehr benötigt. Die kann man alle bedenkenlos löschen und damit etwas Ordnung schaffen.

Gruß
 

salome

Golden Noble
Registriert
20.08.06
Beiträge
23.750
Die lockfiles sind ein Überbleibsel aus 10.7 und werden in 10.8 nicht mehr benötigt. ….

Vielen Dank, das ist eine gute Nachricht – diese lockfiles sind mir sehr lästig, weil sie sich bei mir immer in Unix-Dateien verwandeln.
Da hole ich doch gleich den Besen.
Salome
 

Michael Reimann

Geschäftsführung
AT Administration
Registriert
18.03.09
Beiträge
8.768
Hallo,

erstmal ist es wirklich nicht unnütz, auch das "vieles, was diesbezüglich an Tipps im Netz existiert" in Stichpunkten mitzuteilen. Hilft, die Sache einzugrenzen…

Sorry, dass ich erst jetzt antworte. Ich will das aber ausführlich tun.

Dann ist mir auch erst wirklich klar geworden, was dein Problem genau ist, nachdem ich das Skript gelesen habe:
Du hast 1 Eingabequelle ausgewählt ("Deutsch"). Diese ist nach einem Neustart nicht mehr ausgewählt -> dafür dann aber die (in solchen Fällen automatisch gewählte) Standard-Eingabequelle "US"

Genau so ist es. Beide Quellen stehen in diesem Fall dann zur Verfügung, aber nur US ist ausgewählt. Es passiert nur beim einem Neustart (kalt oder warm). Im laufenden Betrieb bleibt die Belegung erhalten.

Wenn das immer passieren würde, hätte ich auf verbogene Rechte getippt, oder eine nicht mehr richtig funktionierende plist.
So habe ich keine Idee.
Der Verbose Modus wäre hilfreich, um zu sehen, ob es schon beim Start Konflikte mit der USB Tastatur gibt.
Ein Start im Einzelbenutzermodus kann auch hilfreich sein.
Und die Konsole zu bemühen, kann Klarheit bringen!

Wenn ich den Rechner im Verbose-Mode starte, kann ich die vielen Meldungen anschließend in irgendeiner Log-Datei nachlesen und in Ruhe analysieren?

Folgendes habe ich zunächst gemacht: (Die Tipps dazu kamen aus dem Netz)


  • ~/Library/Preferences/ByHost/com.apple.HIToolbox.MEINE_UDID.plist gelöscht / Neustart(s) - Keine Verbesseung
  • /Library/Preferences/com.apple.keyboardtype.plist gelöscht / Neustart(s) - Keine Verbesserung (nur die Tastatur-Erkennung wurde neu ausgeführt)
  • ~/Library/com.apple.systempreferences.plist gelöscht / Neustart(s) - Keine Verbesserung

Der Apple Support hat dann mit mir zusammen:
Den Rechner im Recovery-Mode gebootet und dann die Festplattenrechte repariert und
per Terminal den Befehl "resetpassword" zum reparieren der Benutzer ACLs verwendet

Auch das brachte keine Verbesserung.

Als man mir dann empfohlen hat, das System neu zu installieren, war für mich klar: Das ist kein Weg, den ich wegen so einer "Kleinigkeit" gehen will. Das System läuft mit wenigen Ausnahmen gut gepflegt seit 2009 und ist mehrfach mirgriert worden.

Aber was passiert denn, wenn du US zusätzlich zu Deutsch angewählt lässt? Stört ja nicht weiter.
Du kannst die Eingabequellen ja zur Sichtkontrolle in der Menüleiste anzeigen lassen (falls dich das kosmetisch nicht stört) und schnell mit einem, genauer zwei Tastaturkürzeln wechseln - die bei dir aber unbedingt geändert werden müssten, da sie momentan denen der Spotlightsuche entsprechen (siehe dein Screenshot)

Ja, das habe ich auch in Betracht gezogen. Aber das wäre für mich eine Verschlechterung, weil ich dann in "Fehlerfall" aktiv werden muss. Das würde über kurz oder lang nerven.

Falls das nicht hilft, so könntest du dein Skript wenigstens ein wenig modifizieren, so dass die Systemeinstellungen nicht immer erst geöffnet werden müssen:

Hier ein möglicher Anfang:

Code:
[B]set[/B] [COLOR=#4f8f00]currKeyLO[/COLOR] [B]to[/B] [COLOR=#012fbe][B]do shell script[/B][/COLOR] "defaults read '/Users/DEINNAME/Library/Preferences/ByHost/com.apple.HIToolbox.DEINEUUID.plist' AppleCurrentKeyboardLayoutInputSourceID"
[B]if[/B] [COLOR=#4F8F00]currKeyLO[/COLOR] [B]is[/B] "com.apple.keylayout.German" [B]then[/B] [B]set[/B] [COLOR=#4F8F00]currKeyLO[/COLOR] [B]to[/B] "Deutsch"

(Name und UUID eintragen)

Wenn ich Dein Script richtig lese, ermittelt es die aktuell eingestellte Sprache aus der plist-Datei?! Wenn Deutsch eingestellt ist, dann steht in der Variable currKeyLO das Wort "Deutsch"? Um ggf. die Sprache umzustellen, muss ich dann aber wieder wie in meinem Script fortfahren, oder? Ich habe auch nach langem Googlen nichts gefunden, wie man per BASH oder Apple-Script das Layout umstellen kann. Deshalb habe ich es mit UI-Scripting gemacht. Oder gibt es da eine elegantere Lösung?

Growl ist ja AS fähig und kann auch ohne GrowlNotify Nachrichten anzeigen (aber mit ist auch ok :•))
In 10.8 kann man Nachrichten auch direkt an die Mitteilungszentrale schicken.
Aber das ist alles nur Fachsimpelei...

Ich gebe zu, ich habe die erste Version unter Lion entwickelt und da funktioniert das Growl-Beispiel-Script nicht. Unter ML geht's und daher werde ich das wohl noch mal anpassen. Ziel sollte sein, es tatsächlich in die Mitteilungszentrale zu bekommen. Da werde ich wohl wieder mal googlen. :)


Hat zwar nichts mit dem Problem zu tun:
Die lockfiles sind ein Überbleibsel aus 10.7 und werden in 10.8 nicht mehr benötigt. Die kann man alle bedenkenlos löschen und damit etwas Ordnung schaffen.

Gruß

Auf jeden Fall schon mal danke für die vielen Denkanstöße. :)
Michael
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Hallo,

ich habe die Sachlage eventuell noch immer nicht erfasst:
Beide Eingabequellen (Deutsch und US) bleiben in den Systemeinstellungen angehakt, aber US wird als die aktuelle ausgewählt?
Oder wird Deutsch tatsächlich abgehakt und nur noch US steht zur Verfügung?

Ich habe letzteres geglaubt, doch wenn ich das jetzt lese, so denke ich, ersteres ist der Fall.
Daher rührte meine Aussage (und deine Antwort)
Aber was passiert denn, wenn du US zusätzlich zu Deutsch angewählt lässt? Stört ja nicht weiter.
Du kannst die Eingabequellen ja zur Sichtkontrolle in der Menüleiste anzeigen lassen (falls dich das kosmetisch nicht stört) und schnell mit einem, genauer zwei Tastaturkürzeln wechseln - die bei dir aber unbedingt geändert werden müssten, da sie momentan denen der Spotlightsuche entsprechen (siehe dein Screenshot)
Ja, das habe ich auch in Betracht gezogen. Aber das wäre für mich eine Verschlechterung, weil ich dann in "Fehlerfall" aktiv werden muss. Das würde über kurz oder lang nerven.
Falls meine aktuelle Einschätzung zutrifft, so spielen die Tastaturkürzel gleich noch eine Rolle.


Wenn ich Dein Script richtig lese, ermittelt es die aktuell eingestellte Sprache aus der plist-Datei?! Wenn Deutsch eingestellt ist, dann steht in der Variable currKeyLO das Wort "Deutsch"? Um ggf. die Sprache umzustellen, muss ich dann aber wieder wie in meinem Script fortfahren, oder? Ich habe auch nach langem Googlen nichts gefunden, wie man per BASH oder Apple-Script das Layout umstellen kann. Deshalb habe ich es mit UI-Scripting gemacht. Oder gibt es da eine elegantere Lösung?

Alle Fragen können mit ja beantwortet werden.
Das Skript klärt ohne GUI Scripting welche Sprache ausgewählt ist. Falls US ausgewählt ist, kann man fortfahren oder aber an dieser Stelle abbrechen.
Mit einem ShellSkript (oder auch mit AS) könnte man die plist ändern, was aber nichts bringt, da keine Notification an das System gesendet wird und die Systemeinstellungen nichts davon mitkriegen. Dazu müsste man also eine wesentlich aufwändigere Cocoa bzw. ASObjC Anwendung schreiben.
Die elegantere Lösung wäre - falls meine Annahme zutrifft - mit AppleScript die Tastaturkürzel zum Wechseln der Eingabequellen zu aktivieren .. oder weniger nett die Eingabequelle in der Menüleiste umzustellen.

So sollte es gehen:

Code:
[B]set[/B] [COLOR=#4F8F00]currKeyLO[/COLOR] [B]to[/B] [COLOR=#012FBE][B]do shell script[/B][/COLOR] "defaults read '/Users/DEIN_NAME/Library/Preferences/ByHost/com.apple.HIToolbox.DEINE_UUID.plist' AppleCurrentKeyboardLayoutInputSourceID"

[B]if[/B] [COLOR=#4f8f00]currKeyLO[/COLOR] [B]is[/B] "com.apple.keylayout.US" [B]then[/B]
    
[COLOR=#5E6161]-- in diesem Fall ist mein eingestelltes Tastaturkürzel für vorherige Eingabequelle cmd-alt-ü  # # (ü = key code 33)[/COLOR]
    
    [B]tell[/B] [COLOR=#0433ff][I]application[/I][/COLOR] "System Events"
[COLOR=#5D3292][COLOR=#0433ff][B]key code[/B][/COLOR][COLOR=#000000] 33 [/COLOR][COLOR=#0433ff]using[/COLOR][COLOR=#000000] {[/COLOR]command down[COLOR=#000000], [/COLOR]option down[COLOR=#000000]}[/COLOR][/COLOR]
    [B]end[/B] [B]tell[/B]
    
    
[COLOR=#5E6161](*[/COLOR]
[COLOR=#5E6161]-- oder ohne die Tastaturkürzel, aber mit angezeigten Eingabequellen in der Menüleiste ("Fahne"):[/COLOR][COLOR=#5E6161]
[/COLOR]
[COLOR=#5E6161]tell application "System Events" to tell process "SystemUIServer"[/COLOR]
[COLOR=#5E6161]    tell (first menu bar item of menu bar 1 whose value of attribute "AXDescription" is "text input")[/COLOR]
[COLOR=#5E6161]        click[/COLOR]
[COLOR=#5E6161]        delay 0.2[/COLOR]
[COLOR=#5E6161]        click menu item "Deutsch" of front menu[/COLOR]
[COLOR=#5E6161]    end tell[/COLOR]
[COLOR=#5E6161]end tell[/COLOR]
[COLOR=#5E6161]*)[/COLOR]
    
[B]end[/B] [B]if
[/B]

Zur absoluten Sicherheit kann man das auch noch in eine Schleife packen, welche so lange ausgeführt wird, bis ein erneuter Check der plist sichergestellt hat, dass das wirklich geklappt hat. Wird aber auch so reichen.

Gruß
 

Michael Reimann

Geschäftsführung
AT Administration
Registriert
18.03.09
Beiträge
8.768
Hallo,

ich habe die Sachlage eventuell noch immer nicht erfasst:
Beide Eingabequellen (Deutsch und US) bleiben in den Systemeinstellungen angehakt, aber US wird als die aktuelle ausgewählt?
Oder wird Deutsch tatsächlich abgehakt und nur noch US steht zur Verfügung?

Ich habe letzteres geglaubt, doch wenn ich das jetzt lese, so denke ich, ersteres ist der Fall.
Daher rührte meine Aussage (und deine Antwort)

Falls meine aktuelle Einschätzung zutrifft, so spielen die Tastaturkürzel gleich noch eine Rolle.




Alle Fragen können mit ja beantwortet werden.
Das Skript klärt ohne GUI Scripting welche Sprache ausgewählt ist. Falls US ausgewählt ist, kann man fortfahren oder aber an dieser Stelle abbrechen.
Mit einem ShellSkript (oder auch mit AS) könnte man die plist ändern, was aber nichts bringt, da keine Notification an das System gesendet wird und die Systemeinstellungen nichts davon mitkriegen. Dazu müsste man also eine wesentlich aufwändigere Cocoa bzw. ASObjC Anwendung schreiben.
Die elegantere Lösung wäre - falls meine Annahme zutrifft - mit AppleScript die Tastaturkürzel zum Wechseln der Eingabequellen zu aktivieren .. oder weniger nett die Eingabequelle in der Menüleiste umzustellen.

So sollte es gehen:

Code:
[B]set[/B] [COLOR=#4F8F00]currKeyLO[/COLOR] [B]to[/B] [COLOR=#012FBE][B]do shell script[/B][/COLOR] "defaults read '/Users/DEIN_NAME/Library/Preferences/ByHost/com.apple.HIToolbox.DEINE_UUID.plist' AppleCurrentKeyboardLayoutInputSourceID"

[B]if[/B] [COLOR=#4f8f00]currKeyLO[/COLOR] [B]is[/B] "com.apple.keylayout.US" [B]then[/B]
    
[COLOR=#5E6161]-- in diesem Fall ist mein eingestelltes Tastaturkürzel für vorherige Eingabequelle cmd-alt-ü  # # (ü = key code 33)[/COLOR]
    
    [B]tell[/B] [COLOR=#0433ff][I]application[/I][/COLOR] "System Events"
[COLOR=#5D3292][COLOR=#0433ff][B]key code[/B][/COLOR][COLOR=#000000] 33 [/COLOR][COLOR=#0433ff]using[/COLOR][COLOR=#000000] {[/COLOR]command down[COLOR=#000000], [/COLOR]option down[COLOR=#000000]}[/COLOR][/COLOR]
    [B]end[/B] [B]tell[/B]
    
    
[COLOR=#5E6161](*[/COLOR]
[COLOR=#5E6161]-- oder ohne die Tastaturkürzel, aber mit angezeigten Eingabequellen in der Menüleiste ("Fahne"):[/COLOR][COLOR=#5E6161]
[/COLOR]
[COLOR=#5E6161]tell application "System Events" to tell process "SystemUIServer"[/COLOR]
[COLOR=#5E6161]    tell (first menu bar item of menu bar 1 whose value of attribute "AXDescription" is "text input")[/COLOR]
[COLOR=#5E6161]        click[/COLOR]
[COLOR=#5E6161]        delay 0.2[/COLOR]
[COLOR=#5E6161]        click menu item "Deutsch" of front menu[/COLOR]
[COLOR=#5E6161]    end tell[/COLOR]
[COLOR=#5E6161]end tell[/COLOR]
[COLOR=#5E6161]*)[/COLOR]
    
[B]end[/B] [B]if
[/B]

Zur absoluten Sicherheit kann man das auch noch in eine Schleife packen, welche so lange ausgeführt wird, bis ein erneuter Check der plist sichergestellt hat, dass das wirklich geklappt hat. Wird aber auch so reichen.

Gruß

Hi,

danke für die weiteren Denkanstöße und Sorry, wenn ich mich missverständlich ausgedrückt habe.
Deine zweite Annahme trifft in der Tat zu. Deutsch wird abgehakt und nur noch US steht zur Verfügung.

Ich werde mich mit Deinem Script-Vorschlag auseinandersetzen und berichten. In der Zwischenzeit arbeite ich auch an der Nachhaltigen Lösung der Problematik. Folgendes ist wir noch aufgefallen: Das Keyboard hing wie folgt am Mac:

USB 3.0 - Port im Mac -> USB 2.0 Powered Hub -> Keyboard

Möglicherweise war das auch ein Problem. Habe das Keyboard jetzt direkt an den Mac gehängt.

Ich werde weiter berichten.

Viele Grüße
Michael
 

Michael Reimann

Geschäftsführung
AT Administration
Registriert
18.03.09
Beiträge
8.768
Ich hatte bis zu Mavericks tatsächlich immer das Script laufen, dass die Einstellung ggf. auf Deutsch zurückgesetzt hat. Seit ich Mavericks drauf habe, konnte ich das Script nicht mehr verwenden, es war nicht mehr kompatibel. Ich habe irgendwann die Tastatur gegen eine offizielle Apple Tastatur ausgetauscht, seitdem ist das Problem nie wieder aufgetreten.

Ich vermute daher, es handelte sich um einen Defekt der Tastatur, der dafür gesorgt hat, auf den amerikanischen Zeichensatz umzustellen.
 
  • Like
Reaktionen: salome

salome

Golden Noble
Registriert
20.08.06
Beiträge
23.750
Danke dir für die prompte Antwort.
Da der User ein Book hat, kann es mal nicht an einer Fremdtastatur liegen, aber an einem Fehler (Wasser, Bier, Rotwein?) in der Tastatur natürlich schon. Das werde ich ihm mitteilen.
Salome
 

winterhexe

Pferdeapfel
Registriert
16.07.08
Beiträge
80
mit interesse lese ich hier mit...

ich habe einen iMac early 2009, weswegen ich neulich von 10.6.8 auf mountain lion (10.8) geupgradet habe..

seit dem upgrade habe auch ich das hier beschriebene "kosmetische" problem...

scheinbar nach lust und laune verstellt sich das tatstaturlayout eigenmächtig auf US um... ich habe es auch mal mit mehreren angehakten sprachen versucht... also neben deutsch auch österreichisch oder schweizer deutsch...

entweder nach dem aufwachen aus dem ruhezustand oder nach einem neustart war alles futsch und nur US war verfügbar... dieses spielchen treibt mein iMac alle paar tage mit mir... mehrere tage lang geht alles gut.. aber dann... muss ich wieder neu einstellen... ich lasse mir die eingabequelle oben in der menüleiste anzeigen und mein erster blick geht jetzt immer nach oben rechts um zu kucken, ob die deutsche fahne dort weht....

meine tastatur hängt per usb-kabel am mac und ist eine original mac-tastatur

wie gesagt... eigentlich ist es ein eher nicht so wichtiges problem... aber mir lässt es keine ruhe... irgendetwas MUSS doch am gange ein... diese ganzen dazu empfohlenen prozeduren habe auch ich schon durch... aber geholfen hat es nix...

ein script werde ich nicht benutzen... ich stell halt von hand eben immer wieder um...

aber ich wüsste gerne, WARUM das so ist..

nachdem ich tagelang gegoogelt habe, stehen wir ja nicht alleine mit dieser macke da...

wenn sich also noch jemand dranhängt und die perfekte lösung dafür findet, dann immer her damit...

maverick ist für mich leider keine lösung, da mein iMac dafür etwas zu betagt ist...

es grüsset die olle winterhexe....
 

saschabur

Goldparmäne
Registriert
30.11.09
Beiträge
569
Hallo, auch ich wüsste gerne, warum das so ist. überhaupt: gibt es irgendwo einen interessanten Fachartikel, wo weleches Element von MAcOS was nachschat /Anschaut beim Booten? Wann kommen NVRAM und SMC ins SPiel? Wie kann man eine FEstplatte vollokommen desaktiviern? Ich boote meinen iPac auf einer externen Festplatte, aber die (halbtote) interne Festplatte ist immer noch da. Wo schreibt der Mac denn hin, was er an Platten hat?

Vieeln Dank!