gpt4 book ai didi

java - jnativehook 的关键事件

转载 作者:行者123 更新时间:2023-12-02 10:44:38 32 4
gpt4 key购买 nike

我正在尝试使用 jnativehook对于全局键盘监听器,但似乎键代码不同。例如,我想检查 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 提供 KeyEvent关键代码的类,但它们在这里不适用,是吗?

最佳答案

使用NativeKeyEvent.getKeyText()然后与字符串按钮进行比较就可以解决问题,但按钮必须存储为字符串,这是可以的:

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);
}

注:val is from Lombok .

关于java - jnativehook 的关键事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52679271/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com