Eventos del teclado en OOo Basic
Apache OpenOffice Basic registra los siguientes eventos de teclado:
Evento | Descripción |
---|---|
Tecla pulsada |
El usuario ha pulsado una tecla |
Tecla soltada (Después de haber pulsado la tecla) |
El usuario ha soltado la tecla pulsada |
Ambos eventos se producen como consecuencia de pulsaciones de tecla lógicas y no físicas; así, si un usuario precisa pulsar varias teclas para obtener un sólo carácter (por ejemplo, para una letra acentuada) el evento sólo se produce una vez (por el carácter, no por las pulsaciones).
Pulsar solamente las teclas Mayúsculas, Bloqueo mayúsculas, Ctrl, Alt, AltGr, Fn, F11, F12... no producen ningún evento, ya que no producen ningún carácter; algunas de ellas si se pulsan conjuntamente con una tecla que lo produzca, sí que afectan al evento (por ejemplo, entregando un valor distinto en las propiedades KeyChar o Modifiers).
No ocurre lo mismo con las teclas de función F1 a F10, Esc, etc., que sí los producen.
El objeto Evento entregado al procedimiento muestra las siguientes propiedades:
Propiedad | Tipo | Descripción | |||
---|---|---|---|---|---|
Modifiers |
Short | Código de la tecla de modificación pulsada, en concordancia con la enumeración com.sun.star.awt.KeyModifier. (Ver Constants group KeyModifier) | |||
SHIFT |
Short = 1 | El usuario mantiene pulsada la tecla Mayúsculas
| |||
MOD1 |
Short = 2 | El usuario mantiene pulsada la tecla Ctrl (Cmd en MacOs) | |||
MOD2 |
Short = 4 | El usuario mantiene pulsada la tecla Alt | |||
MOD3 |
Short = 8 | El usuario mantiene pulsada la tecla Ctrl en MacOs
| |||
KeyCode |
Short | Código de la tecla pulsada: un valor en concordancia con la enumeración com.sun.star.awt.Key. (Ver Constants group Key) | |||
KeyChar |
String | Carácter producido, teniendo en cuenta las teclas de modificación. | |||
Function |
Short | Código de función en concordancia con la enumeración com.sun.star.awt.KeyFunction. (Ver Constants group KeyFunction). Por ejemplo:
|
Los siguientes ejemplos examinan las propiedades entregadas por el objeto Evento, y depositan la información en un control Label del diálogo. Deben asignarse a los eventos correspondientes de un control (por ejemplo, un TextBox):
Sub Tecla_Pulsada( oEv As Object ) '-------------------------------------------------------------------------- oEv.Source.Context.getControl("Label4").Text = _ "Pulsada Modificador=" & oEv.Modifiers & _ " Código=" & oEv.KeyCode & _ " Carácter=" & oEv.KeyChar & _ " Función=" & oEv.KeyFunc End Sub
Sub Tecla_Soltada( oEv As Object ) '-------------------------------------------------------------------------- oEv.Source.Context.getControl("Label4").Text = _ "Soltada Modificador=" & oEv.Modifiers & _ " Código=" & oEv.KeyCode & _ " Carácter=" & oEv.KeyChar & _ " Función=" & oEv.KeyFunc End Sub