如何检测用户键盘是否在Java中的AZERTY中?

时间:2013-06-09 21:04:57

标签: java javafx

目前JavaFX中存在一个错误(https://javafx-jira.kenai.com/browse/RT-30669,需要免费注册),这使得如果您使用azerty键盘布局并在其中指定带有Z的加速器,则在Mac上它只会在键入时触发我需要解决这个问题,因为我现在需要发布我的产品。

所以我想检测Mac + Azerty,如果是这样的话就改用加速器来使用W.我知道如何检测Mac,我知道如何检测键盘的语言环境(使用InputContext#getLocale())但是怎么做我知道当前的语言环境是否具有azerty键盘布局?我是否必须检查使用azerty布局的已知语言环境的硬编码列表?如果是这样,我会在哪里找到这样的清单?

1 个答案:

答案 0 :(得分:2)

只是不要“检查已知区域设置的硬编码列表”,因为许多人可能有法语区域设置,其键盘与区域设置不匹配,如果他们在美国购买计算机并在魁北克使用它法语界面。我个人最糟糕,因为我有一个dvorak布局... ;-)我只是想想有多少基于西班牙语的布局可供选择...

我最好和更便携的建议是不要尝试检测难以检测的东西,而是为(例如)适用于大多数用户库的qwerty键盘提供一些“默认”键盘映射,并创建配置面板这使您的用户可以通过键入新密钥来更改应用程序的键映射,如果他们不喜欢默认值。

编辑:

啊......这可能确实是一个不同的问题...也许你可以为macosx上的所有非美式键盘制作一个组合框首选项,其键盘的修饰符会被更改?

为了更“直截了当”地回答您的问题,以下是我在谷歌上发现的一些结果:

都导致java.awt.im.InputContext

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

我从来没有在java中试过这个,所以我不能帮助你,而不是我的google-fu,但我真的希望这会有所帮助: - )