C和x2B之间的差异+;键盘键代码和JAVA键事件键代码 我注意到C++中的VKCODE提供的密钥代码和java的密钥事件给我们的区别。(当然,普通字符具有相同的代码(0=>48,就像ASCII一样),但它们在其他键中有所不同)。 有没有办法将它们从一个“翻译”到另一个(每一个背后的逻辑是什么?)。 如果它有帮助,我的应用程序是C++的一半,java的一半,因为C++给我们的本地钩子,它得到用户按下的键的键码,然后java就会使用它们。

C和x2B之间的差异+;键盘键代码和JAVA键事件键代码 我注意到C++中的VKCODE提供的密钥代码和java的密钥事件给我们的区别。(当然,普通字符具有相同的代码(0=>48,就像ASCII一样),但它们在其他键中有所不同)。 有没有办法将它们从一个“翻译”到另一个(每一个背后的逻辑是什么?)。 如果它有帮助,我的应用程序是C++的一半,java的一半,因为C++给我们的本地钩子,它得到用户按下的键的键码,然后java就会使用它们。,java,c++,windows,keycode,keyevent,Java,C++,Windows,Keycode,Keyevent,提前谢谢 还是我应该使用大量的开关和IFs 你可以把它们放在一个数组中,也就是说,把Java键码放在一个大数组中,所以你只需要做javaKeyCode=keyLut[cppScanCode] 可以找到一个扫描代码列表,当然可以在中找到VK_KEYCODES Java被设计成独立于平台的,因此,例如按下left键,无论扫描代码是什么,都会产生一个VK_left。我不完全确定,但是我认为C++扫描代码是硬件依赖的。标准C++没有任何概念,叫做“VKCODEC”——也许你在考虑一些特定于平台的库?如果

提前谢谢

还是我应该使用大量的开关和IFs

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

可以找到一个扫描代码列表,当然可以在中找到
VK_KEYCODES


Java被设计成独立于平台的,因此,例如按下left键,无论扫描代码是什么,都会产生一个
VK_left
。我不完全确定,但是我认为C++扫描代码是硬件依赖的。

标准C++没有任何概念,叫做“VKCODEC”——也许你在考虑一些特定于平台的库?如果是的话,请说哪一个。嗯,是的。我使用的是windows.h,vkCode来自这里:((KBDLLHOOKSTRUCT*)lparam)->vkCode//假设lparam是钩子需要的lparam参数。谢谢。我想这是我唯一的希望。我以前没有实际使用过Lut,Netbeans IDE告诉我它来自Java.Awt.Image。这是正确的吗?不,不,查找表与api无关。这只是将简单函数编码为数组的一种方法。