Я пытаюсь использовать 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
Почему код клавиши 23
появляется, когда я отпускаю кнопку I ?Как проверить кнопку I без жесткого кодирования этих, казалось бы, случайных целочисленных констант?Java предлагает класс KeyEvent
для кодов клавиш, но они здесь не применимы, не так ли?