Ist es möglich, die Einstellung "Integriertes Trackpad ignorieren, wenn Maus vorhanden ist" mit einer Tastenkombination zu ändern?

Ich verwende mein MacBook meistens gerne mit einer USB-Maus und lasse die Option "Integriertes Trackpad ignorieren, wenn Maus oder drahtloses Trackpad vorhanden ist" aktiviert, um zu vermeiden, dass der Cursor beim Tippen versehentlich bewegt wird. Gelegentlich ist es jedoch nützlich, es für bestimmte Aufgaben wieder einzuschalten, und ich möchte dies mit einer Tastenkombination tun können.

Ich habe versucht, den Vorgang des Ein- und Ausschaltens mit Automator aufzuzeichnen, aber wenn ich das resultierende Skript kopiere und ausführe, gelangt es bis zu den Einstellungen für die Barrierefreiheit und gibt mir dann einen Syntaxfehler mit der Meldung „Kann nicht auf das Kontrollkästchen 3 von klicken Fenster „Barrierefreiheit“ des Anwendungsprozesses „Systemeinstellungen“.

Ich habe auch versucht, "USBMouseStopsTrackpad" in den Standardeinstellungen im Terminal auf 0 und 1 zu setzen, aber es scheint nichts zu tun. Ich kann sehen, dass sich dies auf 0 oder 1 ändert, wenn ich das Kontrollkästchen aktiviere/deaktiviere, also bin ich mir ziemlich sicher, dass ich die richtige Option habe, aber nichts passiert, wenn ich es ändere.

Entschuldigung, wenn das wirklich offensichtlich ist und ich es einfach nicht sehe! Ich kenne mich mit dieser Maschine noch nicht so gut aus. Mir ist diese Frage bekannt:

Ist es möglich, das Trackpad in OS X mit einer Tastenkombination auszuschalten?

aber ich glaube nicht, dass es ein Duplikat ist, da ich versuche, etwas etwas anderes zu machen.

Antworten (3)

Dies kann nativ ohne Drittanbieter erfolgen , einfach und unkompliziert mit AppleScript und UI Scripting .

Der beispielhafte AppleScript- Code kann auf verschiedene Arten implementiert werden, als Skript , als AppleScript- Anwendung oder als Automator- Dienst , wobei letzterem eine Tastenkombination zugewiesen werden kann.

Insbesondere die Implementierung als Automator- Dienst wurde mehr als genug behandelt, sodass eine Google- Suche eine Antwort darauf liefern sollte, wie dies zu tun ist. Ich weiß, dass ich öfter Anweisungen dafür geschrieben habe, als ich mich erinnern kann.

Der folgende Beispiel -AppleScript- Code funktioniert für mich und schaltet das Kontrollkästchen „ Ignore built-in trackpad when mouse or wireless trackpad is present: “ um :

if running of application "System Preferences" then
    try
        tell application "System Preferences" to quit
    on error
        do shell script "killall 'System Preferences'"
    end try
end if
repeat while running of application "System Preferences" is true
    delay 0.1
end repeat
tell application "System Preferences"
    reveal anchor "Mouse" of pane id "com.apple.preference.universalaccess"
    delay 1
    tell application "System Events"
        click checkbox 1 of group 1 of window 1 of application process "System Preferences"
    end tell
    quit
end tell
  • Beachten Sie, dass der Wert der delay Befehle möglicherweise an Ihr System angepasst werden muss und dass möglicherweise zusätzliche delay Befehle erforderlich sind oder nicht. Passen Sie die Werte von an und fügen Sie die delay Befehle nach Bedarf hinzu/entfernen Sie sie.

  • Dies wurde getestet und funktioniert unter macOS High Sierra ; Beachten Sie jedoch, dass je nach Version von OS X/macOS , die Sie ausführen, die click checkbox ...Codezeile möglicherweise je nach Version des Betriebssystems angepasst werden muss .

Mit macOS Catalina müssten Sie beispielsweise Folgendes verwenden:

click checkbox 2 of tab group 1 of group 1 of window 1 of application process "System Preferences"


