我正在寻找游戏键盘上的G1-G18宏键的键码,例如Corsair K90键盘或Logitech游戏键盘。
我想将全局键侦听器放在C++中的那些键集合上。
G1-G18不属于标准多媒体键代码列表的一部分。
Java测试代码:
public void keyTyped(KeyEvent e){
System.out.println("Keycode pressed: "+e.getKeyCode());
}
当我按下任何G1-G18宏键时,这将永远不会得到键事件。我希望能够从这些键中获取键事件。
最佳答案
宏键通常是与键盘驱动程序一起发送的专有键,它们执行一些由管理软件本身进行硬编码的操作。
因此,系统实际上不处理任何这些事件。
如果需要与宏键进行接口,请寻找制造商的SDK或包含此类标题的标头。它们随管理实用程序一起提供的情况并不罕见。在实用程序应用程序所在的目录中查找并检查C / C++头文件。不过,您需要编写JNI绑定或使用JNA才能将其与Java一起使用。
在不直接与驱动程序连接的情况下,使用此类键最好的方法是将它们设置为运行系统将分派给Java的特定宏序列,并在Java程序中对该特定序列产生反应。是的,这是一个hack,但是这些键并不是以这种方式使用的(通常)。
将这些密钥实现为joystick interfaces并不是没有听说过的,因此检查是否以这种方式发送它们可能是值得的。如果是的话,那可能就是您想要与它们进行交互的方式。