En una interfaz gráfica de usuario (GUI) informática , un componente tiene el foco cuando se lo selecciona para recibir información del usuario mediante un evento, como un clic de un botón del mouse o una pulsación de una tecla. [1] Alejando el foco de un elemento específico de la interfaz de usuario se conoce como un evento de desenfoque en relación con este elemento. [2] Normalmente, el foco se retira de un elemento dándole el foco a otro elemento. Esto significa que los eventos de foco y de desenfoque son virtualmente simultáneos en relación con diferentes elementos de la interfaz de usuario, uno que se enfoca y otro que se "desenfoca" (en el sentido informático, no visual).
El concepto es similar al de un cursor en un entorno basado en texto. Sin embargo, cuando se considera una interfaz gráfica, también hay un puntero del ratón involucrado. Al mover el ratón, normalmente se moverá el puntero del ratón sin cambiar el foco. El foco normalmente se puede cambiar haciendo clic en un componente que pueda recibir el foco con el ratón. Muchos escritorios también permiten cambiar el foco con el teclado. Por convención, Tab ↹se utiliza la tecla para mover el foco al siguiente componente enfocable y + al anterior. Cuando se introdujeron por primera vez las interfaces gráficas, muchas computadoras no tenían ratones, por lo que esta alternativa era necesaria. Esta característica facilita el uso de la interfaz de usuario a las personas que no pueden usar un ratón . En determinadas circunstancias, se pueden utilizar las teclas de flecha para cambiar el foco.⇧ ShiftTab ↹
El comportamiento del foco en el escritorio se puede controlar mediante políticas en la gestión de ventanas .
En la mayoría de las interfaces de usuario convencionales, como las de Microsoft y Apple , es habitual encontrar una política de "el foco sigue al clic" (o "hacer clic para enfocar"), en la que se debe hacer clic con el ratón dentro de la ventana para que esa ventana obtenga el foco. Esto también suele provocar que la ventana se eleve por encima de todas las demás ventanas de la pantalla. Si se utiliza un modelo de enfoque por clic como este, la ventana de la aplicación actual sigue manteniendo el foco y recopilando información, incluso si el puntero del ratón está sobre otra ventana de la aplicación.
Otra política común en los sistemas Unix que utilizan el sistema X Window (X11) es la política "el foco sigue al ratón" (o FFM), en la que el foco sigue automáticamente la posición actual del puntero. La ventana enfocada no se eleva necesariamente; partes de ella pueden permanecer debajo de otras ventanas. Los administradores de ventanas con esta política suelen ofrecer "autorizar", que eleva la ventana cuando se enfoca, normalmente después de un breve retraso configurable. Una posible consecuencia de una política de seguimiento del foco es que ninguna ventana tenga el foco cuando el puntero se mueve sobre el fondo sin ninguna ventana debajo; de lo contrario, el foco simplemente permanece en la última ventana.
El modelo sloppyfocus es una variante del modelo followfocus. [3] Permite que la entrada continúe siendo recopilada por la última ventana enfocada cuando el puntero del mouse se aleja de cualquier ventana, como sobre una barra de menú o un área del escritorio.
Enfoque con clic | Seguir el foco | Enfoque descuidado | |
---|---|---|---|
aewm [4] | No | Sí | No |
aewm++ [5] | Sí | No | No |
AHWM [6] | Sí | No | Sí |
impresionante | Sí | Sí | Sí |
CTW | Sí | Sí | Sí |
dwm [7] | Sí | Sí | No |
E16 | Sí | Sí | Sí (predeterminado) |
malvadowm [8] | No | Sí | No |
FLWM | No | No | Sí |
Caja de flujo | Sí | Sí | Sí |
FVWM [α] | Sí | Sí (predeterminado) | Sí |
HieloWM [9] | Sí | Sí | Sí |
Carmen [10] | Sí | No | No |
lwm [11] | Sí | No | Sí |
Pequeño WM [12] | No | No | Sí |
Capricho [13] | Sí | No | Sí |
Laboratorio de ventanas | Sí (sin autorización) | No | No |
Xfwm | Sí | Sí | Sí |
Murmurar | Sí | Sí | Sí |
JWM | Sí | No | Sí |
MWM | Sí | No | No |
Los componentes individuales de una ventana también pueden tener una posición focal. Por ejemplo, en un paquete de edición de texto, la ventana de edición de texto debe tener el foco para que se pueda ingresar texto. Cuando se ingresa texto en el componente, aparecerá en la posición del cursor de texto, que normalmente también se podrá mover con el puntero del mouse.
Qué componente debería tener el foco predeterminado y cómo debería moverse el foco entre los componentes son problemas difíciles pero importantes en el diseño de la interfaz de usuario. Dar el foco a algo incorrecto significa que el usuario tiene que perder tiempo moviendo el foco. Por el contrario, dar el foco a algo correcto puede mejorar significativamente la experiencia del usuario.