GRUPO DE LLAMADAS KBD


KbdCharIn

KbdCharIn devuelve una lectura del teclado, indicando que teclas aisladas están pulsadas.

#define INCL_BASE
#include <os2.h>

PKBDKEYINFO CharData;
USHORT IOWait;
HKBD KbdHandle;
APIRET rc; /* Codigo de error */

rc = KbdCharIn(CharData, IOWait, KbdHandle);

Parámetros

CharDataPuntero a una estructura donde OS/2 devolverá la información. Tiene los siguientes campos:
chChar (UCHAR) Caracter ASCII de la tecla pulsada. Si se trata de un código extendido (tecla de función, p.e.) contendrá h'00 o h'E0 y el bit 1 de fbStatus estará a 1.
chScan (UCHAR) Código de scan de la tecla pulsada. Si es un código extendido, entonces contiene el ASCII extendido.
fbStatus (UCHAR) Estado del evento de pulsación. Se lee por bits:
Bit Descripción
7-6 Indican si es el primer byte o el último de un caracter multi byte (DBCS). Si es 10, es el primer byte; si es 01 es el último, y si es 11, es el único byte. Para recuperar códigos multibyte es necesario ejecutar una llamada a KbdCharIn por cada byte.
5 Petición de conversión inmediata.
4-2 Reservado (a 0).
1 Si es 0, el ScanCode es un caracter; si es 1, el ScanCode no es un caracter, sino un codigo extendido.
0 Si es 1, significa que que se ha soltado la tecla indicada, en vez de haber sido pulsada.
bNlsShift (UCHAR) Reservado. Poner a cero.
fsState (USHORT) Describe las teclas que hay pulsadas:
Bit Descripción
15 SysReq (PetSis) pulsada
14 CapsLock pulsado
13 NumLock pulsado
12 ScrollLock pulsado
11 Alt derecho pulsado
10 Ctrl derecho pulsado
9 Alt izquierdo pulsado
8 Ctrl izquierdo pulsado
7 Insert activo
6 CapsLock activo
5 NumLock activo
4 ScrollLock activo
3 Algún Alt pulsado
2 Algún Ctrl pulsado
1 Cambio (Mayusculas) izquierdo pulsado
0 Cambio (Mayusculas) derecho pulsado
time (ULONG) Marca de tiempo indicando cuando fue pulsada la tecla. Se cuenta en milisegundos desde que el sistema se ha puesto en marcha.
IOWaitSi es 0, el thread es dormido hasta que halla un caracter disponible; si es 1, la llamada vuelve inmediatamente aunque no halla caracteres disponibles.
KbdHandleHandle de teclado. Debe ser 0.

Codigos de error

0Sin error
375Valor de espera no válido
439Handle no válido
445Se requiere el foco del teclado
447El teclado está ocupado
464KBD inactivo (proceso en detached)
504KBD Extended SG


KbdFlushBuffer

KbdFlushBuffer vacía el buffer de teclado.

#define INCL_BASE
#include <os2.h>

HKBD KbdHandle;
APIRET rc; /* Codigo de error */

rc = KbdFlushBuffer(KbdHandle);

Parámetros

KbdHandleHandle de teclado. Debe ser 0.

Codigos de error

0Sin error
439Handle no válido
445Se requiere el foco del teclado
447El teclado está ocupado
464KBD inactivo (proceso en detached)
504KBD Extended SG


KbdGetStatus

KbdGetStatus obtiene el estado actual del teclado.

#define INCL_BASE
#include <os2.h>

PKBDINFO StatData;
HKBD KbdHandle;
APIRET rc; /* Codigo de error */

rc = KbdGetStatus(StatData, KbdHandle);

Parámetros

