OT: zacyceni stisku klavesy neaktivni GTK aplikaci

Michal Krause michal na krause.cz
Pondělí Duben 2 19:35:06 CEST 2001


On 01/04/2001, Lubos Lunak wrote:

> > Napsal jsem malou aplikaci wmcliphist
> > (http://linux.nawebu.cz/wmcliphist/), ktera dela zhruba totez, jako
> > klipper z KDE - proste uchovava seznam nekolika poslednich obsahu
> > clipboardu a umoznuje se k nim zase vratit. Program je napsany s
> > vyuzitim GTK a bezi v docku Window Makeru. Chtel bych jeho funkcnost
> > vylepsit o moznost vyvolat menu s historii klavesovou zkratkou.
> 
> No co jit takhle zacatou cestou dale a "vypujcit" si z KDE i to
> odchytavani klavesy? Je to trida KGlobalAccel, z kdelibs/kdecore.
> Jinak je to tedy v podstate volani XGrabKey().

Dival jsem se na to a zatim se uspech nedostavil. Podle zdrojaku kdelibs
i podle manualu mam pocit, ze XGrabKey je treba predat root okno, jinak
to nebude mit skutecne globalni dopad. Jenze kdyz to takto udelam,
udalost zase nedorazi do meho okna. Mozna mi neco uniklo?

Takhle vypada moje volani XGrabKey:

XGrabKey(GDK_DISPLAY(),
                AnyKey, AnyModifier,
                GDK_ROOT_WINDOW(),
                TRUE,
                GrabModeAsync,
                GrabModeSync);

IMHO je to totez, jak volani z kdelibs:

XGrabKey(qt_xdisplay(),
                XKeysymToKeycode(qt_xdisplay(), keysym), mod,
                qt_xrootwin(),
                True,
                GrabModeAsync,
                GrabModeSync);

Rozdil je jenom v tom, ze ja v ramci testu lapam vsechny klavesy, kdezto
zde uz je to filtr na urcitou konkretni klavesu. Grabovani klavesnice
funguje - po zavolani XGrabKey prestane vstup znaku atd. fungovat, ale
udalosti zrejme obdrzi root okno.

Zajimave je, ze funkce XGrabKeyboard funguje presne podle mych predstav,
jenomze ta zase neumoznuje zachytavat jenom zvolenou klavesu/kombinaci
klaves.

S pozdravem
-- 
Michal Krause                                                       /\
ICQ: 7665279            Informace (nejenom) ze sveta Linuxu      /\/  \
email: michal na krause.cz _______ http://www.root.cz/ _______ NAVRCHOLU.cz

Vseci by chceli byt van Goghmi, ale odrezat si ucho ani jeden.
                                                  J. Raz ve filmu Rabaka


Další informace o konferenci Linux