2013-06-09 13 views
8

C'è attualmente un bug in JavaFX (https://javafx-jira.kenai.com/browse/RT-30669, è richiesta la registrazione gratuita), il che fa sì che se si utilizza un layout di tastiera azerty e si specifica un acceleratore con Z in esso, su Mac si attiva solo quando si digita un W. Ho bisogno per ovviare a questo errore in quanto ho bisogno di rilasciare il mio prodotto ora.come rilevare se una tastiera utente è in AZERTY in Java?

Quindi mi piacerebbe rilevare Mac + Azerty e in tal caso cambiare l'acceleratore per usare W. So come rilevare Mac, e so come rilevare le impostazioni locali della tastiera (usando InputContext # getLocale()) ma come faccio a sapere se la locale corrente ha un layout di tastiera azerty? Devo controllare un elenco di località conosciute che utilizzano un layout azerty? Se sì, dove troverei una tale lista?

+0

Questo errore si verifica solo per i layout AZERTY o anche per altri layout come QWERTZ? – Arjan

+0

In realtà non lo saprei ... perché? –

+0

Solo curioso, è il primo layout che mi è venuto in mente quando hai detto che il tasto Z non era nella "normale" posizione QWERTY. Le tastiere QWERTZ hanno i tasti Y e Z scambiati, il che è molto divertente per gli utenti ignari che devono apportare modifiche al BIOS e confermare con Y. – Arjan

risposta

2

Semplicemente non "controllare un elenco di località conosciute con hardcoded" dato che molte persone possono avere un locale francese con una tastiera che non corrisponde alla locale, se hanno acquistato il loro computer negli Stati Uniti e lo usano in quebec con un'interfaccia francese. Personalmente sono peggio, visto che ho un layout di dvorak ... ;-) E voglio solo immaginare quante varianti del layout basato spagnolo possono essere disponibili ...

Il mio consiglio migliore e più portatile sarebbe quello di non provare a rilevare qualcosa che è difficilmente rilevabile, ma dare alcuni mapping tastiera "predefiniti" per (es.) tastiere qwerty che funzionerebbero per la maggior parte della tua base utente, e creare un pannello di configurazione che permetta all'utente di cambiare la mappatura dei tasti per la tua applicazione digitando le nuove chiavi, se a loro non piacciono i valori predefiniti.

edit:

ah ... che può essere effettivamente un problema diverso ... forse si potrebbe comunque fare una preferenza casella combinata per tutti i non-noi tastiera su MacOSX che ha le chiavi con un modificatore che ottenere cambiato?

per rispondere alla tua domanda più "semplicemente", qui ci sono alcuni risultati che ho trovato su google:

entrambi conducono verso java.awt.im.InputContext:

InputContext context = InputContext.getInstance(); 
System.out.println(context.getLocale().toString()); 

ho mai provato questo in Java, quindi non si può aiutare di più che con il mio google-fu, ma spero davvero che questo aiuta :-)

+0

Accetto. Crea una casella di controllo e chiedi esplicitamente all'utente la prima volta (con una spiegazione adeguata) –

+0

Hmm mentre seguo la tua spiegazione, il mio unico problema è in realtà annullare (scorciatoia + z), il bug non si manifesta durante la digitazione. Quindi sarebbe un po 'strano chiedere all'utente un keymapping per annullare. –

+0

aggiornato la mia risposta riguardo al tuo commento – zmo

Problemi correlati