JavaFX 8控制器如何判断是否找到 Shift , Ctrl , Alt 或 Enter 键在键盘的左侧或右侧?
getKeyLocation()
类java.awt.event.KeyEvent
中的javafx.scene.input.KeyEvent
方法不幸存在于event.location
类。
我还尝试通过截取window.onkeydown
来检查Javascript中的DOM_KEY_LOCATION_STANDARD
,但与V8或其他JS引擎不同,看起来Nashorn库并没有区别它们并返回{{1无论密钥位于何处。
由于整体密钥捕获似乎已经完全破坏(KeyEvent::getCode
/ keyText
方法中的不一致),我开始认为外部库是必要的。 JavaFX(或Java)库中是否有解决方案,如果没有,可以在不同平台(Windows,Linux和Mac OS)上提供相同功能的轻量级库?
提前致谢!
更新
尝试使用JavaFX + awt组件(请参阅suggestion below),但不会像JavaFX提供的那样工作并且不正确地翻译事件。
尝试使用JNativeHook(他们recently moved),几乎符合解决方案但无法识别某些密钥,时间不准确且有点尴尬实现,特别是因为我无法为所有平台编译本机代码。许可条款也有点混乱(稳定版的GPL,在我的情况下不是一个选项,可能转向LGPL ......)。
答案 0 :(得分:2)
据我所知,目前还没有用于确定在JavaFX中按下哪个物理键的API。很难看出第三方库如何实现这一点,因为它必须以这种代码无法真正访问的方式拦截JavaFX的低级实现。
如果这对您很重要,我建议您在https://javafx-jira.kenai.com/
提交功能请求答案 1 :(得分:1)