Hinweis: Der Beispiel -AppleScript- Code ist genau das und enthält keine Fehlerbehandlung , wie es angebracht sein könnte. Es obliegt dem Benutzer, eine Fehlerbehandlung hinzuzufügen, die angemessen, erforderlich oder gewünscht ist. Sehen Sie sich die try- Anweisung und die error- Anweisung im AppleScript Language Guide an . Siehe auch Arbeiten mit Fehlern . Zusätzlich kann die Verwendung des Verzögerungsbefehls gegebenenfalls zwischen Ereignissen notwendig sein, z. B. mitdelay 0.5 einem geeignet eingestellten Wert der Verzögerung .

Warum beendet Ihr Skript zuerst die Systemeinstellungen?
@JakeRobb, Es beendet zuerst die Systemeinstellungen , weil es UI-Skripting verwendet , und wenn die Systemeinstellungen bereits geöffnet sind und sich ein modales Blatt befindet, von dem einige vorhanden sind, würde das Skript ohne es fehlschlagen. Das heißt, vorausgesetzt, die Chancen dafür sind gering, aber es ist immer besser, Code zu schreiben , der mit den Möglichkeiten umgehen kann.

Das Makroing ist ein bisschen ruckelig, aber es ist absolut machbar.

Ich würde empfehlen, dafür Keyboard Maestro zu verwenden. Es ist ein bisschen wie Automator .... Nicht kostenlos, aber es gibt eine Testversion und es lohnt sich auf jeden Fall. Sie könnten dasselbe auch in Automator oder Applescript tun, aber in KBM ist es viel einfacher.

KBM hat einige großartige Aktionen, wenn es um die Navigation in der GUI geht:

  • Pause bis
    • Die Aktion Anhalten bis wird angehalten, bis die Kriterien für Bedingungen erfüllt sind.
  • Drücke einen Knopf
    • Die Aktion „Press a Button“ drückt eine benannte Schaltfläche im vorderen Fenster.
  • Menüpunkt auswählen oder anzeigen
    • Die Aktion „Menüelement auswählen oder anzeigen“ wählt ein Menüelement aus ODER zeigt (öffnet) ein Menü in der Hauptmenüleiste an.
  • Text durch Tippen einfügen
    • Die Aktion Text durch Eingabe einfügen wandelt reinen (einfachen) Text in Tastenanschläge um und gibt sie dann einzeln ein. Es funktioniert nur mit Zeichen, die mit einem oder zwei Tastendrücken auf der Tastatur eingegeben werden können (z. B. Option-e e gibt normalerweise é ein, und Keyboard Maestro kann diese Eingabe duplizieren).
  • Geben Sie einen Tastenanschlag ein
    • Mit der Aktion „Tastenanschlag eingeben“ können Sie einen einzelnen Tastenanschlag eingeben, so ziemlich jede Art von Tastenanschlag, den Sie auf der Tastatur eingeben können.
  • Maus bewegen oder klicken
    • Die Aktion Maus bewegen oder klicken ermöglicht es Ihnen, die Maus mit einer beliebigen Maustaste zu bewegen, zu klicken oder zu bewegen und zu klicken und optional zu ziehen.
    • Dies ist eine relativ kleine Sache, aber ich finde es großartig, dass es die Mausposition wiederherstellen kann, nachdem die Aktion abgeschlossen ist. Diese Option ist jedoch etwas versteckt.

Die Schritte, um die Aktion zusammen mit leichten Erklärungen zu erzeugen:

Bild der Makroschritte (Link)

Nicht das schnellste Makro aller Zeiten (~3 Sekunden), aber es schlägt sicher besser, manuell in die Menüs einzutauchen.

