2013-06-09 6 views
8

Obecnie jest błąd w JavaFX (https://javafx-jira.kenai.com/browse/RT-30669, wymagana bezpłatna rejestracja), który sprawia, że ​​jeśli używasz układu klawiatury azerty i określasz akcelerator z Z, to na Macie wystrzeliwuje się tylko podczas wpisywania W. Potrzebuję aby obejść ten błąd, ponieważ teraz muszę zwolnić mój produkt.jak wykryć, czy klawiatura użytkownika znajduje się w AZERTY w Javie?

Chciałbym więc wykryć Maca + Azerty, a jeśli tak, to zmienić akcelerator na W. Wiem, jak wykryć Maca, i wiem, jak wykryć locale klawiatury (używając InputContext # getLocale()), ale jak czy wiem, czy obecne ustawienia regionalne mają układ klawiatury azerty? Czy muszę sprawdzić na podstawie zakodowanej listy znanych lokalizacji, które używają układu azerty? Jeśli tak, to gdzie znajdę taką listę?

+0

Czy ten błąd występuje tylko w układach AZERTY, czy też w innych układach, takich jak QWERTZ? – Arjan

+0

Nie wiedziałbym, dlaczego ... dlaczego? –

+0

Po prostu ciekawy, to pierwszy układ, który przyszedł ci do głowy, gdy wspomniałeś, że klawisz Z nie był w "normalnej" pozycji QWERTY. Klawiatury QWERTZ mają zamienione klawisze Y i Z, co jest świetną zabawą dla niczego nie podejrzewających użytkowników, którzy muszą dokonać zmian w BIOS-ie i potwierdzić to Y. – Arjan

Odpowiedz

2

Po prostu nie "sprawdzaj z zakodowaną listą znanych lokalizacji", ponieważ wiele osób może mieć francuskie locale z klawiaturą, która nie pasuje do ustawień regionalnych, jeśli kupili komputer w USA i użyli go w quebecu z francuski interfejs. Osobiście najgorsze, ponieważ mam układ dvoraka ... ;-) A ja chcę sobie wyobrazić, ile wariantów wersji hiszpańskiej może być dostępnych ...

Moja najlepsza i bardziej przenośna porada byłoby nie spróbować wykryć czegoś, co jest ledwo wykrywalne, ale dać kilka "domyślnych" odwzorowań klawiatury dla (np.) klawiatur qwerty, które będą działać dla większości twojej bazy użytkowników, i utworzyć panel konfiguracji, który umożliwi użytkownikowi zmianę mapowania klawiszy dla twojej aplikacji, wpisując nowe klucze, jeśli nie podoba im się wartość domyślna.

edit:

ah ... że może być rzeczywiście inny problem ... może i tak można zrobić preferencję combobox dla wszystkich spoza USA klawiatury na MacOSX, który ma klucze z modyfikatorem, które się zmieniło?

Aby odpowiedzieć na to pytanie bardziej "wprost", oto kilka Wyniki znalazłem na google:

zarówno prowadzić ku java.awt.im.InputContext:

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

nigdy nie próbowałem to w Javie, więc nie mogę Ci pomóc bardziej niż z mojego google-fu, ale mam nadzieję, że to pomaga :-)

+0

Zgadzam się. Ustaw to pole wyboru i jawnie zapytaj użytkownika po raz pierwszy (z odpowiednim wyjaśnieniem). –

+0

Hmm, podczas gdy podążam za twoim wyjaśnieniem, moim jedynym problemem jest właśnie cofnięcie (skrót + z), błąd nie pojawia się przy pisaniu. Byłoby więc trochę dziwnie zapytać użytkownika o mapę za cofanie. –

+0

zaktualizowałem moją odpowiedź odnośnie do twojego komentarza – zmo

Powiązane problemy