GRUPO DE LLAMADAS KBD
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 |
---|
CharData | Puntero 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. |
|
IOWait | Si es 0, el thread es dormido hasta que halla un caracter disponible; si es 1, la llamada vuelve inmediatamente aunque no halla caracteres disponibles. |
KbdHandle | Handle de teclado. Debe ser 0. |
Codigos de error |
---|
0 | Sin error |
375 | Valor de espera no válido |
439 | Handle no válido |
445 | Se requiere el foco del teclado |
447 | El teclado está ocupado |
464 | KBD inactivo (proceso en detached) |
504 | KBD Extended SG |
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 |
---|
KbdHandle | Handle de teclado. Debe ser 0. |
Codigos de error |
---|
0 | Sin error |
439 | Handle no válido |
445 | Se requiere el foco del teclado |
447 | El teclado está ocupado |
464 | KBD inactivo (proceso en detached) |
504 | KBD Extended SG |
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 |
---|
StatData | Puntero 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 |
|
|
KbdHandle | Handle de teclado. Debe ser 0. |
Codigos de error |
---|
0 | Sin error |
376 | Longitud no válida |
439 | Handle no válido |
445 | Se requiere el foco del teclado |
447 | El teclado está ocupado |
464 | KBD inactivo (proceso en detached) |
504 | KBD Extended SG |
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 |
---|
CharData | Puntero 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. |
|
KbdHandle | Handle de teclado. Debe ser 0. |
Codigos de error |
---|
0 | Sin error |
439 | Handle no válido |
445 | Se requiere el foco del teclado |
447 | El teclado está ocupado |
464 | KBD inactivo (proceso en detached) |
504 | KBD Extended SG |
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 |
---|
StatData | Puntero 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 |
|
|
KbdHandle | Handle de teclado. Debe ser 0. |
Codigos de error |
---|
0 | Sin error |
376 | Longitud no válida |
377 | Mascara de Echo no válida |
378 | Mascara de modo de entrada no válida |
439 | Handle no válido |
445 | Se requiere el foco del teclado |
447 | El teclado está ocupado |
464 | KBD inactivo (proceso en detached) |
504 | KBD Extended SG |
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 |
---|
CharBuffer | Puntero a una zona de memoria donde OS/2 devolverá la cadena leída. |
StringLength | Puntero 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. |
|
IOWait | Si 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. |
KbdHandle | Handle de teclado. Debe ser 0. |
Codigos de error |
---|
0 | Sin error |
375 | Valor de espera no válido |
439 | Handle no válido |
445 | Se requiere el foco del teclado |
464 | KBD inactivo (proceso en detached) |
504 | KBD Extended SG |