我想要一个包含所有VK值的数组,以便我可以询问是否按下了某个键
public class Input implements KeyListener{
boolean[] keyPressed = new boolean [1000];
@Override
public void keyPressed(KeyEvent arg0) {
keyPressed[arg0.getKeyCode()] = true;
}
@Override
public void keyReleased(KeyEvent arg0) {
keyPressed[ arg0.getKeyCode() ] = false;
}
@Override
public void keyTyped(KeyEvent arg0) {}
}
任何人都可以告诉我 - 最大和最小VK值是多少?
我不希望Oracle有一天添加新的VK值并破坏我的代码。
我可以动态设置“limits.h”样式吗?
答案 0 :(得分:2)
可达到的最高值是(使用unicode表示):
public static final char CHAR_UNDEFINED = 0xFFFF;
或十进制65535。
这是未定义的非unicode字符的未映射值。
有效事件的最高定义值为:
public static final int VK_BEGIN = 0xFF58;
或65368十进制。
如果您在切断一些特殊功能方面做得很好,那么最高的映射值是:
public static final int VK_CONTEXT_MENU = 0x020D;
或525(十进制)。
最低定义值为:
public static final int VK_UNDEFINED = 0x0;
或十进制0。
显然,键盘不能实现真正的最大和真实最小值,但它们可以作为合理的硬编码限制。 VK_CANCEL
位于0x03,可能是最低的实际可用映射值。