next up previous contents
Next: AÏDA Up: LE-LISP Previous: B.1.6 Virtual bitmap display

B.1.7 Virtual mouse

El ratón virtual es el método mediante el cual se gestiona un dispositivo que selecciona puntos discretos sobre una pantalla gráfica. Este dispositivo virtual puede corresponderse en el plano físico con un ratón, un lápiz óptico, una tableta gráfica, una pantalla táctil o cualquier otro dispositivo apuntador.

B.2.6 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.

Cortar y pegar

La función display-store-selection toma una cadena de caracteres y la copia en un buffer asociado con la pantalla. Si el dispositivo lo permite, se puede compartir dicha cadena con todas las aplicaciones que usan esa pantalla.

La función display-get-selection recupera la cadena de caracteres que constituye la selección actual en una pantalla. En sistemas como X Window System esta función permite recuperar una cadena proporcionada por cualquier otra aplicación que usa el mismo X-server.


next up previous contents
Next: AÏDA Up: LE-LISP Previous: B.1.6 Virtual bitmap display

Miguel A. Alonso Pardo
Thu Nov 20 16:47:01 CET 1997