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

时间:2010-05-09 18:40:15

标签: java c++ windows keycode keyevent

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

提前致谢。

1 个答案:

答案 0 :(得分:3)

  

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

您可以将它们放在lookup table中,即将Java KeyCodes放在一个大型数组中,这样您只需要javaKeyCode = keyLut[cppScanCode]

可以找到一个扫描代码列表hereVK_KEYCODES当然可以在the API docs for KeyEvent中找到。

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