How to properly use XGrabKey to get a program hotkey
Russell Shaw
rjshaw at netspace.net.au
Wed Oct 27 16:22:20 PDT 2010
cheshirekow wrote:
> Hello,
>
> My goal is to have a program that sleeps in the background but can be
> activated by the user via some "hotkey". From digging around the Xlib
> manual and the Xlib O'reilly manual, I gather that the correct way to to
> this is with XGrabKey. However my understanding of the process is
> incorrect as a simple proof of concept does not work.
>
> My understanding is that if I call XGrabKey with the root window as the
> grab_window, and owner_events false, then whenever my hotkey is pressed
> the event will be sent *only* to the root window.
>
> If I then select
> KeyPress events from the root window, and then listen for X events, I
> should get a key press event when the hotkey is pressed. I've pasted a
> minimal example below.
>
> What I expect is that when the program is run, regardless of what window
> has focus, if Ctrl+Shift+K is pressed, my program should output "Hot key
> pressed!" in the console, and then terminate.
>
> Furthermore, it is my understanding that if the XGrabKey fails, the
> default error handler will display a message, and since it does not I am
> assuming that the call succeeds.
>
> Obviously, my understanding is flawed somehow. Can anyone point me in
> the right direction?
This will only work if the window manager or the window with focus doesn't
already grab the same keys. Does the example work without a window manager
running?
More information about the xorg
mailing list