22

A Java6 application sits in the system tray. It needs to be activated using a hotkey (e.g. Super-G or Ctrl-Shift-L etc) and do something (e.g. showing an input box).

How do I do that on:

  • Windows (XP or Vista)
  • OS/X
  • Linux (Gnome or KDE)

6 Answers6

25

I've compiled a library for global hotkeys in java using JNA. It currently supports Windows, Linux and Mac OSX. It also supports media keys on windows and linux.

if anyone is interested, try https://github.com/tulskiy/jkeymaster

I would appreciate any feedback.

Thank you.

Denis Tulskiy
  • 19,012
  • 6
  • 50
  • 68
7

For Linux (X11) there is JXGrabKey: http://sourceforge.net/projects/jxgrabkey/

There is also a tutorial for grabbing a global hotkey on Linux: http://ubuntuforums.org/showthread.php?t=864566

I didn't though find a solution for OS X yet.

To build something for all 3 platforms I'd suggest stripping down JIntellitype (it's Apache license) to it's global hotkey functionality and extending it with the OS X and X11 functionality...

Torsten Uhlmann
  • 645
  • 5
  • 13
  • 2
    _Update_: I have started to develop my own cross platform global hotkey library, called OsSupport. I have uploaded the code to BitBucket under Apache 2.0 license: https://bitbucket.org/agynamix/ossupport-connector. Currently OsSupport only supports Mac because of other existing solutions for Windows and Linux. However the library is designed to be cross platform and also support other things than hotkeys. For instance OsSupport can send key press events to the system in order to simulate a key press. – Torsten Uhlmann Aug 18 '10 at 15:09
  • 2
    Torsten, any interest in incorporating the Windows Jintellitype code? I am the author of that code and would love to see one unified library with Linux, Windows, Mac. – Melloware Mar 17 '11 at 14:45
  • Thanks Torsten! However I cannot figure out how to use this on the Mac. Could you please provide a Readme or something? I am interested mainly in capturing the media keys. – Stelian Iancu Feb 22 '13 at 09:17
6

It seems that this is not doable in a cross-platform fashion without using the native interfaces.

On Windows, you can use the free JIntellitype library.

Antti Kissaniemi
  • 18,944
  • 13
  • 54
  • 47
5

If anyone wants to do the OSX or Linux versions of the JNI part of Jintellitype I would be more than happy to add those to the JIntellitype library.

Melloware

http://www.melloware.com

1

I found this solution to work just great on windows. It does not require you to install any software like JIntelliType. Note that this is 32 bit dll and you can recompile for 64-bit JVM is do desire. All credits to original author of the blog.

cracked_all
  • 1,331
  • 1
  • 11
  • 26
0

I've written a Java library for global key/mouse events here. This works for Windows, Linux X11, and OSX.

https://github.com/repeats/SimpleNativeHooks

vda8888
  • 689
  • 1
  • 8
  • 19