IT-Lexikon › Programmierung › Ereignismaske (X11)

Ereignismaske (X11)

Programmierung Svenska → Aktualisiert: 2026-10-08

Die Bitmaske, die jeder X-Client pro Fenster setzt, um dem Server mitzuteilen, welche Ereignisse er schicken soll – Tasten, Maustasten, Expose, Größenänderungen – und die damit bestimmt, was ein Programm überhaupt erfährt.

Der X-Server sendet nichts Ungefragtes. Beim Erzeugen eines Fensters oder später per XSelectInput in Xlib übergibt der Client eine Maske mit Bits wie KeyPressMask, ButtonPressMask, ExposureMask, PointerMotionMask und StructureNotifyMask. Nur passende Ereignisse werden zugestellt. Mehrere Clients dürfen auf demselben Fenster Ereignisse wählen, der Server führt eine Maske pro Client, mit drei Ausnahmen, die jeweils nur ein Client gleichzeitig besitzen darf: ButtonPress, ResizeRedirect und SubstructureRedirect. Letzteres ist der Machtschlüssel des Window-Managers und der Grund, warum nur ein Window-Manager zur Zeit laufen kann.

Tasten- und Mausereignisse, die in einem Fenster niemand gewählt hat, wandern im Fensterbaum nach oben, bis ein Vorfahr sie angefordert hat oder die do_not_propagate_mask eines Fensters sie stoppt. So kann eine Anwendung auf ihrem Toplevel-Fenster lauschen und trotzdem Klicks ihrer Kindfenster erhalten. PointerMotionHintMask gibt es für Programme, die wissen wollen, dass sich die Maus bewegt hat, ohne in Koordinaten zu ertrinken. Ein Ereignis, das nie ankommt, weil in der Maske das Bit fehlt, ist der klassische Anfängerfehler in Xlib-Code, und xev ist das Werkzeug, das zeigt, was tatsächlich durchkommt.

← Zurück zum Lexikon