si tu est sous dos ce que tu peut faire c'est detourner l'interruption clavier sous bc++ ça donne ça : #include <dos.h> #define KEYBOARD_INT 0x09 #define KEY_BUFFER 0x60 #define KEY_CONTROL 0x61 #define INT_CONTROL 0X20
void _interrupt _far New_Key_Int(); void (_interrupt _far *Old_Kbd_Isr)(); void Initialise_Key(); void Key_Actif(); void Key_Inactif();
void Initialise_Key(){ Old_Kbd_Isr=_dos_getvect(KEYBOARD_INT); };
void Key_Actif(){ _dos_setvect(KEYBOARD_INT, New_Key_Int); };
void Key_Inactif(){ _dos_setvect(KEYBOARD_INT, Old_Kbd_Isr); };
void _interrupt _far New_Key_Int(){ asm{ sti in al, KEY_BUFFER xor ah, ah mov raw_key, ax in al, KEY_CONTROL or al, 82h out KEY_CONTROL, al and al, 7fh out KEY_CONTROL, al mov al, 20h out INT_CONTROL, al } if(raw_key<128) // la touche ayant pour code : "raw_key" est pressé else // la touche ayant pour code : "raw_key" est relaché }
bon c'est peut etre un peu violent comme methode mais j'ai fait un jeu de vaisseau avec et ça marche impec !
----------------- Réponse au message : -------------------------------
J'ai un probleme! existe t'il une fonction qui dit si une touche du clavier et pressé et en meme tmps qui prenne le code de cette touche? Un peu pres comme sur les calculette Ti 82 -83 (getkey)! Car en faite je veux faire un petit jeu ou une barre se deplace gauche-droite! Avec getch c'est une catastrophe! et avec kbhit + getch aussi! Merci!
|