2011-08-16 3 views
6

Poiché OS X supporta lo "scrolling naturale", le mie applicazioni funzionano male. Lo scorrimento naturale è fatto per i pannelli di scorrimento, che mi piacciono molto. Ma, quando voglio ingrandire/ridurre, funziona male. Quindi, quello che voglio fare è controllare il metodo di scorrimento per OS X.
Se è "naturale" prenderò l'opposto dei valori di scorrimento da MouseWheelEvent.getWheelRotation() per far sì che il mio comportamento di zoom in/out si senta corretto.Java: come ottenere il metodo di scorrimento in OS X Lion?

Quindi, in breve: come sapere se OS X utilizza lo scorrimento naturale o no?

+0

favore potete chiarire cos'è lo scrolling non naturale per i pannelli di scorrimento ?, cosa/come è diverso valore int da 'ScrollableUnitXxx' e' ScrollableTracksXxx' contro/al confronto con un altro OS nativo – mKorbel

+1

OS X fornisce un'impostazione "scrolling naturale". Se lo abiliti e scorri, il contenuto seguirà le tue dita. Se non è abilitato, le barre di scorrimento seguiranno le dita, il che farà spostare il contenuto nell'altra direzione. –

risposta

3

Trovato una soluzione.

Per prima cosa è necessaria una libreria per leggere i file .plist. Ho usato this one.

di quanto si può facilmente leggere nella GlobalPreferneces.plist (controllato con fseventer quale file viene modificato quando si cambia l'opzione di scorrimento) per scoprire quale tipo di scorrimento è attivata in questo modo:

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

Questo è davvero. Ho trovato il file e il valore cambia mentre modifico le impostazioni. Grazie! –

1

Come Apple ha rilasciato Java, non credo che sia disponibile un metodo per rilevare se lo scorrimento naturale è abilitato. Tuttavia, è possibile leggere i file .plist per configurare il comportamento del mouse/touchpad (che è un file xml di base) e cercare la proprietà per abilitare lo scorrimento naturale su true o false.

È possibile trovare i file .plist richiesti qui:

utente/Library/Preferences/< - Questa cartella è nascosta in Lion!

com.apple.driver.AppleBluetoothMultitouch.mouse.plist

com.apple.driver.AppleHIDMouse.plist

Edit:

Non è possibile leggere in un file plist con lo standard Java Framework, dal momento che Mac OS 10.4 tutti i .plists vengono salvati in formato binario. Vedi la mia altra risposta per una soluzione corretta.

+0

Ho trovato la cartella, ma i file che hai citato non sono lì. –

+0

Questo è molto strano. Hai mai apportato modifiche alle impostazioni del mouse? Inoltre è necessario sostituire Utente con il proprio nome utente :) –

+0

Sì, ho apportato delle modifiche. Solo utilizzando la GUI fornita da Apple. Il file non dovrebbe essere andato a causa delle modifiche. –

1

Dai uno sguardo a Mike Swingler's answer sulla mailing list java-dev. C'è un'intera discussione a riguardo.

+0

Grazie per l'argomento, ma non c'è ancora risposta alla mailing list. –