next up previous contents
Next: Cortar y pegar Up: Virtual mouse Previous: Virtual mouse

Eventos

Un evento es la unidad básica de información generada por el VBD y puede estar causado por una acción física del dispositivo apuntador sobre una ventana, por la pulsación de una tecla, por una modificación del estado de una ventana causada por el sistema gestor de ventanas o por una petición de refresco de una ventana.

Cada sistema genera un conjunto de eventos diferente, sin embargo, LE-LISP proporciona una lista de tipos de evento lo suficientemente amplia para trabajar con los sistemas gráficos más conocidos.

Los eventos son instacias de la estructura event y van siendo almacenados en la cola de eventos. La estructura event contiene información sobre el tipo de evento, la ventana afectada, las coordenadas globales y locales donde se produjo y un campo detail que contiene información adicional y depende del tipo de evento del que se trate.

Los tipos de evento con los que nos enfrentaremos más a menudo son:

La manera en que estos eventos se añaden a la cola depende del modo en que se encuentre el ratón, que viene indicado por el estado de ciertos flags. Con el abbreviated mouse mode flag activo, cuando ocurre un move-event, éste se añade a la cola a menos que el último evento en ella sea un move-event o un drag-event, en cuyo caso caso lo reemplazaría. Con el mouse interrupt mode flag activo, antes y después de que el evento sea añdido a la cola, se produce una interrupción programable llamada event. La función event permite establecer la función encargada de manejar los eventos cuando se produce esta interrupción. El modo activo en cada momento se puede establecer mediante la función event-mode. Inicialmente ninguno de los dos flags está en on.

La cola de eventos se puede leer mediante read-event, que implica la eliminación del evento leído, y peek-event, que examina el evento pero no lo elimina. Mediante flush-event se puede vaciar toda la cola de eventos, mientras que add-event permite añadir un evento.

Llamando a grab-event se puede convertir a una ventana en propietaria de todos los eventos de ratón y teclado. En los sistemas donde el ratón es compartido por varios programas, esta función también convierte al LE-LISP en propietario del ratón. Se suele utilizar preferentemente cuando se utilizan pantallas de aparición súbita para realizar la cofirmación de alguna acción.

Una función muy utilizada es read-mouse, que devuelve una instancia de la estructura event que describe la posición y el estado actal del ratón.

Mediante create-menu, activate-menu, kill-menu y un conjunto de funciones destinadas a establecer los items de las listas de selección, se pueden construir menús con opciones seleccionables por el usuario.


next up previous contents
Next: Cortar y pegar Up: Virtual mouse Previous: Virtual mouse

Miguel A. Alonso Pardo
Thu Nov 20 15:31:06 CET 1997