C/Visual C - Modificar numlock

 
Vista:

Modificar numlock

Publicado por beosman (37 intervenciones) el 03/12/2002 18:55:51
Hola a todos:

Me gustaría saber el código para modificar el NumLock del ordenador, pero esto tiene que ser independiente del sistema operativo, es decir, que el código sea ensamblador o estándar para que sea portable.

Muchas gracias por vuestra ayuda.

beosman.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Modificar numlock

Publicado por Googol (255 intervenciones) el 03/12/2002 19:10:16
La BIOS almacena información sobre el estado de los leds del teclado en la posición de memoria (modo real) 0040:0097 (hexadecimal). El bit menos significativo almacena el estado del LED Bloq Despl, el siguiente al bloq. num, y el siguiente al Bloq. Mays, donde un 1 indica activo y un 0 apagado.
O sea un valor de, por ejemplo, 3 indica que están encendidos los leds de Bloq Num y Bloq Despl.
Puedes modificar ese byte si quieres que se modifique el estado de los leds. Pero para que la modificación tenga efecto, hay que avisar a la BIOS llamando, por ejemplo, a la función 2 de la int 16h (la del teclado).

Esto funciona en MS-DOS. Si pretendes utilizarlo en Windows, Linux o Beos, donde el sistema operativo se ejecuta en modo protegido, y la BIOS (en modo real) deja de tener sentido, tendrás problemas... empezando por la imposibilidad de acceder a la variable de la BIOS situada en la posición de memoria anterior.

La única solución que se me ocurre ante eso sería acceder directamente al hardware del teclado (puertos 60h y 61h si no recuerdo mal)... pero habría que saber cómo obtener la información de los LEDS a través de esos puertos (lo que en el método anterior hace la BIOS), y yo no puedo ayudarte porque no lo sé. A parte de que el sistema operativo tendría que permitirte que accedieras a esos puertos, cosa que seguramente no haga...

Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Muchas gracias y...

Publicado por beosman (37 intervenciones) el 03/12/2002 19:16:59
Muchas gracias por tu respuesta pero aún estoy un poco verde con los puertos y demás. Era para hacer en BeOS un programa que activara el NumLock porque viene desactivado por defecto y no me gusta. Por cierto, ¿conoces BeOS?

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Muchas gracias y...

Publicado por Googol (255 intervenciones) el 03/12/2002 19:24:42
Si es para eso, supongo que no te valdrá lo de la BIOS :-) y tendrás que mirar lo de los puertos. Busca en Internet algo sobre el hardware del teclado y cómo acceder a él.
Yo hace tiempo conseguí modificar la velocidad de repetición de teclas accediendo a su hardware, pero no llegué a nada de las luces.
De todas maneras, que consigas acceder al teclado para cambiar su estado, en realidad seguramente no signifique nada. Quien hace la conversión de "tecla pulsada" a su significado es el controlador del teclado. A si es que es él quien tiene que saber el estado (activado o desactivado) del NumLock. Si no me equivoco, lo de las luces no es más que un "adorno" que es controlado por software. Por tanto, el programa que quieres hacer dependerá del sistema operativo (vamos, del controlador del teclado).

Respecto a lo segundo, sí, conozco BeOS pero de oídas. Asistí a una presentación sobre él hace un par de años, pero no pasé de ahí.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar