C++ 之间的区别键盘键码和 JAVA KeyEvent 键码

发布于 2024-09-01 06:27:53 字数 273 浏览 6 评论 0原文

我注意到 C++ 中的 vkCode 提供的键码与 Java 的 KeyEvent 提供的键码之间存在差异。 (当然,普通字符具有相同的代码(0 => 48,就像 ASCII 一样),但它们在其他键上有所不同)。 有没有一种方法可以将它们从一个“翻译”到另一个(每个背后的逻辑是什么?)或者我应该为此使用大量开关和IF。 如果有帮助的话,我的应用程序一半使用 C++,一半使用 JAVA,因为 C++ 为我们提供了 Native Hooks,它获取用户按下的按键的键码,然后 java 将使用它们。

提前致谢。

I noticed a difference between the keycodes that vkCode in C++ gives and the ones that Java's KeyEvent gives us. (Ofcourse the normal characters have the same code (0 => 48 just like the ASCII) but they differ in the other keys).
Is there a way to 'translate' them from one to the other (What's the logic behind each one?) or am I supposed to use loads of switches and IFs for that.
If it helps, my app is half in C++ and half in JAVA because of the Native Hooks that c++ gives us and it gets the keycodes of the keys that the user presses and then the java is going to use them.

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

没有伤那来痛 2024-09-08 06:27:53

或者我应该使用大量开关和 IF

你可以将它们放入 查找表,即将Java KeyCode放入一个大数组中,所以只需要做javaKeyCode = keyLut[cppScanCode]即可。

可以在此处找到一份扫描代码列表,并且 VK_KEYCODES 当然可以在 KeyEvent 的 API 文档。

Java 被设计为独立于平台,因此例如按左键,无论扫描代码如何,都将始终产生 VK_LEFT。我不完全确定,但我认为 C++ 扫描代码依赖于硬件。

or am I supposed to use loads of switches and IFs

You can probably just put them in a lookup table, that is, put the Java KeyCodes in a large array, so you just need to do javaKeyCode = keyLut[cppScanCode].

One list of scan codes can be found here, and the VK_KEYCODES can of course be found in the API docs for KeyEvent.

Java is designed to be platform independent, so pressing the left-key for instance, will always yield a VK_LEFT, no matter scan code. I'm not entirely sure, but I suppose the C++-scancode is hardware dependent.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文