StatDataPuntero a una estructura de datos de teclado con los siguientes campos:
cb (USHORT) Longitud de la estructura incluyendo cb. Tiene que ser 10;
fsMask (USHORT) Estado del teclado:
Bit Descripción
15-9 Reservado. Está a cero.
8 Informe de cambio activo.
7 Longitud del código de retorno (1 o 2 caracteres). Solo tiene sentido si el bit 6 está activo.
6 El código de retorno ha sido cambiado.
5 reservado
4 El informe de cambio ha sido modificado.
3 Modo ASCII activo.
2 Modo Binario activo.
1 Echo inactivo.
0 Echo activo.
chTurnAround (USHORT) Caracter de retorno. En ASCII y ASCII extendido, el caracter de retorno es el retorno de carro (13). En formato ASCII, el caracter de retorno se indica en el byte menos significativo.
fsInterim (USHORT) Reservado
fsState (USHORT) Describe las teclas que hay pulsadas:
Bit Descripción
15 SysReq (PetSis) pulsada
14 CapsLock pulsado
13 NumLock pulsado
12 ScrollLock pulsado
11 Alt derecho pulsado
10 Ctrl derecho pulsado
9 Alt izquierdo pulsado
8 Ctrl izquierdo pulsado
7 Insert activo
6 CapsLock activo
5 NumLock activo
4 ScrollLock activo
3 Algún Alt pulsado
2 Algún Ctrl pulsado
1 Cambio (Mayusculas) izquierdo pulsado
0 Cambio (Mayusculas) derecho pulsado
KbdHandleHandle de teclado. Debe ser 0.

Codigos de error

0Sin error
376Longitud no válida
439Handle no válido
445Se requiere el foco del teclado
447El teclado está ocupado
464KBD inactivo (proceso en detached)
504KBD Extended SG


KbdPeek

KbdPeek devuelve cualquier dato disponible en el buffer de teclado de la misma forma que KdbCharIn, pero sin borrarlo de éste.

#define INCL_BASE
#include <os2.h>

PKBDKEYINFO CharData;
HKBD KbdHandle;
APIRET rc; /* Codigo de error */

rc = KbdPeek(CharData, KbdHandle);

Parámetros

CharDataPuntero a una estructura donde OS/2 devolverá la información. Tiene los siguientes campos:
chChar (UCHAR) Caracter ASCII de la tecla pulsada. Si se trata de un código extendido (tecla de función, p.e.) contendrá h'00 o h'E0 y el bit 1 de fbStatus estará a 1.
chScan (UCHAR) Código de scan de la tecla pulsada. Si es un código extendido, entonces contiene el ASCII extendido.
fbStatus (UCHAR) Estado del evento de pulsación. Se lee por bits:
Bit Descripción
7-6 Indican si es el primer byte o el último de un caracter multi byte (DBCS). Si es 10, es el primer byte; si es 01 es el último, y si es 11, es el único byte. Para recuperar códigos multibyte es necesario ejecutar una llamada a KbdPeek por cada byte.
5 Petición de conversión inmediata.
4-2 Reservado (a 0).
1 Si es 0, el ScanCode es un caracter; si es 1, el ScanCode no es un caracter, sino un codigo extendido.
0 Si es 1, significa que que se ha soltado la tecla indicada, en vez de haber sido pulsada.
bNlsShift (UCHAR) Reservado. Poner a cero.
fsState (USHORT) Describe las teclas que hay pulsadas:
Bit Descripción
15 SysReq (PetSis) pulsada
14 CapsLock pulsado
13 NumLock pulsado
12 ScrollLock pulsado
11 Alt derecho pulsado
10 Ctrl derecho pulsado
9 Alt izquierdo pulsado
8 Ctrl izquierdo pulsado
7 Insert activo
6 CapsLock activo
5 NumLock activo
4 ScrollLock activo
3 Algún Alt pulsado
2 Algún Ctrl pulsado
1 Cambio (Mayusculas) izquierdo pulsado
0 Cambio (Mayusculas) derecho pulsado
time (ULONG) Marca de tiempo indicando cuando fue pulsada la tecla. Se cuenta en milisegundos desde que el sistema se ha puesto en marcha.
KbdHandleHandle de teclado. Debe ser 0.

Codigos de error

0Sin error
439Handle no válido
445Se requiere el foco del teclado
447El teclado está ocupado
464KBD inactivo (proceso en detached)
504KBD Extended SG


KbdSetStatus

KbdSetStatus establece las características del teclado.

