检测未知(0x0)密钥的名称/密钥代码

时间:2014-12-23 15:49:02

标签: java

我编写了代码,用于检测已按下的键。

@Override
        public void keyPressed(KeyEvent e) {
            int code = e.getKeyCode();
            String name = KeyEvent.getKeyText(code);

            tArea.append(name + " pressed\n");
        }

此代码工作正常。但是在我的键盘上,这是一个圆圈,可用于停止播放媒体播放的歌曲,启动歌曲(并暂停歌曲),更改为下一首歌曲,然后返回上一首歌曲。许多键盘都有这个按钮。 但是当我按下这个圆圈中的一个按钮时,它会说:

Unknown keycode: 0x0 pressed

我有办法获得这把钥匙吗?我需要知道它是什么,因为我正在编写一个应该自动按下这些键的程序。

提前致谢

1 个答案:

答案 0 :(得分:3)

您需要使用getExtendedKeyCode()方法来掌握这些关键事件。

请注意,the Javadoc表示您未能获得KEY_TYPED个活动,但只有KEY_PRESSEDKEY_RELEASED,因为KEY_TYPED适用于可以转换为Unicode字符的内容,这可以是

如果扩展密钥代码仍然不足以识别您正在按下的内容,则您需要求助于KeyEvent中出现的扫描代码,但不会可以访问,因为它是一个私人领域。 this answer中有一点很好的反射魔法可以让你获得扫描码。

This list of key codes可能会对您有所帮助。你正在处理"不可映射的事情。列表。