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 carácter 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 carácter; si es 1, el ScanCode no es un carácter, 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 carácter 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
<A NAME="KBDFLUSHBUFFER">
KbdFlushBuffer
</A>
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
<A NAME="KBDGETSTATUS">
KbdGetStatus
</A>
KbdGetStatus obtiene el estado actual del teclado.
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 carácter de retorno es el retorno de carro (13). En formato ASCII, el carácter 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
<A NAME="KBDPEEK">
KbdPeek
</A>
KbdPeek devuelve cualquier dato disponible en el buffer de teclado de la misma forma que KdbCharIn, pero sin borrarlo de éste.
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 carácter 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 carácter; si es 1, el ScanCode no es un carácter, 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
<A NAME="KBDSETSTATUS">
KbdSetStatus
</A>
KbdSetStatus establece las carácterísticas del teclado.
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 carácter de retorno es el retorno de carro (13). En formato ASCII, el carácter 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
<A NAME="KBDSTRINGIN">
KbdStringIn
</A>
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.
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.