Захотел сделать свою приблуду для глобальных хоткеев, полез в сырцы xbindkeys (y u no docs, opensource?), а там...
static void
my_grab_button (Display * dpy, unsigned int button, unsigned int modifier,
Window win)
{
modifier &= ~(numlock_mask | capslock_mask | scrolllock_mask);
XGrabButton (dpy, button, modifier, (win ? win : DefaultRootWindow (dpy)),
False, ButtonPressMask | ButtonReleaseMask,
GrabModeAsync, GrabModeAsync, None, None);
if (modifier == AnyModifier)
return;
if (numlock_mask)
XGrabButton (dpy, button, modifier | numlock_mask,
(win ? win : DefaultRootWindow (dpy)),
False, ButtonPressMask | ButtonReleaseMask,
GrabModeAsync, GrabModeAsync, None, None);
if (capslock_mask)
XGrabButton (dpy, button, modifier | capslock_mask,
(win ? win : DefaultRootWindow (dpy)),
False, ButtonPressMask | ButtonReleaseMask,
GrabModeAsync, GrabModeAsync, None, None);
if (scrolllock_mask)
XGrabButton (dpy, button, modifier | scrolllock_mask,
(win ? win : DefaultRootWindow (dpy)),
False, ButtonPressMask | ButtonReleaseMask,
GrabModeAsync, GrabModeAsync, None, None);
if (numlock_mask && capslock_mask)
XGrabButton (dpy, button, modifier | numlock_mask | capslock_mask,
(win ? win : DefaultRootWindow (dpy)),
False, ButtonPressMask | ButtonReleaseMask,
GrabModeAsync, GrabModeAsync, None, None);
if (numlock_mask && scrolllock_mask)
XGrabButton (dpy, button, modifier | numlock_mask | scrolllock_mask,
(win ? win : DefaultRootWindow (dpy)),
False, ButtonPressMask | ButtonReleaseMask,
GrabModeAsync, GrabModeAsync, None, None);
if (capslock_mask && scrolllock_mask)
XGrabButton (dpy, button, modifier | capslock_mask | scrolllock_mask,
(win ? win : DefaultRootWindow (dpy)),
False, ButtonPressMask | ButtonReleaseMask,
GrabModeAsync, GrabModeAsync, None, None);
if (numlock_mask && capslock_mask && scrolllock_mask)
XGrabButton (dpy, button,
modifier | numlock_mask | capslock_mask | scrolllock_mask,
(win ? win : DefaultRootWindow (dpy)), False,
ButtonPressMask | ButtonReleaseMask, GrabModeAsync,
GrabModeAsync, None, None);
}
Интересно, если бы лампочек на клавиатуре было больше трех, сдесь бы была портянка из 15 копипастнутых if'ов?
Чем больше я вижу открытого кода, тем больше недоумеваю, что за криворукие индусы его пишут.