KeyEvent.VK_ *的最大可能值是多少?

时间:2016-06-24 20:46:21

标签: java

我想要一个包含所有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”样式吗?

1 个答案:

答案 0 :(得分:2)

使用KeyEvent:http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/awt/event/KeyEvent.java

可达到的最高值是(使用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,可能是最低的实际可用映射值。