L'objectif général est comme Windows Alt-Tab, donc je vais utiliser ces touches pour l'explication. Je veux:
Appuyez sur Alt -> appuyez sur Tab -> [popup apparaît] -> appuyez sur Tab à tout moment en maintenant Alt -> relâcher Alt -> [pop-up disparaît].Détection de la touche de modification dans la fenêtre racine X11
Je ne peux pas détecter la version finale finale.
approche Trivial: saisir Alt-Tab:
XGrabKey (dpy, XKeysymToKeycode(dpy,XK_Tab), Mod1Mask, root, True, GrabModeAsync, GrabModeAsync);
(code complet: http://pastebin.com/K2P65KJn)
Résultat:
[Alt enfoncée]
[Tab pressé]
En appuyant sur Alt-Tab reporté
[Ta b libéré]
Libération Alt-Tab a rapporté
[Alt libérées pour] -> rien rapportéSaisissant les deux Alt-Tab et Any-Alt:
XGrabKey (dpy, XKeysymToKeycode(dpy,XK_Tab), Mod1Mask, root, True, GrabModeAsync, GrabModeAsync); XGrabKey (dpy, XKeysymToKeycode(dpy,XK_Alt_L), AnyModifier, root, True, GrabModeAsync, GrabModeAsync);
(code complet: http://pastebin.com/75mD1tjA)
Cela fonctionne!
[Alt enfoncée]
En appuyant sur Alt rapporté
[Tab enfoncé]
En appuyant sur Alt-Tab a rapporté
[Tab publié]
Releasing Alt-Tab signalé
[Alt publié]
Libération Alt- Alt reportéMais cela masque toute combinaison Alt de tout programme en cours d'exécution. Je ne trouve pas le moyen de repousser les événements qui ne nous appartiennent pas (essayé XSendEvent), et le fait de saisir Alt depuis le début semble trop envahissant.
Saisir Alt après le premier appui sur Alt-Tab, puis dégrapper Alt après sa libération.
Malheureusement, la première version Alt est toujours pas rapporté:
[Alt enfoncée]
[Tab enfoncé]
En appuyant sur Alt-Tab a rapporté, Alt a saisi ici
[Tab publié]
Libération Alt- Onglet rapporté
[Alt publié] -> rien n'a été signalé! appuyez sur Alt suite/release sont signalés, mais pas utiles:
[Alt enfoncée]
En appuyant sur Alt rapporté
...
Ai-je besoin de jouer avec xinput bas niveau ou il y a une autre façon pour atteindre l'objectif?
rejouant Peut-être les événements avec 'fonctionne XAllowEvents'? Sinon, je pense que vous devrez peut-être aller à Xinput2. Vous pouvez également essayer de poser cette question sur la liste de diffusion xorg car la communauté X sur SO est plutôt éparse. –
XGrabKey est plutôt gourmand; avez-vous essayé de gérer les XKeyPress/ReleaseEvents habituels? – JvO