Léxico de TI › Programação › Máscara de eventos (X11)

Máscara de eventos (X11)

Programação Svenska → Atualizado: 2026-10-08

A máscara de bits que cada cliente X define por janela para dizer quais eventos o servidor deve enviar — teclas, botões do mouse, exposição, redimensionamento — e que, portanto, decide o que o programa fica sabendo.

O servidor X não envia nada que não tenha sido pedido. Ao criar uma janela, ou depois por meio de XSelectInput na Xlib, o cliente fornece uma máscara com bits como KeyPressMask, ButtonPressMask, ExposureMask, PointerMotionMask e StructureNotifyMask. Só os eventos correspondentes são entregues. Vários clientes podem selecionar eventos na mesma janela, e o servidor guarda uma máscara por cliente, com três exceções que só um cliente por vez pode possuir: ButtonPress, ResizeRedirect e SubstructureRedirect. O último é a chave do poder do gerenciador de janelas, e é por isso que só um gerenciador de janelas pode rodar por vez.

Eventos de teclado e de botão que ninguém selecionou numa janela se propagam pela árvore de janelas até que algum ancestral os tenha pedido, ou até que o do_not_propagate_mask de uma janela os detenha. Isso permite que um aplicativo escute na janela de nível superior e ainda receba os cliques de suas filhas. O PointerMotionHintMask existe para programas que querem saber que o mouse se mexeu sem se afogar em coordenadas. Um evento que nunca chega porque falta o bit na máscara é o erro clássico de iniciante em código Xlib, e o xev é a ferramenta que mostra o que de fato passa.

← Voltar ao léxico