Osc*_*Ryz 12
没有,但在Windows中你可以使用这个:
不幸的是,对于Linux和OSX我没有任何意识,这可能就是为什么它没有开箱即用的java.
如果你发现其他平台发布在这里请:)
只是为了咳嗽,你在做什么呢?
我刚刚找到https://github.com/kwhat/jnativehook
似乎是跨平台的.
这是他们用于监听按键的示例代码:
import org.jnativehook.GlobalScreen;
import org.jnativehook.NativeHookException;
import org.jnativehook.keyboard.NativeKeyEvent;
import org.jnativehook.keyboard.NativeKeyListener;
public class GlobalKeyListenerExample implements NativeKeyListener {
public void nativeKeyPressed(NativeKeyEvent e) {
System.out.println("Key Pressed: " + NativeKeyEvent.getKeyText(e.getKeyCode()));
if (e.getKeyCode() == NativeKeyEvent.VC_ESCAPE) {
GlobalScreen.unregisterNativeHook();
}
}
public void nativeKeyReleased(NativeKeyEvent e) {
System.out.println("Key Released: " + NativeKeyEvent.getKeyText(e.getKeyCode()));
}
public void nativeKeyTyped(NativeKeyEvent e) {
System.out.println("Key Typed: " + e.getKeyText(e.getKeyCode()));
}
public static void main(String[] args) {
try {
GlobalScreen.registerNativeHook();
}
catch (NativeHookException ex) {
System.err.println("There was a problem registering the native hook.");
System.err.println(ex.getMessage());
System.exit(1);
}
GlobalScreen.addNativeKeyListener(new GlobalKeyListenerExample());
}
}
Run Code Online (Sandbox Code Playgroud)
检查修饰符是基于位掩码(我们都应该知道的东西,但总是忘记:-P):
boolean isAltPressed = (e.getModifiers() & NativeKeyEvent.ALT_MASK) != 0;
boolean isShiftPressed = (e.getModifiers() & NativeKeyEvent.SHIFT_MASK) != 0;
Run Code Online (Sandbox Code Playgroud)
这可以与KeyCode结合使用:
if (e.getKeyCode() == NativeKeyEvent.VK_2 && isShiftPressed && isAltPressed){...}
Run Code Online (Sandbox Code Playgroud)
这是从这里修改的例子
您还应该修改默认的日志记录行为,否则它将垃圾邮件控制台:
// Get the logger for "org.jnativehook" and set the level to warning.
Logger logger = Logger.getLogger(GlobalScreen.class.getPackage().getName());
logger.setLevel(Level.WARNING);
// Don't forget to disable the parent handlers.
logger.setUseParentHandlers(false);
Run Code Online (Sandbox Code Playgroud)
代码示例来自这里
| 归档时间: |
|
| 查看次数: |
17482 次 |
| 最近记录: |