我注意到C ++中的vkCode提供的密钥代码与Java的KeyEvent提供给我们的密钥代码之间存在差异。 (当然,普通字符具有相同的代码(0 => 48,就像ASCII一样),但它们在其他键中不同)。 有没有办法将它们从一个“转换”到另一个(每个背后的逻辑是什么?)或者我应该使用大量的开关和IF。 如果它有帮助,我的应用程序是C ++的一半和JAVA的一半,因为c ++提供给我们的Native Hooks,它获取用户按下的键的密钥代码,然后java将使用它们。
提前致谢。
答案 0 :(得分:3)
或者我应该使用大量的开关和IF
您可以将它们放在lookup table中,即将Java KeyCodes放在一个大型数组中,这样您只需要javaKeyCode = keyLut[cppScanCode]
。
可以找到一个扫描代码列表here,VK_KEYCODES
当然可以在the API docs for KeyEvent
中找到。
Java被设计为独立于平台,因此按下左键,无论扫描代码如何,都会产生VK_LEFT
。我不完全确定,但我认为C ++ - scancode与硬件有关。