Diferencia entre revisiones de «Manual de programación de OS/2/Llamadas KBDxxx para acceso al teclado»

Contenido eliminado Contenido añadido
m Bot: Correcciones ortográficas; cambios triviales
m Bot controlado: actualizada sintaxis de tabla; cambios triviales
 
Línea 9:
<br />APIRET rc; /* Codigo de error */
<P>rc = KbdCharIn(CharData, IOWait, KbdHandle);
<P>
<P><TABLE><TH><H3>Par&aacute;metros</H3></TH>
{|
<TR><TD>CharData</TD><TD>Puntero a una estructura donde OS/2 devolver&aacute; la informaci&oacute;n. Tiene los siguientes campos:</TD></TR>
! <H3>Par&aacute;metros</H3>
<TR><TD></TD><TD>
|-
<TABLE BORDER=1>
| CharData
 
| Puntero a una estructura donde OS/2 devolver&aacute; la informaci&oacute;n. Tiene los siguientes campos:
<TR>
|-
<TD>chChar (UCHAR)</TD>
|
<TD>Caracter ASCII de la tecla pulsada. Si se trata de un c&oacute;digo extendido (tecla de funci&oacute;n, p.e.) contendr&aacute; h'00 o h'E0 y el bit 1 de <B>fbStatus</B> estar&aacute; a 1.</TD>
||
</TR>
{| BORDER="1"
 
|-
<TR>
| <TD>chScanchChar (UCHAR)</TD>
| Caracter <TD>C&oacute;digo de scanASCII de la tecla pulsada. Si esse trata de un c&oacute;digo extendido (tecla de funci&oacute;n, entoncesp.e.) contienecontendr&aacute; h'00 o h'E0 y el ASCIIbit extendido1 de '''fbStatus''' estar&aacute; a 1.</TD>
|-
</TR>
| chScan (UCHAR)
<TR>
| C&oacute;digo de scan de la tecla pulsada. Si es un c&oacute;digo extendido, entonces contiene el ASCII extendido.
<TD>fbStatus (UCHAR)</TD>
|-
<TD>Estado del evento de pulsaci&oacute;n. Se lee por bits:
| fbStatus (UCHAR)
| Estado del evento de pulsaci&oacute;n. Se lee por bits:
 
<br />
{|
<TABLE>
|-
 
<TD><U>Bit</U>
<TR>
| <U>Descripci&oacute;n</U>
<TD><U>Bit</U></TD>
|-
<TD><U>Descripci&oacute;n</U></TD>
| 7-6
</TR>
| Indican si es el primer byte o el &uacute;ltimo de un carácter multi byte (DBCS). Si es 10, es el primer byte; si es 01 es el &uacute;ltimo, y si es 11, es el &uacute;nico byte. Para recuperar c&oacute;digos multibyte es necesario ejecutar una llamada a '''KbdCharIn''' por cada byte.
<TR>
|-
<TD>7-6</TD>
| 5
<TD>Indican si es el primer byte o el &uacute;ltimo de un carácter multi byte (DBCS). Si es 10, es el primer byte; si es 01 es el &uacute;ltimo, y si es 11, es el &uacute;nico byte. Para recuperar c&oacute;digos multibyte es necesario ejecutar una llamada a <B>KbdCharIn</B> por cada byte.</TD>
| Petici&oacute;n de conversi&oacute;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:<br />
{|
|-
 
<TD><U>Bit</U>
</TR>
| <U>Descripci&oacute;n</U>
<TR>
|-
<TD>5</TD>
| 15 || SysReq (PetSis) pulsada
<TD>Petici&oacute;n de conversi&oacute;n inmediata.</TD>
|-
</TR>
| 14 || CapsLock pulsado
<TR>
|-
<TD>4-2</TD>
| 13 || NumLock pulsado
<TD>Reservado (a 0).</TD>
|-
 
| 12 || ScrollLock pulsado
</TR>
|-
<TR>
| 11 || Alt derecho pulsado
<TD>1</TD>
|-
<TD>Si es 0, el ScanCode es un carácter; si es 1, el ScanCode no es un carácter, sino un codigo extendido.</TD>
| 10 || Ctrl derecho pulsado
</TR>
|-
<TR>
| 9 || Alt izquierdo pulsado
<TD>0</TD>
|-
<TD>Si es 1, significa que que se ha soltado la tecla indicada, en vez de haber sido pulsada.</TD>
| 8 || Ctrl izquierdo pulsado
</TR>
|-
 
| 7 || Insert activo
</TABLE>
|-
</TD>
| 6 || CapsLock activo
</TR>
|-
<TR>
| 5 || NumLock activo
<TD>bNlsShift (UCHAR)</TD>
|-
<TD>Reservado. Poner a cero.</TD>
| 4 || ScrollLock activo
</TR>
|-
<TR>
| 3 || Alg&uacute;n Alt pulsado
<TD>fsState (USHORT)</TD>
|-
<TD>Describe las teclas que hay pulsadas:<br />
| 2 || Alg&uacute;n Ctrl pulsado
 
|-
<TABLE>
| 1
 
| Cambio (Mayusculas) izquierdo pulsado
<TR>
|-
<TD><U>Bit</U></TD>
| 0 || Cambio (Mayusculas) derecho pulsado
<TD><U>Descripci&oacute;n</U></TD>
|}
</TR>
|-
<TR>
| time (ULONG)
<TD>15</TD>
| Marca de tiempo indicando cuando fue pulsada la tecla. Se cuenta en milisegundos desde que el sistema se ha puesto en marcha.
<TD>SysReq (PetSis) pulsada</TD>
|}
 
|-
</TR>
| IOWait
<TR>
| 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.
<TD>14</TD>
|-
<TD>CapsLock pulsado</TD>
| KbdHandle || Handle de teclado. Debe ser 0.
</TR>
|}
<TR>
<P>
<TD>13</TD>
{|
<TD>NumLock pulsado</TD>
! <H3>Codigos de error</H3>
</TR>
|-
 
| 0 || Sin error
<TR>
|-
<TD>12</TD>
| 375 || Valor de espera no v&aacute;lido
<TD>ScrollLock pulsado</TD>
|-
</TR>
| 439 || Handle no v&aacute;lido
<TR>
|-
<TD>11</TD>
| 445 || Se requiere el foco del teclado
<TD>Alt derecho pulsado</TD>
|-
</TR>
| 447 || El teclado est&aacute; ocupado
<TR>
|-
 
| 464
<TD>10</TD>
| KBD inactivo (proceso en ''detached'')
<TD>Ctrl derecho pulsado</TD>
|-
</TR>
| 504 || KBD Extended SG
<TR>
|}
<TD>9</TD>
<TD>Alt izquierdo pulsado</TD>
</TR>
<TR>
<TD>8</TD>
 
<TD>Ctrl izquierdo pulsado</TD>
</TR>
<TR>
<TD>7</TD>
<TD>Insert activo</TD>
</TR>
<TR>
<TD>6</TD>
<TD>CapsLock activo</TD>
 
</TR>
<TR>
<TD>5</TD>
<TD>NumLock activo</TD>
</TR>
<TR>
<TD>4</TD>
<TD>ScrollLock activo</TD>
</TR>
 
<TR>
<TD>3</TD>
<TD>Alg&uacute;n Alt pulsado</TD>
</TR>
<TR>
<TD>2</TD>
<TD>Alg&uacute;n Ctrl pulsado</TD>
 
</TR>
<TR>
<TD>1</TD>
<TD>Cambio (Mayusculas) izquierdo pulsado</TD>
</TR>
<TR>
<TD>0</TD>
<TD>Cambio (Mayusculas) derecho pulsado</TD>
</TR>
 
</TABLE>
</TD>
</TR>
<TR>
<TD>time (ULONG)</TD>
<TD>Marca de tiempo indicando cuando fue pulsada la tecla. Se cuenta en milisegundos desde que el sistema se ha puesto en marcha.</TD>
</TR>
</TABLE>
</TD></TR>
<TR><TD>IOWait</TD><TD>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.</TD></TR>
<TR><TD>KbdHandle</TD><TD>Handle de teclado. Debe ser 0.</TD></TR>
 
</TABLE>
<P><TABLE><TH><H3>Codigos de error</H3></TH>
<TR><TD>0</TD><TD>Sin error</TD></TR>
<TR><TD>375</TD><TD>Valor de espera no v&aacute;lido</TD></TR>
<TR><TD>439</TD><TD>Handle no v&aacute;lido</TD></TR>
<TR><TD>445</TD><TD>Se requiere el foco del teclado</TD></TR>
 
<TR><TD>447</TD><TD>El teclado est&aacute; ocupado</TD></TR>
<TR><TD>464</TD><TD>KBD inactivo (proceso en ''detached'')</TD></TR>
<TR><TD>504</TD><TD>KBD Extended SG</TD></TR>
</TABLE>
<P>
<P><A NAME="KBDFLUSHBUFFER"><CENTER><H1><HR>KbdFlushBuffer<HR></H1></CENTER>
Línea 178 ⟶ 132:
<br />APIRET rc; /* Codigo de error */
<P>rc = KbdFlushBuffer(KbdHandle);
<P>
<P><TABLE><TH><H3>Par&aacute;metros</H3></TH>
{|
<TR><TD>KbdHandle</TD><TD>Handle de teclado. Debe ser 0.</TD></TR>
! <H3>Par&aacute;metros</H3>
</TABLE>
|-
| KbdHandle || Handle de teclado. Debe ser 0.
|}
 
<P>
<P><TABLE><TH><H3>Codigos de error</H3></TH>
{|
<TR><TD>0</TD><TD>Sin error</TD></TR>
! <H3>Codigos de error</H3>
<TR><TD>439</TD><TD>Handle no v&aacute;lido</TD></TR>
|-
<TR><TD>445</TD><TD>Se requiere el foco del teclado</TD></TR>
| 0 || Sin error
<TR><TD>447</TD><TD>El teclado est&aacute; ocupado</TD></TR>
|-
 
| 439 || Handle no v&aacute;lido
<TR><TD>464</TD><TD>KBD inactivo (proceso en ''detached'')</TD></TR>
|-
<TR><TD>504</TD><TD>KBD Extended SG</TD></TR>
| 445 || Se requiere el foco del teclado
</TABLE>
|-
| 447 || El teclado est&aacute; ocupado
|-
| 464
| KBD inactivo (proceso en ''detached'')
|-
| 504 || KBD Extended SG
|}
<P>
<P><A NAME="KBDGETSTATUS"><CENTER><H1><HR>KbdGetStatus<HR></H1></CENTER>
Línea 201 ⟶ 166:
<br />APIRET rc; /* Codigo de error */
<P>rc = KbdGetStatus(StatData, KbdHandle);
<P>
<P><TABLE><TH><H3>Par&aacute;metros</H3></TH>
{|
<TR><TD>StatData</TD><TD>Puntero a una estructura de datos de teclado con los siguientes campos:</TD></TR>
! <H3>Par&aacute;metros</H3>
<TR><TD></TD><TD>
|-
<TABLE BORDER=1>
| StatData
<TR>
| Puntero a una estructura de datos de teclado con los siguientes campos:
<TD>cb (USHORT)</TD>
|-
<TD>Longitud de la estructura incluyendo <B>cb</B>. Tiene que ser 10;</TD>
|
 
||
</TR>
{| BORDER="1"
<TR>
|-
<TD>fsMask (USHORT)</TD>
| cb (USHORT)
<TD>Estado del teclado:
| Longitud de la estructura incluyendo '''cb'''. Tiene que ser 10;
|-
| fsMask (USHORT) || Estado del teclado:
<br />
{|
<TABLE>
|-
 
<TD><U>Bit</U>
<TR>
| <U>Descripci&oacute;n</U>
<TD><U>Bit</U></TD>
|-
<TD><U>Descripci&oacute;n</U></TD>
| 15-9 || Reservado. Est&aacute; a cero.
|-
| 8 || Informe de cambio activo.
|-
| 7
| Longitud del c&oacute;digo de retorno (1 o 2 caracteres). Solo tiene sentido si el bit 6 est&aacute; activo.
|-
| 6
| El c&oacute;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:<br />
{|
|-
 
<TD><U>Bit</U>
</TR>
| <U>Descripci&oacute;n</U>
<TR>
|-
<TD>15-9</TD>
| 15 || SysReq (PetSis) pulsada
<TD>Reservado. Est&aacute; a cero.</TD>
|-
</TR>
| 14 || CapsLock pulsado
<TR>
|-
<TD>8</TD>
| 13 || NumLock pulsado
<TD>Informe de cambio activo.</TD>
|-
 
| 12 || ScrollLock pulsado
</TR>
|-
<TR>
| 11 || Alt derecho pulsado
<TD>7</TD>
|-
<TD>Longitud del c&oacute;digo de retorno (1 o 2 caracteres). Solo tiene sentido si el bit 6 est&aacute; activo.</TD>
| 10 || Ctrl derecho pulsado
</TR>
|-
<TR>
| 9 || Alt izquierdo pulsado
<TD>6</TD>
|-
<TD>El c&oacute;digo de retorno ha sido cambiado.</TD>
| 8 || Ctrl izquierdo pulsado
 
|-
</TR>
| 7 || Insert activo
<TR>
|-
<TD>5</TD>
| 6 || CapsLock activo
<TD>reservado</TD>
|-
</TR>
| 5 || NumLock activo
<TR>
|-
<TD>4</TD>
| 4 || ScrollLock activo
<TD>El informe de cambio ha sido modificado.</TD>
|-
</TR>
| 3 || Alg&uacute;n Alt pulsado
 
|-
<TR>
| 2 || Alg&uacute;n Ctrl pulsado
<TD>3</TD>
|-
<TD>Modo ASCII activo.</TD>
| 1
</TR>
| Cambio (Mayusculas) izquierdo pulsado
<TR>
|-
<TD>2</TD>
| 0 || Cambio (Mayusculas) derecho pulsado
<TD>Modo Binario activo.</TD>
|}
</TR>
|}
<TR>
|-
 
| KbdHandle || Handle de teclado. Debe ser 0.
<TD>1</TD>
|}
<TD>Echo inactivo.</TD>
</TRP>
{|
<TR>
! <H3>Codigos de error</H3>
<TD>0</TD>
|-
<TD>Echo activo.</TD>
| 0 || Sin error
</TR>
|-
</TABLE>
| 376 || Longitud no v&aacute;lida
</TD>
|-
 
| 439 || Handle no v&aacute;lido
</TR>
|-
<TR>
| 445 || Se requiere el foco del teclado
<TD>chTurnAround (USHORT)</TD>
|-
<TD>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.</TD>
| 447 || El teclado est&aacute; ocupado
</TR>
|-
<TR>
| 464
<TD>fsInterim (USHORT)</TD>
| KBD inactivo (proceso en ''detached'')
<TD>Reservado</TD>
|-
</TR>
| 504 || KBD Extended SG
 
|}
<TR>
<TD>fsState (USHORT)</TD>
<TD>Describe las teclas que hay pulsadas:<br />
 
<TABLE>
 
<TR>
<TD><U>Bit</U></TD>
<TD><U>Descripci&oacute;n</U></TD>
 
</TR>
<TR>
<TD>15</TD>
<TD>SysReq (PetSis) pulsada</TD>
</TR>
<TR>
<TD>14</TD>
<TD>CapsLock pulsado</TD>
</TR>
 
<TR>
<TD>13</TD>
<TD>NumLock pulsado</TD>
</TR>
<TR>
<TD>12</TD>
<TD>ScrollLock pulsado</TD>
</TR>
<TR>
 
<TD>11</TD>
<TD>Alt derecho pulsado</TD>
</TR>
<TR>
<TD>10</TD>
<TD>Ctrl derecho pulsado</TD>
</TR>
<TR>
<TD>9</TD>
 
<TD>Alt izquierdo pulsado</TD>
</TR>
<TR>
<TD>8</TD>
<TD>Ctrl izquierdo pulsado</TD>
</TR>
<TR>
<TD>7</TD>
<TD>Insert activo</TD>
 
</TR>
<TR>
<TD>6</TD>
<TD>CapsLock activo</TD>
</TR>
<TR>
<TD>5</TD>
<TD>NumLock activo</TD>
</TR>
 
<TR>
<TD>4</TD>
<TD>ScrollLock activo</TD>
</TR>
<TR>
<TD>3</TD>
<TD>Alg&uacute;n Alt pulsado</TD>
</TR>
 
<TR>
<TD>2</TD>
<TD>Alg&uacute;n Ctrl pulsado</TD>
</TR>
<TR>
<TD>1</TD>
<TD>Cambio (Mayusculas) izquierdo pulsado</TD>
</TR>
 
<TR>
<TD>0</TD>
<TD>Cambio (Mayusculas) derecho pulsado</TD>
</TR>
</TABLE></TD>
</TR>
</TABLE>
</TD></TR>
<TR><TD>KbdHandle</TD><TD>Handle de teclado. Debe ser 0.</TD></TR>
</TABLE>
<P><TABLE><TH><H3>Codigos de error</H3></TH>
 
<TR><TD>0</TD><TD>Sin error</TD></TR>
<TR><TD>376</TD><TD>Longitud no v&aacute;lida</TD></TR>
<TR><TD>439</TD><TD>Handle no v&aacute;lido</TD></TR>
<TR><TD>445</TD><TD>Se requiere el foco del teclado</TD></TR>
<TR><TD>447</TD><TD>El teclado est&aacute; ocupado</TD></TR>
 
<TR><TD>464</TD><TD>KBD inactivo (proceso en ''detached'')</TD></TR>
<TR><TD>504</TD><TD>KBD Extended SG</TD></TR>
</TABLE>
<P>
<P><A NAME="KBDPEEK"><CENTER><H1><HR>KbdPeek<HR></H1></CENTER>
Línea 387 ⟶ 291:
<br />APIRET rc; /* Codigo de error */
<P>rc = KbdPeek(CharData, KbdHandle);
<P>
<P><TABLE><TH><H3>Par&aacute;metros</H3></TH>
{|
<TR><TD>CharData</TD><TD>Puntero a una estructura donde OS/2 devolver&aacute; la informaci&oacute;n. Tiene los siguientes campos:</TD></TR>
! <H3>Par&aacute;metros</H3>
 
|-
<TR><TD></TD><TD>
| CharData
<TABLE BORDER=1>
| Puntero a una estructura donde OS/2 devolver&aacute; la informaci&oacute;n. Tiene los siguientes campos:
 
|-
<TR>
|
<TD>chChar (UCHAR)</TD>
||
<TD>Caracter ASCII de la tecla pulsada. Si se trata de un c&oacute;digo extendido (tecla de funci&oacute;n, p.e.) contendr&aacute; h'00 o h'E0 y el bit 1 de <B>fbStatus</B> estar&aacute; a 1.</TD>
{| BORDER="1"
 
|-
</TR>
| chChar (UCHAR)
<TR>
| Caracter ASCII de la tecla pulsada. Si se trata de un c&oacute;digo extendido (tecla de funci&oacute;n, p.e.) contendr&aacute; h'00 o h'E0 y el bit 1 de '''fbStatus''' estar&aacute; a 1.
<TD>chScan (UCHAR)</TD>
|-
<TD>C&oacute;digo de scan de la tecla pulsada. Si es un c&oacute;digo extendido, entonces contiene el ASCII extendido.</TD>
| chScan (UCHAR)
</TR>
| C&oacute;digo de scan de la tecla pulsada. Si es un c&oacute;digo extendido, entonces contiene el ASCII extendido.
<TR>
|-
<TD>fbStatus (UCHAR)</TD>
| fbStatus (UCHAR)
<TD>Estado del evento de pulsaci&oacute;n. Se lee por bits:
| Estado del evento de pulsaci&oacute;n. Se lee por bits:
 
<br />
{|
<TABLE>
|-
 
<TD><U>Bit</U>
<TR>
| <U>Descripci&oacute;n</U>
<TD><U>Bit</U></TD>
|-
<TD><U>Descripci&oacute;n</U></TD>
| 7-6
</TR>
| Indican si es el primer byte o el &uacute;ltimo de un carácter multi byte (DBCS). Si es 10, es el primer byte; si es 01 es el &uacute;ltimo, y si es 11, es el &uacute;nico byte. Para recuperar c&oacute;digos multibyte es necesario ejecutar una llamada a '''KbdPeek''' por cada byte.
<TR>
|-
<TD>7-6</TD>
| 5
<TD>Indican si es el primer byte o el &uacute;ltimo de un carácter multi byte (DBCS). Si es 10, es el primer byte; si es 01 es el &uacute;ltimo, y si es 11, es el &uacute;nico byte. Para recuperar c&oacute;digos multibyte es necesario ejecutar una llamada a <B>KbdPeek</B> por cada byte.</TD>
| Petici&oacute;n de conversi&oacute;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:<br />
{|
|-
 
<TD><U>Bit</U>
</TR>
| <U>Descripci&oacute;n</U>
<TR>
|-
<TD>5</TD>
| 15 || SysReq (PetSis) pulsada
<TD>Petici&oacute;n de conversi&oacute;n inmediata.</TD>
|-
</TR>
| 14 || CapsLock pulsado
<TR>
|-
<TD>4-2</TD>
| 13 || NumLock pulsado
<TD>Reservado (a 0).</TD>
|-
| 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&uacute;n Alt pulsado
|-
| 2 || Alg&uacute;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.
|}
 
</TRP>
{|
<TR>
! <H3>Codigos de error</H3>
<TD>1</TD>
|-
<TD>Si es 0, el ScanCode es un carácter; si es 1, el ScanCode no es un carácter, sino un codigo extendido.</TD>
| 0 || Sin error
</TR>
|-
<TR>
| 439 || Handle no v&aacute;lido
<TD>0</TD>
|-
<TD>Si es 1, significa que que se ha soltado la tecla indicada, en vez de haber sido pulsada.</TD>
| 445 || Se requiere el foco del teclado
</TR>
|-
 
| 447 || El teclado est&aacute; ocupado
</TABLE>
|-
</TD>
| 464
</TR>
| KBD inactivo (proceso en ''detached'')
<TR>
|-
<TD>bNlsShift (UCHAR)</TD>
| 504 || KBD Extended SG
<TD>Reservado. Poner a cero.</TD>
|}
</TR>
<TR>
<TD>fsState (USHORT)</TD>
<TD>Describe las teclas que hay pulsadas:<br />
 
<TABLE>
 
<TR>
<TD><U>Bit</U></TD>
<TD><U>Descripci&oacute;n</U></TD>
</TR>
<TR>
<TD>15</TD>
<TD>SysReq (PetSis) pulsada</TD>
 
</TR>
<TR>
<TD>14</TD>
<TD>CapsLock pulsado</TD>
</TR>
<TR>
<TD>13</TD>
<TD>NumLock pulsado</TD>
</TR>
 
<TR>
<TD>12</TD>
<TD>ScrollLock pulsado</TD>
</TR>
<TR>
<TD>11</TD>
<TD>Alt derecho pulsado</TD>
</TR>
<TR>
 
<TD>10</TD>
<TD>Ctrl derecho pulsado</TD>
</TR>
<TR>
<TD>9</TD>
<TD>Alt izquierdo pulsado</TD>
</TR>
<TR>
<TD>8</TD>
 
<TD>Ctrl izquierdo pulsado</TD>
</TR>
<TR>
<TD>7</TD>
<TD>Insert activo</TD>
</TR>
<TR>
<TD>6</TD>
<TD>CapsLock activo</TD>
 
</TR>
<TR>
<TD>5</TD>
<TD>NumLock activo</TD>
</TR>
<TR>
<TD>4</TD>
<TD>ScrollLock activo</TD>
</TR>
 
<TR>
<TD>3</TD>
<TD>Alg&uacute;n Alt pulsado</TD>
</TR>
<TR>
<TD>2</TD>
<TD>Alg&uacute;n Ctrl pulsado</TD>
 
</TR>
<TR>
<TD>1</TD>
<TD>Cambio (Mayusculas) izquierdo pulsado</TD>
</TR>
<TR>
<TD>0</TD>
<TD>Cambio (Mayusculas) derecho pulsado</TD>
</TR>
 
</TABLE>
</TD>
</TR>
<TR>
<TD>time (ULONG)</TD>
<TD>Marca de tiempo indicando cuando fue pulsada la tecla. Se cuenta en milisegundos desde que el sistema se ha puesto en marcha.</TD>
</TR>
</TABLE>
</TD></TR>
<TR><TD>KbdHandle</TD><TD>Handle de teclado. Debe ser 0.</TD></TR>
</TABLE>
 
<P><TABLE><TH><H3>Codigos de error</H3></TH>
<TR><TD>0</TD><TD>Sin error</TD></TR>
<TR><TD>439</TD><TD>Handle no v&aacute;lido</TD></TR>
<TR><TD>445</TD><TD>Se requiere el foco del teclado</TD></TR>
<TR><TD>447</TD><TD>El teclado est&aacute; ocupado</TD></TR>
 
<TR><TD>464</TD><TD>KBD inactivo (proceso en ''detached'')</TD></TR>
<TR><TD>504</TD><TD>KBD Extended SG</TD></TR>
</TABLE>
<P>
<P><A NAME="KBDSETSTATUS"><CENTER><H1><HR>KbdSetStatus<HR></H1></CENTER>
Línea 556 ⟶ 411:
<br />APIRET rc; /* Codigo de error */
<P>rc = KbdSetStatus(StatData, KbdHandle);
<P>
<P><TABLE><TH><H3>Par&aacute;metros</H3></TH>
{|
<TR><TD>StatData</TD><TD>Puntero a una estructura de datos de teclado con los siguientes campos:</TD></TR>
! <H3>Par&aacute;metros</H3>
<TR><TD></TD><TD>
|-
<TABLE BORDER=1>
| StatData
<TR>
| Puntero a una estructura de datos de teclado con los siguientes campos:
<TD>cb (USHORT)</TD>
|-
<TD>Longitud de la estructura incluyendo <B>cb</B>. Tiene que ser 10;</TD>
|
 
||
</TR>
{| BORDER="1"
<TR>
|-
<TD>fsMask (USHORT)</TD>
| cb (USHORT)
<TD>El nuevo estado al que se pasa. Si los bits 0 y 1 est&aacute;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&aacute;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&aacute;n activos, o si los bits 2 y 3 est&aacute;n a 1, se devuelve un error. Si el modo binario est&aacute; activo, el Echo se ignora.
| 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&aacute;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&aacute;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&aacute;n activos, o si los bits 2 y 3 est&aacute;n a 1, se devuelve un error. Si el modo binario est&aacute; activo, el Echo se ignora.
<br />
{|
<TABLE>
|-
<TR>
<TD><U>Bit</U></TD>
 
<TD><U>Descripci&oacute;nBit</U></TD>
| <U>Descripci&oacute;n</U>
</TR>
|-
<TR>
| 15-9 || Reservado. Est&aacute; a cero.
<TD>15-9</TD>
|-
<TD>Reservado. Est&aacute; a cero.</TD>
| 8
</TR>
| Informe de cambio activo. Tiene que estar a 0 si se est&aacute; en modo ASCII.
<TR>
|-
<TD>8</TD>
| 7
| Longitud del c&oacute;digo de retorno (1 o 2 caracteres). Solo tiene sentido si el bit 6 est&aacute; activo.
|-
| 6
| El c&oacute;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:<br />
{|
|-
 
<TD><U>Bit</U>
<TD>Informe de cambio activo. Tiene que estar a 0 si se est&aacute; en modo ASCII.</TD>
| <U>Descripci&oacute;n</U>
</TR>
|-
<TR>
| 15 || SysReq (PetSis) pulsada
<TD>7</TD>
|-
<TD>Longitud del c&oacute;digo de retorno (1 o 2 caracteres). Solo tiene sentido si el bit 6 est&aacute; activo.</TD>
| 14 || CapsLock pulsado
</TR>
|-
| 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&uacute;n Alt pulsado
|-
| 2 || Alg&uacute;n Ctrl pulsado
|-
| 1
| Cambio (Mayusculas) izquierdo pulsado
|-
| 0 || Cambio (Mayusculas) derecho pulsado
|}
|}
|-
| KbdHandle || Handle de teclado. Debe ser 0.
|}
 
<TRP>
{|
<TD>6</TD>
! <H3>Codigos de error</H3>
<TD>El c&oacute;digo de retorno ha sido cambiado.</TD>
|-
</TR>
| 0 || Sin error
<TR>
|-
<TD>5</TD>
| 376 || Longitud no v&aacute;lida
<TD>reservado</TD>
|-
</TR>
| 377 || Mascara de Echo no v&aacute;lida
 
|-
<TR>
| 378
<TD>4</TD>
| Mascara de modo de entrada no v&aacute;lida
<TD>El informe de cambio ha sido modificado.</TD>
|-
</TR>
| 439 || Handle no v&aacute;lido
<TR>
|-
<TD>3</TD>
| 445 || Se requiere el foco del teclado
<TD>Modo ASCII activo.</TD>
|-
</TR>
| 447 || El teclado est&aacute; ocupado
<TR>
|-
 
| 464
<TD>2</TD>
| KBD inactivo (proceso en ''detached'')
<TD>Modo Binario activo.</TD>
|-
</TR>
| 504 || KBD Extended SG
<TR>
|}
<TD>1</TD>
<TD>Echo inactivo.</TD>
</TR>
<TR>
<TD>0</TD>
 
<TD>Echo activo.</TD>
</TR>
</TABLE>
</TD>
</TR>
<TR>
<TD>chTurnAround (USHORT)</TD>
<TD>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.</TD>
</TR>
<TR>
<TD>fsInterim (USHORT)</TD>
 
<TD>Reservado</TD>
</TR>
<TR>
<TD>fsState (USHORT)</TD>
<TD>Describe las teclas que hay pulsadas:<br />
 
<TABLE>
 
<TR>
<TD><U>Bit</U></TD>
 
<TD><U>Descripci&oacute;n</U></TD>
</TR>
<TR>
<TD>15</TD>
<TD>SysReq (PetSis) pulsada</TD>
</TR>
<TR>
<TD>14</TD>
 
<TD>CapsLock pulsado</TD>
</TR>
<TR>
<TD>13</TD>
<TD>NumLock pulsado</TD>
</TR>
<TR>
<TD>12</TD>
<TD>ScrollLock pulsado</TD>
 
</TR>
<TR>
<TD>11</TD>
<TD>Alt derecho pulsado</TD>
</TR>
<TR>
<TD>10</TD>
<TD>Ctrl derecho pulsado</TD>
</TR>
 
<TR>
<TD>9</TD>
<TD>Alt izquierdo pulsado</TD>
</TR>
<TR>
<TD>8</TD>
<TD>Ctrl izquierdo pulsado</TD>
</TR>
<TR>
 
<TD>7</TD>
<TD>Insert activo</TD>
</TR>
<TR>
<TD>6</TD>
<TD>CapsLock activo</TD>
</TR>
<TR>
<TD>5</TD>
 
<TD>NumLock activo</TD>
</TR>
<TR>
<TD>4</TD>
<TD>ScrollLock activo</TD>
</TR>
<TR>
<TD>3</TD>
<TD>Alg&uacute;n Alt pulsado</TD>
 
</TR>
<TR>
<TD>2</TD>
<TD>Alg&uacute;n Ctrl pulsado</TD>
</TR>
<TR>
<TD>1</TD>
<TD>Cambio (Mayusculas) izquierdo pulsado</TD>
 
</TR>
<TR>
<TD>0</TD>
<TD>Cambio (Mayusculas) derecho pulsado</TD>
</TR>
</TABLE></TD>
</TR>
</TABLE>
</TD></TR>
<TR><TD>KbdHandle</TD><TD>Handle de teclado. Debe ser 0.</TD></TR>
</TABLE>
 
<P><TABLE><TH><H3>Codigos de error</H3></TH>
<TR><TD>0</TD><TD>Sin error</TD></TR>
<TR><TD>376</TD><TD>Longitud no v&aacute;lida</TD></TR>
<TR><TD>377</TD><TD>Mascara de Echo no v&aacute;lida</TD></TR>
<TR><TD>378</TD><TD>Mascara de modo de entrada no v&aacute;lida</TD></TR>
 
<TR><TD>439</TD><TD>Handle no v&aacute;lido</TD></TR>
<TR><TD>445</TD><TD>Se requiere el foco del teclado</TD></TR>
<TR><TD>447</TD><TD>El teclado est&aacute; ocupado</TD></TR>
<TR><TD>464</TD><TD>KBD inactivo (proceso en ''detached'')</TD></TR>
 
<TR><TD>504</TD><TD>KBD Extended SG</TD></TR>
</TABLE>
<P>
<P><A NAME="KBDSTRINGIN"><CENTER><H1><HR>KbdStringIn<HR></H1></CENTER>
Línea 746 ⟶ 546:
<br />APIRET rc; /* Codigo de error */
<P>rc = KbdStringIn(CharBuffer, StringLength, IOWait, KbdHandle);
<P>
<P><TABLE><TH><H3>Par&aacute;metros</H3></TH>
{|
<TR><TD>CharBuffer</TD><TD>Puntero a una zona de memoria donde OS/2 devolver&aacute; la cadena le&iacute;da.</TD></TR>
! <H3>Par&aacute;metros</H3>
<TR><TD>StringLength</TD><TD>Puntero a una estructura de datos con los siguientes campos:</TD></TR>
|-
<TR><TD></TD><TD>
| CharBuffer
| Puntero a una zona de memoria donde OS/2 devolver&aacute; la cadena le&iacute;da.
|-
| StringLength
| Puntero a una estructura de datos con los siguientes campos:
|-
|
||
{| BORDER="1"
|-
 
<TD>cb<br />USHORT)
<TABLE BORDER=1>
| Longitud del buffer en bytes. La longitud m&aacute;xima es 255.
<TR>
|-
<TD>cb<br />USHORT)</TD>
| cchIn<br />(USHORT)
<TD>Longitud del buffer en bytes. La longitud m&aacute;xima es 255.</TD>
| N&uacute;mero de bytes que OS/2 ha depositado en el buffer.
</TR>
|}
<TR>
|-
<TD>cchIn<br />(USHORT)</TD>
| IOWait
<TD>N&uacute;mero de bytes que OS/2 ha depositado en el buffer.</TD>
| 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&oacute;digo de retorno (por defecto, el retorno de carro).<br />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&aacute;ximo que cabe en el buffer). Esta opci&oacute;n no est&aacute; soportada en modo ASCII.
 
|-
</TR>
| KbdHandle || Handle de teclado. Debe ser 0.
</TABLE>
|}
</TD></TR>
<P>
<TR><TD>IOWait</TD><TD>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&oacute;digo de retorno (por defecto, el retorno de carro).<br />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&aacute;ximo que cabe en el buffer). Esta opci&oacute;n no est&aacute; soportada en modo ASCII.</TD></TR>
{|
<TR><TD>KbdHandle</TD><TD>Handle de teclado. Debe ser 0.</TD></TR>
! <H3>Codigos de error</H3>
</TABLE>
|-
<P><TABLE><TH><H3>Codigos de error</H3></TH>
| 0 || Sin error
 
|-
<TR><TD>0</TD><TD>Sin error</TD></TR>
<TR><TD>| 375</TD><TD> || Valor de espera no v&aacute;lido</TD></TR>
|-
<TR><TD>439</TD><TD>Handle no v&aacute;lido</TD></TR>
| 439 || Handle no v&aacute;lido
<TR><TD>445</TD><TD>Se requiere el foco del teclado</TD></TR>
|-
<TR><TD>464</TD><TD>KBD inactivo (proceso en ''detached'')</TD></TR>
| 445 || Se requiere el foco del teclado
 
|-
<TR><TD>504</TD><TD>KBD Extended SG</TD></TR>
| 464
</TABLE>
| KBD inactivo (proceso en ''detached'')
|-
| 504 || KBD Extended SG
|}