[bios] Lecture de caractère et état du clavier
Bonjour,
Je suis entrain d'essayer de ma familiariser avec la programmation systeme et je tente de lancer un programme en C utilisant les fonction BIOS pour lire les caractères tapés ainsi que l'état du clavier.
Mon premier soucis est que je n'ai pas le fichier d'entête <bios.h>. Alors j'ai récupéré celui sur le site suivant:
http://www.koders.com/c/fidDD8546189...4E0B72C76.aspx
Je ne suis pas certain...Est ce le bon? Sinon ou pourrais je le récupérer?
Surement que les erreurs de compilation proviennent de ce fait, car mon compilo (GNU Gcc) ne reconnait pas le type REGS (l'erreur dit que la taille de la variable de stockage n'est pas connu) et ni les fonctions suivantes ( erreur: première utilisation de cette fonction):
Code:
1 2 3 4
|
#define GetKbKey() ( _bios_keybrd( _KEYBRD_READ ) )
#define GetKbReady() ( _bios_keybrd( _KEYBRD_READY ) != 0 )
#define GetKbEtat() ( _bios_keybrd( _KEYBRD_SHIFTSTATUS ) ) |
De plus j'ai une "implicit declaration" de int86...Sauriez vous d'ou cela pourrait venir?
Voici mes fichier d'entêtes:
Code:
1 2 3 4 5 6
|
#include <dos.h>
#include "bios.h" //Celui que j'ai rajouté à partir du lien...
#include <stdio.h>
#include <conio.h>
#include <time.h> |
Comme cela, voici la fonction pour vérifier l'état du clavier et lire un caractère:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
/**********************************************************************/
/* GETKEY : Lit un caractre et affiche l'tat des indicateurs */
/* Entre : nant */
/* Sortie : Code de la touche frappe */
/* < 256 : touche ordinaire */
/* >= 256 : touche
code tendu */
/**********************************************************************/
unsigned int GetKey( void )
{
int Touche, /* Touche retourne */
Etat; /* Etat du clavier */
do
{
Etat = GetKbEtat(); /* Lit l'tat du clavier */
Insert = NegFlag(Insert, Etat & INS, FC+9, FL, "INSERT");
Caps = NegFlag(Caps, Etat & CAPL, FC+3, FL, " CAPS ");
Num = NegFlag(Num, Etat & NUML, FC, FL, "NUM");
}
while ( !GetKbReady() );/* Recommence jusqu'
dtection d'une frappe */
Touche = GetKbKey(); /* Lit la touche */
return ((Touche & 255) == 0) ? (Touche >> 8) + 256 : Touche & 255;
} |
Je suis sous windows XP et je travaille avec l'EDI code blocks.
J'espere que vous pourrez m'orienter pour faire tourner ce genre de programme.
Nicolas
;)
...Autre commande pour lecture de clavier?
Bojour...
Je suis nouveau ici... J'ai écrit plusieurs codes source à l'aide d'un ancien compilateur C (Symantec), et plusieurs de ms codes source utilisaient la commande _bios_keybrd pour entrée directe à partir du clavier.
Maintenant, j'ai un compil. plus récent (Borland C++ 4.5) qui ne reconnaît pas l'instruxion _bios_keybrd.
Ma question: Y'a-t-îl une autre instruxion qui fait à peu-près la même chose et qui est reconnue par Borland, et si oui, laquelle....
Merci pour votre attention
Normnad Martel
Montréal, Qc.