Java jnativehook的KeyEvents
我尝试使用全局键盘侦听器,但似乎按键代码不同。例如,我想检查是否按下了ALT+I: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
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