目前JavaFX中存在一个错误(https://javafx-jira.kenai.com/browse/RT-30669,需要免费注册),这使得如果你使用azerty键盘布局并指定一个带有Z的加速器它,在Mac上它只在键入W时触发.我需要解决这个bug,因为我需要立即发布我的产品.
所以我想检测Mac + Azerty,如果是这样的话就改用加速器来使用W.我知道如何检测Mac,我知道如何检测键盘的语言环境(使用InputContext#getLocale())但是我怎么知道当前的语言环境有一个azerty键盘布局?我是否必须检查使用azerty布局的已知语言环境的硬编码列表?如果是这样,我会在哪里找到这样的清单?
只是不要“检查已知区域设置的硬编码列表”,因为如果许多人在美国购买计算机并在魁北克使用带有法语界面的计算机,那么他们可能会使用与区域设置不匹配的法语区域设置。我个人是最糟糕的,因为我有一个德沃夏克布局...;-)我只是想想象可能有多少种基于西班牙语的布局可用...
我最好的、更便携的建议是不要尝试检测难以检测的东西,而是为(例如)qwerty 键盘提供一些“默认”键盘映射,这些映射适用于大多数用户群,并创建一个配置面板,使您能够使用如果用户不喜欢默认值,则可以通过键入新键来更改应用程序的键映射。
编辑:
啊...这确实是一个不同的问题...也许您无论如何都可以为 macOS 上的所有非美国键盘设置一个组合框首选项,这些键盘的键带有可以更改的修饰符?
为了更“直接”地回答你的问题,以下是我在谷歌上找到的一些结果:
两者都导致java.awt.im.InputContext:
InputContext context = InputContext.getInstance();
System.out.println(context.getLocale().toString());
Run Code Online (Sandbox Code Playgroud)
我从来没有在java中尝试过这个,所以我不能比我的google-fu帮助你更多,但我真的希望这有帮助:-)