Lors de la création d’une fenêtre dans XLib
SetWindowAtsortingbutes.event_mask
? XCreateWindow()
XNextEvent(lDisplay, &xEvent);
J’ai cherché un poste similaire. S’il en existe déjà un, dirigez-moi dans la bonne direction.
Mettre à jour
Pour ceux qui veulent la réponse facile aux parties 1 à 3:
1.
xAtsortingbutes.event_mask = ExposureMask | KeyPressMask | ButtonPress | StructureNotifyMask | ButtonReleaseMask | KeyReleaseMask | EnterWindowMask | LeaveWindowMask | PointerMotionMask | Button1MotionMask | VisibilityChangeMask | ColormapChangeMask;
2
unsigned long valuemask = CWEventMask | CWBackPixel | CWBorderPixel | CWCursor;
switch (xEvent.type) { case MapNotify: break; case Expose: // If this is not the last expose event break if (xEvent.xexpose.count != 0) break; else break; case ConfigureNotify: break; case VisibilityNotify: break; case DestroyNotify: break; case ButtonPress: case ButtonRelease: case EnterNotify: case MotionNotify: case LeaveNotify: if(_mouseHandler) _mouseHandler->HandleInput(lDisplay, &xEvent); break; case KeyPress: case KeyRelease: if(_keyboardHandler) _keyboardHandler->HandleInput(lDisplay, &xEvent); break; default: if(_keyboardHandler) _keyboardHandler->HandleInput(lDisplay, &xEvent); break; }
XLib est assez bien documenté. Par exemple, Manuel de programmation XLib: Masques d’événements
Les trois premiers sont bien documentés, je pense.
Pour déterminer si la souris survole votre fenêtre, écoutez les événements Enter et Leave. L’utilitaire xev
est un excellent moyen de comprendre quels événements existent dans le système de fenêtres X et quand ils sont envoyés.