Stellen Sie beim Erstellen dieses Makros sicher, dass Sie das unfertige Makro nach jedem Schritt ausführen, um sicherzustellen, dass alles genau so ist, wie es sein sollte.

  1. Aktionsname:Activate a Specific Application
    • Aktivieren Sie:System Preferences
    • Öffnet die Systemeinstellungen

  2. Aktionsname:Pause Until
    • Neue Bedingung:Menu Condition
    • Ein Menüpunkt: mit diesem Namen Accessibilitywird aktiviert
    • Dies stellt mehr oder weniger sicher, dass das Fenster aktiv ist und Barrierefreiheit ein Menüpunkt ist, zu dem Sie navigieren können.

  3. Aktionsname:Move a Window
    • Gehe zu: → 00
    • Dadurch wird sichergestellt, dass sich das Einstellungsfenster in Ihrem Hauptbildschirm befindet. Es ist nur wichtig, denn wenn Sie das Fenster zu irgendeinem Zeitpunkt manuell auf Ihren sekundären Bildschirm ziehen, würden alle Aktionen, die auf Koordinaten angewiesen sind, ohne diese und die nächste Aktion "Fenster verschieben" fehlschlagen.

  4. Aktionsname:Select or Show a Menu Item
    • Menü auswählen in:System Preferences
    • Menütitel:View
    • MenüpunktAccessibility
    • Sie können auch einfach Menu ▾oben links auf diese Aktion klicken, um den Menüpunkt von dort auszuwählen, solange die Systemeinstellungen geöffnet sind. Das macht es super einfach, das Klicken auf einen beliebigen Menüpunkt zu simulieren.

  5. Aktionsname:Pause
    • Pause für: 1Sekunden.
    • Das ist ein bisschen mysteriös. Ich wollte eine Pause verwenden, bis der Fenstertitel „Barrierefreiheit“ lautet, was funktioniert, wenn Sie in den Systemeinstellungen zur Seite „Barrierefreiheit“ gehen und die Aktion überprüfen. KBM sagt, der Wert ist wahr, wenn Sie dort sind. Es schlug jedoch immer wieder fehl, als ich das Makro tatsächlich ausführte. Ich habe auch die Bedingung „Pausieren bis Pixel“ ausprobiert, die ebenfalls fehlgeschlagen ist. Ich schätze, die Bedingung wurde wahr, bevor eine Interaktion möglich war … Der Sinn der Verwendung der Aktion „Pausieren bis“ besteht darin, sicherzustellen, dass alles, was wir als Nächstes tun möchten, tatsächlich ausgelöst wird im richtigen Moment. Wenn Sie eine statische Pause oder überhaupt keine Pause verwenden, besteht die Möglichkeit, dass es gelegentlich länger als gewöhnlich dauert und der simulierte Tastendruck einfach in den Äther geht und das Makro hängen bleibt oder im schlimmsten Fall: Es macht tatsächlich etwas ganz anderes, sendet zum Beispiel eine Raketenwarnung an alle Hawaiianer oder so. Die wenigen Stellen, an denen ich eine statische Pause verwendet habe, sollten in Ordnung sein, da sie sich alle auf derselben Seite desselben Fensters befindenEs sollte keine seltsamen Probleme geben, die dadurch verursacht werden, aber wenn es nicht das tut, was es tun soll: Erhöhen Sie die statische Verzögerung. Sie können auch zwischen einigen anderen Aktionen, die nicht durch eine Verzögerung getrennt sind, eine Pause einfügen, wenn dies nicht zu funktionieren scheint. Langsamere Maschinen erfordern normalerweise eine größere Verzögerung.

  6. Aktionsname:Type a Keystroke
    • Tastendruck simulieren:Cmd+F
    • Klicken Sie auf die Eingabe Tastenanschlag simulieren und drücken Sie die Tastenkombinationen.
    • Wenn dieses Fenster bereits aktiv ist, wird die Position standardmäßig auf die Suche gesetzt, sodass der nächste Tastendruck an der richtigen Stelle erfolgt

  7. Aktionsname:Move a Window
    • Wechseln Sie Move tozuCenter
    • Dadurch wird sichergestellt, dass alle Aktionen, die Koordinaten verwenden, die richtigen Punkte treffen.

  8. Aktionsname:Type a Keystroke

    • Tastendruck simulieren:Tab
    • Sie können es aus der Dropdown-Liste auswählen oder eingeben.
    • Aktiviert die Liste auf der linken Seite des System Preferences > AccessibilityFensters.

  9. Aktionsname:Pause Until

    • Neue Bedingung:Pixel Condition
    • Drücke denGet
      • Sie haben 5 Sekunden Zeit, um Ihre Maus über der Farbe zu positionieren.
      • Machen Sie das Fenster aktiv und bewegen Sie Ihre Maus irgendwo über den blauen Rand, um diese Farbe zu erhalten
      • Geben Sie hier die Bildbeschreibung ein
    • Dies stellt nur sicher, dass die nächste Aktion zum richtigen Zeitpunkt ausgelöst wird.

  10. Aktionsname:Type a Keystroke

    • Tastendruck simulieren:End
    • Sie können es aus der Dropdown-Liste auswählen oder eingeben.
    • Aktiviert die Liste auf der linken Seite des System Preferences > AccessibilityFensters.

  11. Aktionsname:Type a Keystroke

    • Tastendruck simulieren:Alt+Down Arrow
    • Klicken Sie auf die Eingabe Tastenanschlag simulieren und drücken Sie die Tastenkombinationen.
    • Dieses Menü auf der linken Seite kann das zuletzt besuchte Element beibehalten, wenn Sie es das nächste Mal öffnen. Wir tun dies also nur, um sicherzustellen, dass das erste Element ausgewählt ist, da sonst die nächste Pause bis gelegentlich fehlschlagen könnte.
  12. Aktionsname:Pause Until

    • Neue Bedingung:Pixel Condition
    • Wieder dasselbe wie beim letzten Pause Until → Pixel Condition. Drücken Sie die GetSchaltfläche, aktivieren Sie das Eingabehilfenfenster und wählen Sie eine Farbe aus dem Hintergrund des aktiven Elements aus.
    • Geben Sie hier die Bildbeschreibung ein
    • Dies stellt nur sicher, dass die nächste Aktion zum richtigen Zeitpunkt ausgelöst wird.

  13. Aktion:Move or Click Mouse

    • Im Verhältnis zuAbsolute position
    • Klicken Sie auf das Zahnradmenü in der oberen rechten Ecke der Aktion und wählen Sie Restore Mouse Location.
    • Drücken Sie die GetTaste und bewegen Sie den Mauszeiger über „Maus & Trackpad“.
    • Ich habe mich für relativ zur absoluten Position entschieden, da die Pixelbedingungen nicht relativ zum aktuellen Fenster sein können ... Spielt eigentlich keine Rolle.

    • Geben Sie hier die Bildbeschreibung ein
  14. Aktionsname:Pause Until

    • Neue Bedingung:Pixel Condition
    • Wieder dasselbe wie beim letzten Pause Until → Pixel Condition. Drücken Sie die GetSchaltfläche, aktivieren Sie das Eingabehilfenfenster und wählen Sie eine Farbe aus dem Hintergrund des aktiven Elements aus.
    • Geben Sie hier die Bildbeschreibung ein
    • Dies stellt nur sicher, dass die nächste Aktion zum richtigen Zeitpunkt ausgelöst wird.

  15. Aktion:Move or Click Mouse

    • Im Verhältnis zuAbsolute position
    • Klicken Sie auf das Zahnradmenü in der oberen rechten Ecke der Aktion und wählen Sie Restore Mouse Location.
    • Drücken Sie die GetTaste und bewegen Sie den Mauszeiger über dieIgnore built-in tackpad when mouse or wireless trackpad is present
    • Ich habe mich für relativ zur absoluten Position entschieden, da die Pixelbedingungen nicht relativ zum aktuellen Fenster sein können ... Spielt eigentlich keine Rolle.

    • Geben Sie hier die Bildbeschreibung ein
  16. Aktionsname:Pause

    • .6Sekunden pausieren
    • Möglicherweise möchten Sie dies verlängern, wenn Sie das Gefühl haben, dass Sie die Wertänderung nicht ganz sehen können, und Sie möchten ... Diese Verzögerung wurde aus diesem Grund hinzugefügt, aber sie vergeht ziemlich schnell. Versuchen Sie so etwas wie 1 Sekunde ...

  17. Aktionsname:Quit a Specific Application
    • Beenden: System Preferences.
    • Möglicherweise möchten Sie diese Aktion zu Testzwecken deaktivieren.
