8

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

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

4

1 回答 1

2

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

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

编辑:

啊...这确实是一个不同的问题...也许您无论如何都可以为macosx上的所有非美国键盘设置组合框首选项,这些键盘的键带有更改的修饰符?

为了更“直截了当地”回答您的问题,以下是我在 google 上找到的一些结果:

两者都导致java.awt.im.InputContext

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

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

于 2013-06-09T21:12:57.890 回答