2011-08-16 3 views
6

Como OS X admite el "desplazamiento natural", mis aplicaciones funcionan mal. El desplazamiento natural está hecho para paneles de desplazamiento, lo que realmente me gusta. Pero, cuando quiero acercar/alejar, funciona mal. Entonces, lo que quiero hacer es verificar el método de desplazamiento para OS X.
Si es "natural" tomaré el opuesto de los valores de desplazamiento desde MouseWheelEvent.getWheelRotation() para hacer que mi comportamiento de acercamiento/alejamiento sea correcto.Java: ¿Cómo obtener el método de desplazamiento en OS X Lion?

Así que, en resumen: ¿Cómo saber si OS X usa desplazamiento natural o no?

+0

favor puede usted aclarar lo que es 'desplazamiento no natural está hecho para paneles de desplazamiento', qué/cómo es diferente el valor int de 'ScrollableUnitXxx' y' ScrollableTracksXxx' contra/para comparar con otro sistema operativo nativo – mKorbel

+1

OS X proporciona una configuración de "desplazamiento natural". Si lo habilita y se desplaza, el contenido seguirá sus dedos. Si no está habilitado, las barras de desplazamiento seguirán sus dedos, lo que hace que el contenido se mueva en la otra dirección. –

Respuesta

3

Encontré una solución.

Primero, necesita una biblioteca para leer los archivos .plist. Usé this one.

De lo que fácilmente puede leer en el GlobalPreferneces.plist (marcada con fseventer el que se cambia el archivo al cambiar la opción de desplazamiento) para averiguar qué tipo de desplazamiento se habilita la siguiente manera:

try { 
    File globalPref = new File(System.getProperty("user.home") + "/Library/Preferences/.GlobalPreferences.plist"); 
    NSDictionary dict = (NSDictionary)PropertyListParser.parse(globalPref); 

    NSNumber pref = (NSNumber)dict.objectForKey("com.apple.swipescrolldirection"); 

    if(pref.boolValue()) { 
     //natural scrolling is enabled 
    } 
} catch (Exception ex) { 
    System.out.println("Faild to parse plist: " + ex.getMessage()); 
} 
+0

Eso es de hecho. He encontrado el archivo y el valor cambia a medida que modifico la configuración. ¡Gracias! –

1

Como Apple ha eliminado Java, no creo que haya un método integrado para detectar si el desplazamiento natural está habilitado. Sin embargo, puede leer en los archivos .plist para configurar el comportamiento del mouse/touchpad (que es un archivo xml básico) y buscar la propiedad para habilitar el desplazamiento natural se establece en verdadero o falso.

Usted puede encontrar los archivos plist requeridas aquí:

usuario/Library/Preferences/< - Esta carpeta se oculta en León!

com.apple.driver.AppleBluetoothMultitouch.mouse.plist

com.apple.driver.AppleHIDMouse.plist

Editar:

No se puede leer en un archivo plist con la norma Java Framework, ya que desde Mac OS 10.4 todas las listas se guardan en formato binario. Vea mi otra respuesta para una solución correcta.

+0

Encontré la carpeta, pero los archivos que mencionaste no están allí. –

+0

Eso es muy extraño. ¿Alguna vez ha realizado cambios en la configuración de su mouse? También necesita reemplazar el usuario con su propio nombre de usuario :) –

+0

Sí, hice cambios. Solo usando la GUI proporcionada por Apple. El archivo no debería desaparecer debido a los cambios. –

1

Eche un vistazo a answer de Mike Swingler en la lista de correo de java-dev. Hay un hilo entero al respecto.

+0

Gracias por el tema, pero todavía no hay respuesta en la lista de correo. –