Is there any way to get a system-wide (global) keyboard shortcut to perform an action in a Java application?
Any AWT/Swing bindings?
Is there any way to get a system-wide (global) keyboard shortcut to perform an action in a Java application?
Any AWT/Swing bindings?
UPDATE: I don't know if you can hook events from OUTSIDE the JVM. I think a Swing/AWT component must have focus for this to work.
You'll want to hook in the Java AWT Event Queue to be absolutely sure you can get a global (jvm wide) keypress.
Use
EventQueue ev = Toolkit.getSystemEventQueue();
// MyCustomEventQueue extends EventQueue and processes keyboard events in the dispatch
ev.push(new MyCustomEventQueue());
class MyEventQueue extends EventQueue
{
protected void dispatchEvent(AWTEvent event)
{
// all AWTEvents can be indentified by type, KeyEvent, MouseEvent, etc
// look for KeyEvents and match against you hotkeys / callbacks
}
}
I think there may be other ways to accomplish global key presses with action maps. I've actually used the above mether
There is not, but in windows you can use this:
Unfortunately there is nothing I'm aware of for Linux and OSX, probably that's why it doesn't come with java out of the box.
If you find for the other platforms post it here please :)
Just for couriosity, what are you doing with that?
For windows you need a keyboard hook dll. You can initialize your dll from java, which will cause it to register the listener. You'll get what you need. Check msdn for dll hooks, or keyboard hooks. One of those should set you up.
For linux I think this should be easier, but I have never done it myself.
http://ubuntuforums.org/showthread.php?t=864566
Google's first result for "linux listen for global key presses" (no quotes) turns up something which I think will help you out for X11 environments
OSX might just be able to use a solution close to this. But in the end, you'll probably need a dll for every platform, unless JNA could do this without issue, then the worst is done.
JDIC (Java Desktop Integration) could help
https://jdic.dev.java.net/
Seems to be a little unmaintained to me. I'm not sure.
If someone know more, please report!
I'm also very interested in this feature.