#define INCL_BASE
#include <os2.h>

PKBDINFO StatData;
HKBD KbdHandle;
APIRET rc; /* Codigo de error */

rc = KbdSetStatus(StatData, KbdHandle);

Parámetros

StatDataPuntero a una estructura de datos de teclado con los siguientes campos:
cb (USHORT) Longitud de la estructura incluyendo cb. Tiene que ser 10;
fsMask (USHORT) El nuevo estado al que se pasa. Si los bits 0 y 1 están a 0, el estado del Echo no se cambia; si alguno se activa, se pasa a ese estado Echo. Si los bits 2 y 3 están a 0, el modo binario y el ASCII no se cambian; si alguno se activa, se pasa a ese estado. Si los bits 0 y 1 están activos, o si los bits 2 y 3 están a 1, se devuelve un error. Si el modo binario está activo, el Echo se ignora.
Bit Descripción
15-9 Reservado. Está a cero.
8 Informe de cambio activo. Tiene que estar a 0 si se está en modo ASCII.
7 Longitud del código de retorno (1 o 2 caracteres). Solo tiene sentido si el bit 6 está activo.
6 El código de retorno ha sido cambiado.
5 reservado
4 El informe de cambio ha sido modificado.
3 Modo ASCII activo.
2 Modo Binario activo.
1 Echo inactivo.
0 Echo activo.
chTurnAround (USHORT) Caracter de retorno. En ASCII y ASCII extendido, el caracter de retorno es el retorno de carro (13). En formato ASCII, el caracter de retorno se indica en el byte menos significativo.
fsInterim (USHORT) Reservado
fsState (USHORT) Describe las teclas que hay pulsadas:
Bit Descripción
15 SysReq (PetSis) pulsada
14 CapsLock pulsado
13 NumLock pulsado
12 ScrollLock pulsado
11 Alt derecho pulsado
10 Ctrl derecho pulsado
9 Alt izquierdo pulsado
8 Ctrl izquierdo pulsado
7 Insert activo
6 CapsLock activo
5 NumLock activo
4 ScrollLock activo
3 Algún Alt pulsado
2 Algún Ctrl pulsado
1 Cambio (Mayusculas) izquierdo pulsado
0 Cambio (Mayusculas) derecho pulsado
KbdHandleHandle de teclado. Debe ser 0.

Codigos de error

0Sin error
376Longitud no válida
377Mascara de Echo no válida
378Mascara de modo de entrada no válida
439Handle no válido
445Se requiere el foco del teclado
447El teclado está ocupado
464KBD inactivo (proceso en detached)
504KBD Extended SG


KbdStringIn

KbdStringIn lee una cadena de caracteres desde el teclado. Estos pueden ser visualizados a la vez que se teclean si el modo Echo está activo.

#define INCL_BASE
#include <os2.h>

PCH CharBuffer;
PSTRINGINBUF StringLength;
USHORT IOWait;
HKBD KbdHandle;
APIRET rc; /* Codigo de error */

rc = KbdStringIn(CharBuffer, StringLength, IOWait, KbdHandle);

Parámetros

CharBufferPuntero a una zona de memoria donde OS/2 devolverá la cadena leída.
StringLengthPuntero a una estructura de datos con los siguientes campos:
cb
USHORT)
Longitud del buffer en bytes. La longitud máxima es 255.
cchIn
(USHORT)
Número de bytes que OS/2 ha depositado en el buffer.
IOWaitSi es 0, espera. En modo binario se espera hasta que se llena el buffer. En modo ASCII se espera hasta que se pulse el código de retorno (por defecto, el retorno de carro).
Si es 1, no espera. Retorna tanto si hay como si no hay caracteres disponibles. Si hay caracteres, devuelve todos ellos inmediatamente (siempre que no superen el máximo que cabe en el buffer). Esta opción no está soportada en modo ASCII.
KbdHandleHandle de teclado. Debe ser 0.

Codigos de error

0Sin error
375Valor de espera no válido
439Handle no válido
445Se requiere el foco del teclado
464KBD inactivo (proceso en detached)
504KBD Extended SG

 Indice