4 votos

Applescript: Detectar si el Ratón o el Trackpad adjunto

Mi script establece el Natural de la Dirección de Desplazamiento de un Ratón o un Trackpad (MB trackpad o Magic Trackpad), pero en lugar de permitir que el usuario elija la que uno está conectado, me gustaría ser capaz de ejecutar mediante programación una de las dos funciones en función del hardware que se adjunta.
Es allí una manera de verificar (es decir. COMO o secuencia de Comandos de Shell) ¿qué hardware está conectado?

Por ejemplo, esto es lo que quiero lograr:
Si: Trackpad se adjunta, a continuación, ejecute el Trackpad de la función.
Si por el contrario: el Ratón está conectado, ejecute la función de Ratón.
Si por el contrario: el Ratón y el Trackpad se adjuntan, ejecutar
Otra cosa: tirar error, no hay dispositivos de entrada detectado

Yo después de una sólida función, pero no tienen idea de por dónde empezar.

Función De Ratón:

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"

Almohadilla Táctil Función:

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"

Gracias de antemano, cualquier ayuda es muy apreciada.

2voto

user3439894 Puntos 5883

Bueno, primero no entendí tu pregunta, así que he reescrito mi respuesta, y la segunda porque la "dirección de Desplazamiento: naturales" configuración de preferencias es global, he reescrito el código así.

Como se codificó hay dos subrutinas, cada uno para el ratón y el trackpad (interno o externo) que se llama basada en la existencia de los términos de los dispositivos. Que se define como el valor de mouse, externalTrackpad y internalTrackpad como regresó de la do shell script comandos configurados para buscar Apple Magic Mouse de Apple Wireless Trackpad y una Interna Trackpad. Tesis de comandos puede ser cambiado como necesitaba/quería.

Básicamente lo que ocurre es que las variables se inicializan y, a continuación, probado por el if declaraciones , y actuar en consecuencia según su código.

  • Si un ratón y externos trackpad no existe y una interna trackpad no existe, a continuación, se muestra un mensaje y el script finaliza.

  • Si un ratón y externos trackpad no existe y una interna trackpad no existe, entonces el TrackpadIsAttached subrutina se ejecuta, la "dirección de Desplazamiento: naturales" casilla de verificación está desactivada (si está activado) y, a continuación, el script termina como la configuración es global y no hay necesidad de proceso.

  • Si un ratón o un trackpad (interno o externo) existe entonces subrutina se ejecuta como debidamente codificado, la "dirección de Desplazamiento: naturales" casilla de verificación está desactivada (si está activado) y, a continuación, el script termina como la configuración es global y no hay necesidad de proceso.

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

Obviamente he usado mi Apple Magic Mouse de Apple y Trackpad Inalámbrico como ejemplos y probado contra para asegurarse de que funcionaba como codificado en mi MacBook Pro. Usted puede usar cualquiera de fabricación, la marca, el modelo de un ratón externo y el trackpad y usted sólo tendrá que editar el script de forma adecuada. Si necesita ayuda adicional con que pregunte. También he probado esto en OS X 10.8.5 y trabajó para mí como escrito.

1voto

Douglas Puntos 10417

Usted realmente no puede acceder a dispositivos HID (teclados, ratones, etc) sin necesidad de entrar en real de desarrollo de software.

Sin embargo, como un "hack" que puede consultar el system_profiler para ver lo que está conectado si usted ya sabe lo que tiene conectado.

Por ejemplo, para ver si mi Logitech ratón está conectado, puede emitir el comando system_profiler SPUSBDataType | grep -i logitech

y que es la salida

Vendor ID: 0x046d  (Logitech Inc.)
Manufacturer: Logitech

Así, para especificar su dispositivo específico, usted puede modificar el comando: system_profiler SPUSBDataType | grep -i 0x046d

Así, un simple script de bash para comprobar el ratón está conectado sería

#!/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

Te gustaría hacer algo similar para el trackpad

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X