【发布时间】:2014-08-31 19:49:02
【问题描述】:
JavaFX 8 控制器如何判断 Shift、Ctrl、Alt 或 Enter 键是否位于在键盘的左侧还是右侧?
不幸的是,java.awt.event.KeyEvent 中的 getKeyLocation() 方法对于 javafx.scene.input.KeyEvent 类不存在。
我还尝试通过拦截 window.onkeydown 在 Javascript 中检查 event.location,但与 V8 或其他 JS 引擎不同,似乎 Nashorn 库不会区分它们并返回 DOM_KEY_LOCATION_STANDARD 无论密钥在哪里位于。
由于整体密钥捕获似乎非常糟糕(KeyEvent::getCode/keyText 方法中的不一致),我开始认为外部库将是必要的。 JavaFX(或Java)库中是否有解决方案,如果没有,可以在不同平台(Windows、Linux 和 Mac OS)上提供相同功能的轻量级库?
提前致谢!
更新
尝试使用 JavaFX + awt 组件(请参阅 suggestion below),但无法正常工作,因为 JavaFX 似乎提供并转换了事件 - 不正确。
尝试使用JNativeHook(他们recently moved),它几乎可以作为一种解决方法,但无法识别某些键,时间不精确并且实施起来有点尴尬,尤其是因为我无法为所有平台编译本机代码。许可条款也有点混乱(稳定版本的 GPL,在我的情况下不是一个选项,可能会转向 LGPL...)。
【问题讨论】:
标签: java keyboard javafx javafx-8 keyboard-events