我注意到 C++ 中的 vkCode 提供的键码与 Java 的 KeyEvent 提供的键码之间存在差异。(当然,普通字符具有相同的代码(0 => 48,就像 ASCII 一样),但它们在其他键上有所不同)。有没有办法将它们从一个“翻译”到另一个(每个背后的逻辑是什么?)或者我应该为此使用大量的开关和 IF。如果有帮助,我的应用程序一半使用 C++,一半使用 JAVA,因为 c++ 为我们提供了 Native Hooks,它获取用户按下的键的键码,然后 java 将使用它们。
提前致谢。
还是我应该使用大量的开关和 IF
您可能只需将它们放在查找表中,即将 Java KeyCodes 放在一个大数组中,因此您只需要做javaKeyCode = keyLut[cppScanCode]
.
可以在此处找到一份扫描码列表,VK_KEYCODES
当然也可以在API 文档中KeyEvent
找到。
VK_LEFT
Java 被设计为独立于平台的,因此无论扫描代码如何,按下左键总是会产生一个。我不完全确定,但我想 C++ 扫描码是硬件相关的。