Portál AbcLinuxu, 9. května 2025 20:58
hotkey = XKeysymToKeycode(d, XStringToKeysym("Super_L"));
XGrabKey(d, hotkey, 0, root, True, GrabModeAsync, GrabModeAsync);
while (1)
{
XNextEvent(d, &e);
if (e.type == KeyPress)
{
cout << "KeyPress:\n keycode: " << e.xkey.keycode << " state: " << hex << e.xkey.state << endl;
XSendEvent(d, root, False, KeyPressMask, &e);
}
if (e.type == KeyRelease)
{
cout << "KeyRelease:\n keycode: " << e.xkey.keycode << " state: " << hex << e.xkey.state << endl;
XSendEvent(d, root, False, KeyReleaseMask, &e);
}
}
Blbý je, že tohle nefunguje jak má. Teda XEvent se přepošle, ale například
u klávesových zkratek pro compiz, konkrétně u Expa, mi to dělalo divný věci; expo se spustilo, ale focus klávesnice zůstal na aktivní ploše, takže se expo nedalo ovládat klávesnicí, a stisky kláves se posílaly aplikaci s focusem na aktivní ploše místo compizu.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.