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

标签 java c++ windows keycode keyevent

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

提前致谢。

最佳答案

or am I supposed to use loads of switches and IFs

你可以把它们放在 lookup table 中,也就是将Java KeyCodes放在一个大数组中,所以你只需要做javaKeyCode = keyLut[cppScanCode]

可以找到一个扫码列表here , VK_KEYCODES 当然可以在 the API docs for KeyEvent 中找到.

Java 设计为独立于平台,因此无论扫描代码如何,按下左键都会始终产生 VK_LEFT。我不完全确定,但我想 C++-scancode 是硬件相关的。

关于java - C++键盘键码和JAVA KeyEvent键码之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2798708/

相关文章:

java - 如何让ProgressDialog背景覆盖整个屏幕?

c# - 在 Windows 应用程序之间传递对缓冲区的引用

c++ - 标记所有不修改 const 的变量有什么缺点吗?

windows - 如何计算静态控件中文本的实际高度

windows - 可以指定 IFileDialog 的起始位置吗?

Java 对具有多个参数的对象进行排序

java - 删除字符串中重复的字符集

windows - 使用 Schannel 的 DTLS

java - 如何拆分具有字符数且字符为空格的字符串

c++ - 为什么 CUDA 在访问类成员时崩溃?