PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Xlib: Events vom Root-Window abfragen



TrollSlayer
20-08-2003, 14:15
Hallo!
Wie kann ich Events für root window (Desktop-Hintergrund) mit Xlib abfangen? XSelectInput mit root window als Argument liefert einen Fehler bei der Ausführung :mad: :

X Error of failed request: BadAccess (attempt to access private resource denied)
Major opcode of failed request: 2 (X_ChangeWindowAttributes)
Serial number of failed request: 9
Current serial number in output stream: 9

Der Code sieht so aus:
/* ... */
dis = XOpenDisplay(NULL);
myWin = (Window *) RootWindow(dis, 0);
XMapWindow(dis, (int) myWin);

XSelectInput(dis, (int) myWin, ExposureMask | KeyPressMask |
ButtonPressMask);
/* ... */

pik7
20-08-2003, 21:27
hallo,



#include <X11/Xlib.h>
#include <stdio.h>
#include <unistd.h>

int main()
{

XEvent ev;
Display *disp;
Window win;

disp = XOpenDisplay(NULL);
win = DefaultRootWindow(disp);

XSelectInput(disp, win, KeyPressMask | ExposureMask);

while(1)
{

XNextEvent(disp,&ev);

switch(ev.type)
{

case KeyPress: printf("Taste gedrückt\n");break;
case Expose: printf("Expose Event\n");break;

}

}
return 1;

}



Xlib Programming Manual:

"Only one Cleint can select button events on any one window at one time, due to
the grab that automatically takes place."

und das wird dein Windowmanager sein

gruß

TrollSlayer
20-08-2003, 22:22
Danke!