Ändern der Scrollrichtung des Trackpads mit AppleScript in Yosemite

Ich bevorzuge eine "natürliche" Scrollrichtung, wenn ich mein MBAir-Trackpad verwende, aber eine "unnatürliche", wenn ich die Maus verwende. Ich wechsle häufig hin und her, je nachdem, wo ich arbeite, also habe ich ein bisschen AppleScript verwendet, um die Einstellung zu ändern. Dieses Skript funktionierte nicht mehr, als ich auf Mac OS Yosemite aktualisierte. Es öffnet immer noch den Scroll & Zoom-Bereich der Trackpad-Einstellungen, aber es aktiviert nicht das Kontrollkästchen. Ich habe ein paar Dinge ausprobiert, aber ich kann es nicht zum Laufen bringen. Ich bin kein Apple-Entwickler und habe daher keine Debugging-Tools. Irgendwelche Tipps?

try
    tell application "System Preferences"
        activate
        set current pane to pane "com.apple.preference.trackpad"
    end tell

    tell application "System Events"
        tell process "System Preferences"
            click radio button "Scroll & Zoom" of tab group 1 of window "Trackpad"
            click checkbox 1 of tab group 1 of window "Trackpad"
        end tell
    end tell
end try

Antworten (8)

Stellen Sie zunächst sicher, dass Applescripts die Berechtigung zum Ändern von Apps hat. System Preferences | Security & Privacy | AccessibilityDies kann durch Öffnen und Aktivieren des Skript-Editors erfolgen . Dies ist ein einmaliger Vorgang und Sie sollten ihn nicht erneut überprüfen müssen.

Ich habe denselben Ausschnitt ausgeführt, den @Bowen in seiner Frage zu Mojave bereitgestellt hat, und habe bemerkt, was er beschrieben hat. Ich habe es behoben, indem ich die von @Bowen in seiner Antwort erwähnte Verzögerung hinzugefügt habe. Das Kästchen würde jetzt, da wir eine kleine Verzögerung hinzugefügt haben, entweder aktiviert oder deaktiviert.

Hier ist das Beispiel, das ich direkt aus dem Skript-Editor ausgeführt habe:

try
tell application "System Preferences"
    activate
    set current pane to pane "com.apple.preference.trackpad"
end tell
delay 2
tell application "System Events"
    tell process "System Preferences"
        click radio button "Scroll & Zoom" of tab group 1 of window "Trackpad"
        click checkbox 1 of tab group 1 of window "Trackpad"
        tell application "System Preferences" to quit
    end tell
end tell
end try

Außerdem habe ich in Bezug auf dieses Thema etwas mit Ideen aus diesem Thread erstellt, da die Leute es möglicherweise gemäß ihren Einstellungen automatisieren möchten. Das folgende Skript ist "Automator ready" oder kann als Anwendung exportiert werden, damit Sie es beim Start ausführen können oder wie Sie es ausführen möchten. Sie müssen auch den Zugriff auf die exportierte Anwendung zulassen, wie im obigen Bild für "Scroll direction Clicker" gezeigt. Dies ist spezifisch für eine gefundene Logitech-Maus, kann aber leicht auf jeden anderen Schnur-/Maustyp geändert werden. Es kann auch als anständige Referenz verwendet werden, auf der die Bildlaufrichtung aufgebaut werden kann. Ich jedenfalls hatte es satt, die Bildlaufrichtung umzukehren, wenn ich von der Maus zum Trackpad gehe, und so habe ich diesen Thread gefunden.

Maßgeschneidert für den Export als Anwendung aus dem Skripteditor heraus

try
    set logitech to "Logitech"
    try
        set scriptOutput to do shell script "system_profiler SPUSBDataType | grep -i logitech"
        if scriptOutput contains logitech then
            tell application "System Preferences"
                activate
                set current pane to pane "com.apple.preference.trackpad"
            end tell
            delay 2
            tell application "System Events"
                tell process "System Preferences"
                    set checkBoxOne to checkbox 1 of tab group 1 of window "Trackpad"
                    click radio button "Scroll & Zoom" of tab group 1 of window "Trackpad"
                    tell checkBoxOne to if value is 1 then click
                    tell application "System Preferences" to quit
                end tell
            end tell
        end if
    on error errMsg
        log errMsg
        tell application "System Preferences"
            activate
            set current pane to pane "com.apple.preference.trackpad"
        end tell
        delay 2
        tell application "System Events"
            tell process "System Preferences"
                set checkBoxOne to checkbox 1 of tab group 1 of window "Trackpad"
                click radio button "Scroll & Zoom" of tab group 1 of window "Trackpad"
                tell checkBoxOne to if value is 0 then click
                tell application "System Preferences" to quit
            end tell
        end tell
    end try
