C/Visual C - No logro detectar las teclas ctrl, alt ni shift

 
Vista:

No logro detectar las teclas ctrl, alt ni shift

Publicado por Loco... (1 intervención) el 21/08/2001 23:46:12
Como puedo detectar las teclas ctrl, alt y shift hace como una semana que me dijeron que con este ejemplo:

char t;

main....
{
t:=inport(0x60) // supuestamente para leer el teclado
printf("%c",t);
}

si corre pero no encuentro la forma en que detecta la tecla,

Quesiera que me explicaran un poquito mas, o si hay otra alternativa...ok
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:No logro detectar las teclas ctrl, alt ni shift

Publicado por Fabián Sierra Carvajal (50 intervenciones) el 22/08/2001 17:22:53
Bueno, sucede que ése es el puerto del teclado... Cada tecla pulsada es enviada desde el teclado a ése puerto.
Otra opción (si estás usando Borland TurboC 2.0 o superior) es usar bioskey(), que está profusamente documentada. Una tercera opción, sumamente peligrosa, es intentar leer directamente la memoria del teclado, que en éste momento no recuerdo exactamente dónde está. Encontrarás esa información el la Guía del IBM PC para El Programador, de Peter Norton.
¡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

RE:No logro detectar las teclas ctrl, alt ni shift

Publicado por Armando (127 intervenciones) el 23/08/2001 17:12:59
Bueno, el inport(0x60) te sirve para las teclas alfanumericas.

Este es el codigo de ayuda que viene en el TC++ 3.0

#include <stdio.h>
#include <bios.h>
#include <ctype.h>

#define RIGHT 0x01
#define LEFT 0x02
#define CTRL 0x04
#define ALT 0x08

int main(void)
{
int key, modifiers;

/* function 1 returns 0 until a key is pressed */
while (bioskey(1) == 0);

/* function 0 returns the key that is waiting */
key = bioskey(0);

/* use function 2 to determine if shift keys were used */
modifiers = bioskey(2);
if (modifiers)
{
printf("[");
if (modifiers & RIGHT) printf("RIGHT");
if (modifiers & LEFT) printf("LEFT");
if (modifiers & CTRL) printf("CTRL");
if (modifiers & ALT) printf("ALT");
printf("]");
}
/* print out the character read */
if (isalnum(key & 0xFF))
printf("'%c'\n", key);
else
printf("%#02x\n", key);
return 0;
}

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