43

I'm running XFCE 4.12 on top of Gentoo with a 4.2.0 kernel. My PlayPause button on my keyboard used to work as a global hotkey for VLC. Now VLC won't even recognize the key. It does see "Alt + Media Play Pause" but not the key alone.

Is there a way to see if and what program might be capturing that key?

When I run xdotool key "XF86LogGrabInfo" the tail /var/log/Xorg.0.log file reads

[ 10138.690] (II) Printing all currently active device grabs:
[ 10138.690] (II) End list of active device grabs
3
  • @don_crissti thanks but that doesn't seem to answer anything. Is there another way of registering hotkeys? Feb 10, 2016 at 22:45
  • @don_crissti It's related for sure but I don't think it's a duplicate. Listing all the grabs and finding one specific grabber isn't the same. The solution that's useful to Andrew is buried in a comment (because Andrew's problem isn't what I was asking). Feb 10, 2016 at 22:46
  • Yes running xdotool keydown "XF86AudioPlay"; xdotool key "XF86LogGrabInfo"; xdotool keyup "XF86AudioPlay"; sleep 1; tail /var/log/Xorg.0.log did it. For somehow google Chrome registered the hotkey. Feb 10, 2016 at 23:21

1 Answer 1

29

To find out which app/program grabbed your key use the debug keysym XF86LogGrabInfo. Use xdotool to press keys + XF86LogGrabInfo at the same time e.g. in a terminal run

KEY=XF86AudioPlay
xdotool keydown ${KEY}; xdotool key XF86LogGrabInfo; xdotool keyup ${KEY} 

Then check for output with tail /var/log/Xorg.0.log
Note that with gnome 3/gdm and systemd this is no longer logged to Xorg.0.log (it's instead logged to the journal). In that case you could run

journalctl -f

and then in another terminal run the xdotool commands. Switch to the first terminal and you'll see something like

/usr/lib/gdm/gdm-x-session[629]: Active grab 0x40c0a58e (xi2) on device 'Virtual core keyboard' (3):
/usr/lib/gdm/gdm-x-session[629]: client pid 708 /usr/bin/gnome-shell
/usr/lib/gdm/gdm-x-session[629]: at 32595124 (from passive grab) (device frozen, state 6)
/usr/lib/gdm/gdm-x-session[629]: xi2 event mask for device 3: 0xc000
/usr/lib/gdm/gdm-x-session[629]: passive grab type 2, detail 0xac, activating key 172

In the above example the program (the client) that grabbed the key is gnome-shell.

How do I figure out what the keys are called?

Check out the manpage of xdotool using man xdotool or an online version, as it lists a number of the special keys. For instance, "alt+r", "Control_L+J", "ctrl+alt+n", "BackSpace". The LinuxQuestions wiki also has a list of X Keysyms one could use. To make things a bit easier, xdotool also has aliases for some of these, such that pressing Shift-Alt-Tab would for instance just be shift+alt+Tab. To verify that this does indeed click that key combination, you could send the input to xev, which is a program that will print whatever key or mouse events it gets to the console. Just do sleep 2; xdotool keydown ${KEY} and switch to the xev window before two seconds has passed to see the keys being clicked on that window. It should then output a series of events, such as these:

PropertyNotify event, serial 168, synthetic NO, window 0x1e00001,
    atom 0x13e (_GTK_EDGE_CONSTRAINTS), time 4390512, state PropertyNewValue

MappingNotify event, serial 168, synthetic NO, window 0x0,
    request MappingKeyboard, first_keycode 8, count 248

KeyPress event, serial 168, synthetic NO, window 0x1e00001,
    root 0x163, subw 0x0, time 4390719, (882,657), root:(1000,771),
    state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 169, synthetic NO, window 0x1e00001,
    root 0x163, subw 0x0, time 4390738, (882,657), root:(1000,771),
    state 0x8, keycode 23 (keysym 0xff09, Tab), same_screen YES,
    XLookupString gives 1 bytes: (09) " "
    XmbLookupString gives 1 bytes: (09) "   "
    XFilterEvent returns: False
8
  • Is there something similar for lightdm?
    – elig
    Jun 27, 2019 at 13:35
  • @elig - not sure what you mean... this is done by the X server regardless of your display manager. Jun 27, 2019 at 16:05
  • 1
    Then i don't see it in my logs or journal
    – elig
    Jun 28, 2019 at 12:44
  • Thanks! That saved me a lot of effort! Some small Cinnamon applet suddently took over one my most used shortcuts – I wouldn't have found it without this post.
    – orzechow
    Jul 1, 2021 at 14:25
  • 2
    This answer can be improved by providing a way to determine the name of the key to pass to xdotool as the name of the question is "How do I find out what program 'owns' a hotkey?" and the answer can be made more generic. Aug 18, 2021 at 0:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.