Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jnativehook的KeyEvents_Java_Windows_Keyboard Shortcuts_Keyboard Events_Jnativehook - Fatal编程技术网

Java jnativehook的KeyEvents

Java jnativehook的KeyEvents,java,windows,keyboard-shortcuts,keyboard-events,jnativehook,Java,Windows,Keyboard Shortcuts,Keyboard Events,Jnativehook,我尝试使用全局键盘侦听器,但似乎按键代码不同。例如,我想检查是否按下了ALT+I: addNativeKeyListener(new NativeKeyAdapter() { @Override public void nativeKeyReleased(NativeKeyEvent keyEvent) { val modifiers = keyEvent.getModifiers(); val altPressed = modifiers

我尝试使用全局键盘侦听器,但似乎按键代码不同。例如,我想检查是否按下了ALT+I:

addNativeKeyListener(new NativeKeyAdapter()
{
    @Override
    public void nativeKeyReleased(NativeKeyEvent keyEvent)
    {
        val modifiers = keyEvent.getModifiers();
        val altPressed = modifiers == ALT_L_MASK;
        LOGGER.log(INFO, "Modifiers: " + modifiers + " ALT: " + ALT_L_MASK);

        if (!altPressed)
        {
            return;
        }

        val keyCode = keyEvent.getKeyCode();
        LOGGER.log(INFO, "Key code: " + keyCode + " VK_I: " + VK_I);
        if (keyCode != VK_I)
        {
            return;
        }

        LOGGER.log(INFO, "Button combination recognized...");
    }
});
检查要按下的ALT修改器是否按预期工作,但检查I按钮是否按预期工作:

INFO: Modifiers: 8 ALT: 8
Oct 06, 2018 2:38:44 PM com.myCompany.Main nativeKeyReleased
INFO: Key code: 23 VK_I: 73
当我松开I按钮时,为什么钥匙代码
23
?如何在不硬编码那些看似随机的整数常量的情况下检查I按钮?Java为关键代码提供了类,但它们在这里不适用,是吗?

使用字符串按钮并与之进行比较可以实现这一技巧,但按钮必须存储为字符串,这是可以的:

public boolean isPressed(NativeKeyEvent keyEvent)
{
    val modifiers = keyEvent.getModifiers();
    val isModifierPressed = modifiers == modifier;

    if (!isModifierPressed)
    {
        return false;
    }

    val keyCode = keyEvent.getKeyCode();
    val keyText = NativeKeyEvent.getKeyText(keyCode);
    return keyText.equals(this.keyText);
}

注意:。

您能给出一个更具体的代码示例吗?please@VũĐạt:是的,我添加了我用来查看图像代码的
isPressed()
方法。我想知道修饰符从哪里来
修饰符是
NativeInputEvent.ALT\u MASK