end try
Ich verwende Ihr erstes Beispiel in einem Automator-Dienst. Wenn ich es von einer anderen App (z. B. Safari) auslöse, möchte ich im Bereich Sicherheit und Datenschutz, dass ich dieser App Zugriff erteile, um Systemeinstellungen und Systemereignisse zu steuern. Ich möchte das nicht unbedingt tun, und ich möchte auch nicht jede App autorisieren müssen, die ich möglicherweise geöffnet habe. Gibt es eine Möglichkeit, dies zu umgehen? Habe ich etwas falsch konfiguriert? Oder ist das nur ein Teil der Mojave-Sicherheitsänderungen?
Ich habe meine Antwort aktualisiert, um zu zeigen, dass Sie nur einmal Zugriff gewähren müssen. Danach sollten Sie das nicht ständig tun müssen. Soweit ich weiß, können Sie ein Skript/einen Automator nicht ausführen, ohne ihm Zugriff zu gewähren, da dies ein Sicherheitsproblem darstellt, und indem Sie es genehmigen, stimmen Sie diesem Risiko zu – auch wenn es sich nicht um ein riskantes Programm handelt.

Ändern Sie "activate" in "run", damit das Skript im Hintergrund ausgeführt wird. Fügen Sie am Ende des Skripts auch "quit" mit einer Verzögerung von 0,6 hinzu, um die Systemeinstellungen nach der Ausführung des Skripts zu beenden.

try
tell application "System Preferences"
    (run)
    set current pane to pane "com.apple.preference.trackpad"
end tell
tell application "System Events"
    tell process "System Preferences"
        delay 0.6
        click radio button "Scroll & Zoom" of tab group 1 of window "Trackpad"
        click checkbox 1 of tab group 1 of window "Trackpad"
    end tell

    tell application "System Preferences" to quit
end tell
end try
Danke dafür! Ich mache ein kleines Go-Wrapper-Programm, um dies auszuführen. Wird Sie als Mitwirkenden unter dem GitHub-Repo hinzufügen.
schön, dass es geholfen hat.

Sie können dies ohne Applescript lösen: https://pilotmoon.com/scrollreverser/

Ich habe meine eigene Frage beantwortet: Wenn dieses Skript nicht funktioniert, gehen Sie zu Systemeinstellungen | Sicherheit & Datenschutz | Zugänglichkeit und stellen Sie sicher, dass der Skripteditor aktiviert ist, damit Applescripts die GUI steuern kann.

Dies ist eine leicht modifizierte Version der Antwort von @TODO und ist von dieser Antwort auf eine verwandte Frage inspiriert. Dieses AppleScript schaltet das Scrollen direkt lautlos/unsichtbar um. Ich speichere es als Anwendung und starte es über Spotlight, wenn ich zwischen Maus und Trackpad wechsle.

try
    tell application "System Preferences"
        reveal pane "com.apple.preference.trackpad"
    end tell
    tell application "System Events"
        tell process "System Preferences"
            click radio button "Scroll & Zoom" of tab group 1 of window "Trackpad"
            click checkbox 1 of tab group 1 of window "Trackpad"
        tell application "System Preferences" to quit
        end tell
    end tell
end try

Bearbeitet: Ich habe vergessen zu erwähnen, dass ich einmalig die Erlaubnis zur Barrierefreiheit erteilen muss (wenn ich dazu aufgefordert werde). Nach der einmaligen Aufforderung funktioniert es wie am Schnürchen

Was also passierte, war, dass Radfahren dachte, der Code sei zu schnell. Also habe ich Verzögerungen dazwischen gesetzt, wo es nicht funktioniert hat, und es funktioniert perfekt. Wenn Sie möchten, können Sie die Verzögerung auf 0,5 oder 0,2 reduzieren

Anwendung mitteilen „Systemeinstellungen“ aktivieren Aktuelles Fenster auf Fenster „com.apple.preference.trackpad“ setzen Ende mitteilen

Anwendung „Systemereignisse“ mitteilen Prozess „Systemeinstellungen“ mitteilen Verzögerung (1) Optionsfeld „Scroll & Zoom“ der Registerkartengruppe 1 des Fensters „Trackpad“ anklicken Verzögerung (1) Kontrollkästchen 1 der Registerkartengruppe 1 des Fensters „Trackpad“ anklicken Verzögerung (1) Ende erzählen Ende erzählen

Ich habe eine kleine Mac MenuBar-App erstellt , um dieses Verhalten zu automatisieren ( Scrolly ). Was ist der Unterschied - fragen Sie vielleicht - zu scrollreverser . Die Scrollreverser- App ist wirklich nett, aber der Nachteil daran ist, dass sie die Einstellungen nicht wirklich ändert (was meine App tut, dank euch und den Apple-Skripten, die alle in diesem Thread geteilt haben).

Wenn du möchtest, kannst du hier reinschauen und es ausprobieren. Mindest. Anforderungen sind MacOS 11. Da ich SwiftUI 2 testen wollte, musste ich die min. Ausführung.

Das hat bei mir funktioniert:

tell application "System Preferences"
    reveal anchor "trackpadTab" of pane id "com.apple.preference.trackpad"
end tell

tell application "System Events" to tell process "System Preferences"
    click checkbox 1 of tab group 1 of window 0
end tell

quit application "System Preferences"

Den Code habe ich mir hier ausgeliehen .