代码之家  ›  专栏  ›  技术社区  ›  BullyWiiPlaza

jnativehook的KeyEvents

  •  0
  • BullyWiiPlaza  · 技术社区  · 6 年前

    我试着用 jnativehook 中高音 + 按下:

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

    正在检查 中高音 要按下的修改器按预期工作,但正在检查 按钮未按预期工作:

    INFO: Modifiers: 8 ALT: 8
    Oct 06, 2018 2:38:44 PM com.myCompany.Main nativeKeyReleased
    INFO: Key code: 23 VK_I: 73
    

    为什么钥匙是密码 23 当我释放 按钮而不硬编码那些看似随机的整数常量?Java提供了 KeyEvent 但它们在这里不适用,是吗?

    1 回复  |  直到 5 年前
        1
  •  1
  •   BullyWiiPlaza    5 年前

    使用 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