Mein Skript legt die natürliche Bildlaufrichtung entweder einer Maus oder eines Trackpads (MB-Trackpad oder Magic Trackpad) fest, aber anstatt dem Benutzer zu erlauben, auszuwählen, welches angeschlossen ist, möchte ich in der Lage sein, eine der beiden Funktionen programmgesteuert auszuführen an welcher Hardware angeschlossen ist.
Gibt es eine Möglichkeit zu überprüfen (zB AS oder Shell Script), welche Hardware angeschlossen ist?
Folgendes möchte ich zum Beispiel erreichen:
Wenn: Trackpad angeschlossen ist, dann Trackpad-Funktion ausführen.
Andernfalls, wenn: Maus angeschlossen ist, Mausfunktion ausführen.
Andernfalls, wenn: Maus und Trackpad angeschlossen sind, führen Sie beide aus.
Andernfalls: Throw-Fehler, keine Eingabegeräte erkannt
Ich bin auf der Suche nach einer robusten Funktion, habe aber keine Ahnung, wo ich anfangen soll.
Mausfunktion:
tell application "System Preferences"
reveal anchor "mouseTab" of pane id "com.apple.preference.mouse"
end tell
tell application "System Events" to tell process "System Preferences"
tell checkbox 1 of window 1 to if value is 1 then click
end tell
quit application "System Preferences"
Trackpad-Funktion:
tell application "System Preferences"
activate
set current pane to pane "com.apple.preference.trackpad"
end tell
tell application "System Events"
tell application process "System Preferences" to tell tab group 1 of window "Trackpad"
click radio button 2
if value of checkbox 1 is 1 then
click checkbox 1
end if
end tell
end tell
quit application "System Preferences"
Vielen Dank im Voraus, jede Hilfe wird sehr geschätzt.
Okay, erstens habe ich Ihre Frage falsch gelesen, also habe ich meine Antwort umgeschrieben, und zweitens, weil die Einstellung "Bildlaufrichtung: natürlich" global ist, habe ich auch den Code umgeschrieben .
Wie codiert gibt es zwei Subroutinen , jeweils eine für die Maus und das Trackpad (intern oder extern), die basierend auf der Existenz der definierten Geräte aufgerufen werden. Dies ist wie im Wert für definiert mouse
und wird von den BefehlenexternalTrackpad
zurückgegeben, die so konfiguriert sind, dass sie nach Apple Magic Mouse, Apple Wireless Trackpad und einem internen Trackpad suchen. Diese Befehle können nach Bedarf/Wunsch geändert werden.internalTrackpad
do shell script
Was im Grunde passiert, ist, dass die Variablen initialisiert und dann von den if
Anweisungen getestet und entsprechend wie codiert bearbeitet werden.
Wenn keine Maus und kein externes Trackpad vorhanden sind und kein internes Trackpad vorhanden ist, wird eine Meldung angezeigt und das Skript wird beendet.
Wenn keine Maus und kein externes Trackpad vorhanden sind, aber ein internes Trackpad vorhanden ist, wird die TrackpadIsAttached
Subroutine ausgeführt, das Kontrollkästchen "Scroll-Richtung: natürlich" ist deaktiviert (falls aktiviert) und das Skript wird beendet, da die Einstellung global ist und es keine gibt weiterverarbeiten müssen.
Wenn entweder eine Maus oder ein Trackpad (intern oder extern) vorhanden ist, wird eine der Unterroutinen entsprechend codiert ausgeführt, das Kontrollkästchen "Scroll-Richtung: natürlich" ist deaktiviert (falls aktiviert) und das Skript wird beendet, da die Einstellung global ist und dies nicht erforderlich ist weiter verarbeiten.
on MouseIsAttached()
tell application "System Preferences"
activate
set current pane to pane "com.apple.preference.mouse"
end tell
tell application "System Events" to tell process "System Preferences"
tell radio button 1 of tab group 1 of window 1 to if value is 0 then click
tell checkbox 1 of tab group 1 of window 1 to if value is 1 then click
end tell
tell application "System Preferences" to quit
end MouseIsAttached
on TrackpadIsAttached()
tell application "System Preferences"
activate
set current pane to pane "com.apple.preference.trackpad"
end tell
tell application "System Events" to tell application process "System Preferences"
tell radio button 2 of tab group 1 of window 1 to if value is 0 then click
tell checkbox 1 of tab group 1 of window 1 to if value is 1 then click
end tell
tell application "System Preferences" to quit
end TrackpadIsAttached
tell current application
set mouse to (do shell script "system_profiler SPBluetoothDataType | awk '{ FS = \": \" } ; /Apple Magic Mouse/ { print $2 }'")
set externalTrackpad to (do shell script "system_profiler SPBluetoothDataType | awk '{ FS = \": \" } ; /Apple Wireless Trackpad/ { print $2 }'")
set internalTrackpad to (do shell script "system_profiler SPUSBDataType | awk '/Trackpad:/ { print \"Internal Trackpad\" }'")
if mouse is equal to "" and externalTrackpad is equal to "" then
if internalTrackpad is equal to "Internal Trackpad" then
my TrackpadIsAttached()
return
else
display dialog "The Mouse and Trackpad are not connected." buttons {"OK"} default button 1
return
end if
end if
if mouse is equal to "Apple Magic Mouse" then
my MouseIsAttached()
return
end if
if externalTrackpad is equal to "Apple Wireless Trackpad" then
my TrackpadIsAttached()
return
end if
end tell
Offensichtlich habe ich meine Apple Magic Mouse und das Apple Wireless Trackpad als Beispiele verwendet und getestet, um sicherzustellen, dass es auf meinem MacBook Pro wie codiert funktioniert. Sie können jeden Hersteller, jede Marke und jedes Modell für eine externe Maus und ein externes Trackpad verwenden, und Sie müssen nur das Skript entsprechend bearbeiten. Wenn Sie dabei zusätzliche Hilfe benötigen, fragen Sie einfach. Ich habe dies auch unter OS X 10.8.5 getestet und es hat wie geschrieben für mich funktioniert.
Sie können wirklich nicht auf HID-Geräte (Tastaturen, Mäuse usw.) zugreifen, ohne in die eigentliche Softwareentwicklung einzusteigen.
Als "Hack" können Sie jedoch abfragen, system_profiler
um zu sehen, was verbunden ist, wenn Sie bereits wissen, was Sie verbunden haben.
Um beispielsweise zu sehen, ob meine Logitech-Maus angeschlossen ist, können Sie den Befehl ausgebensystem_profiler SPUSBDataType | grep -i logitech
und es wird ausgegeben
Vendor ID: 0x046d (Logitech Inc.)
Manufacturer: Logitech
Um also Ihr spezifisches Gerät anzugeben, können Sie den Befehl wie folgt ändern:system_profiler SPUSBDataType | grep -i 0x046d
Ein einfaches Bash-Skript zum Überprüfen, ob die Maus verbunden ist, wäre also
#!/bin/bash
mouse="0x046d"
test=`system_profiler SPUSBDataType | grep $mouse | cut -d : -f 2 | cut -d "(" -f 1`
if [ $mouse == $test ]
then
echo "Mouse Connected"
else
echo "No Mouse Connected"
fi
exit 0
Sie würden etwas Ähnliches für das Trackpad tun
Nikhil Wagh
Benutzer3439894
Benutzer3439894
activate
Befehle auskommentieren oder entfernen . Beachten Sie, dass der Code wie geschrieben keine Fehlerbehandlung hat und möglicherweise die Verwendung einesdelay
Befehls zwischen den Ereignissen in den Handlern erfordert . Heutzutage füge ich normalerweise viel mehr Code hinzu , wenn ich mich mit UI-Scripting befasse , insbesondere mit Systemeinstellungen . Als Beispiel siehe meine Antwort apple.stackexchange.com/questions/419221/… um den Unterschied zu sehen.