【问题标题】:How to check which modifiers were pressed for a NativeKeyEvent?如何检查为 NativeKeyEvent 按下了哪些修饰符?
【发布时间】:2022-01-08 06:47:45
【问题描述】:

我正在尝试使用 jnativehook 编写我的第一个全局热键侦听器。修饰符部分似乎对初学者没有明确的描述,但我相信这对于熟悉的人来说是一个快速的回答。

我想测试NativeInputEvent.META_MASK 是否在修饰符字段中。不知道该怎么做,我开始搜索一些关于图书馆的讨论。 Here,作者说它“与核心 Java 中的 AWT 修饰符的工作方式完全相同”(大多数新开发人员可能正在使用 swing 或 JavaFX,因此这对我们来说没有直接意义)。我搜索了 AWT 修饰符的解释,发现 this 上面写着“您可以通过将其常量与修饰符字段进行与运算来检查是否按下了任何修饰键”。

所以,我不确切知道按位和或按位或工作。我查了一下,从here 开始,它按位表示并占用两个位,如果两个位都为 1,则返回 1。我不明白这如何适用于比较两个整数:NativeInputEvent.META_MASK 和修饰符字段事件。

我错过了什么?

【问题讨论】:

    标签: java awt jnativehook


    【解决方案1】:

    您需要使用修饰符位掩码:

    void nativeKeyTyped(NativeKeyEvent nativeEvent) {
        if (nativeEvent.getModifiers() & NativeInputEvent.META_MASK) {
            // META_MASK (left or right) was pressed.
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-08-30
      • 2012-02-05
      • 2022-06-13
      • 2017-03-07
      • 2014-06-27
      • 2013-10-03
      • 2017-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多