Léxico TI › Programación › FocusIn y FocusOut

FocusIn y FocusOut

Programación Svenska → Actualizado: 2026-10-10

La pareja de eventos que el servidor X envía cuando el foco del teclado pasa de una ventana a otra: técnicamente impecable y, justamente por eso, casi imposible de interpretar bien.

El foco se fija con XSetInputFocus, normalmente desde el gestor de ventanas, y cada ventana que haya seleccionado FocusChangeMask y se vea afectada recibe un FocusOut o un FocusIn. Parece sencillo hasta que se miran los campos. mode distingue los cambios normales de los provocados por el inicio o fin de una captura de teclado (NotifyGrab, NotifyUngrab, NotifyWhileGrabbed). detail admite ocho valores —NotifyAncestor, NotifyVirtual, NotifyInferior, NotifyNonlinear, NotifyNonlinearVirtual, NotifyPointer, NotifyPointerRoot y NotifyDetailNone— que describen de dónde venía el foco en el árbol de ventanas y adónde fue.

La especificación dedica páginas a qué ventanas reciben qué combinación. La mayoría de los programas leen el tipo de evento, ignoran los casos NotifyPointer y cruzan los dedos. El resultado es el clásico fallo de X: un cursor parpadeando en dos ventanas a la vez, o en ninguna.

← Volver al léxico