Sie sagten: "Ich bin mir ziemlich sicher, dass die Befehlszeilenlösungen von SIP blockiert werden." Nun, SIP hat absolut nichts damit zu tun, warum das Ändern des defaultsWerts eines Schlüssels in einer .plistDatei das Ziel nicht erreicht. Der defaults Befehl wurde ab OS X 10.8 und später fast nutzlos, wo größere Änderungen vorgenommen wurden, die die effektive Verwendung im Vergleich zu älteren Versionen von OS X unterbrachen. Er kann in einigen Fällen immer noch verwendet werden, aber nicht annähernd so oft wie früher dort zu sein, wo es einmal verwendet wurde, um sofort wirksam zu werden, ohne unbedingt einen Prozess beenden zu müssen, um die Änderung zu übernehmen.
@ user3439894, ich vermute, es funktioniert in dieser Situation nicht, da Sie das nicht als Antwort gepostet haben?
Ich habe nicht einmal versucht, defaultsin diesem Anwendungsfall zu verwenden. Der Punkt, den ich machen wollte, ist, dass Ihre Aussage, die ich in meinem vorherigen Kommentar zitiert habe, falsch ist! SIP verhindert nicht, dass der defaults Befehl Aktionen für .plistDateien in ~/Library/Preferences. Sie sollten lesen: Informationen zum Systemintegritätsschutz auf Ihrem Mac
@ user3439894, es ist nicht so, dass ich nicht verstanden hätte, was du gesagt hast. Sie haben angedeutet, dass die Befehlszeilenoption möglicherweise noch auf dem Tisch liegt, aber nicht bestätigt, ob dies tatsächlich der Fall war ... Ich habe mich darauf konzentriert, eine gute Antwort auf die Frage zu finden, und Sie haben sich darauf konzentriert, mir zu sagen, dass ich mich in einer meiner Aussagen geirrt habe .
Sie sagten: "Sie haben angedeutet, dass die Befehlszeilenoption möglicherweise noch auf dem Tisch liegt, haben aber nicht bestätigt, ob dies tatsächlich der Fall war ...", ich habe nie etwas angedeutet, nur Tatsachenbehauptungen gemacht. Es gab nichts zu bestätigen, da die spezifische Verwendung für den von mir abgegebenen Kommentar nicht explizit relevant war! Ohne respektlos gemeint zu sein, scheint Ihre Annahme, dass SIP hier im Spiel ist, zu zeigen, dass Sie SIP oder nicht gut im Griff haben defaults. Auch ich habe mich darauf konzentriert, eine gute Antwort zu geben, was ich glaube, indem ich gezeigt habe, dass es nativ ohne Drittanbieter möglich ist, einfach und problemlos mit AS- und UI-Scripting.
@ user3439894, ich verstehe. Du hast recht und ich liege falsch. Kein Bedarf für weitere Kommentare, Alter ...
@Joonas Auch wenn Sie sich über das SIP geirrt haben, ist dies immer noch eine gute Antwort und ich weiß die Mühe zu schätzen - danke!
@DrRelling, nun, ich habe nur vermutet, dass SIP der Grund war, warum die Terminallösungen nicht funktionierten, und abgesehen davon, dass ich diese Möglichkeit erwähnte, hatte es nichts mit dem Kern meiner Antwort zu tun, nämlich zu vergessen, Dinge in Terminal einzugeben oder mit Applescript, weil KBM es viel einfacher macht. Ich habe gesagt "Ich bin mir ziemlich sicher", aber angesichts der Antwort von "user3439894" hätte ich es wahrscheinlich anders formulieren sollen, wie: "SIP könnte der Grund sein ..." oder es überhaupt nicht erwähnen, aber ich dachte nicht, dass es eine große Sache war, weil es definitiv nicht der Hauptpunkt meiner Antwort war, nur ein vorübergehender Gedanke.

Ich kann die Antwort von @ user3439894 aufgrund unzureichender Reputation nicht kommentieren, aber die richtige Zeile für OS X Catalina lautet:

click checkbox 2 of tab group 1 of group 1 of window 1 of application process "System Preferences"

Beachten Sie das Bit "... of tab group 1 ...", das jetzt notwendig ist.

Warum nicht den betreffenden Beitrag bearbeiten. Kommentare sind für Dinge, die dir nicht klar sind, es hört sich so an, als könntest du diese Bearbeitung / Ergänzung mit dem Befehl „Bearbeiten“ vornehmen.