BIOSKEY |
Clavier par le BIOS |
---|---|
Turbo C | bios.h |
Syntaxe
int bioskey(int cmd); |
Paramètres
Nom | Description |
---|---|
cmd | Ce paramètre permet d'indiquer le numéro de la fonction à appeler |
Description
Cette fonction permet d'appeler une fonction de l'interruption 16h du BIOS permettant la gestion du clavier.
Remarque
- La fonction bioskey effectue diverses opérations clavier en utilisant l'interruption BIOS 0x16. Le paramètre cmd détermine l'opération exacte.
- La valeur renvoyée par la fonction bioskey dépend de la tâche qu'elle effectue, déterminée par la valeur de cmd :
- La fonction bioskey fonctionne uniquement avec les IBM PC et compatibles.
cmd | Tâche effectuée par bioskey | ||
---|---|---|---|
0 | Si les 8 bits inférieurs sont différents de zéro, la fonction bioskey renvoie le caractère ASCII pour la prochaine frappe en attente dans la file d'attente ou la prochaine touche frappée sur le clavier. | ||
1 | Il teste si une frappe est disponible pour être lue. Une valeur de retour de zéro signifie qu'aucune clef n'est disponible. Sinon, la valeur de la prochaine frappe est renvoyée. La frappe elle-même est conservée pour être renvoyée par le prochain appel à bioskey ayant une valeur cmd de zéro. | ||
2 | Demande l'état actuel de la touche de combinaison. La valeur est composée de ou binaire en combinant les valeurs suivantes : | ||
Bit | Valeur | Description | |
7 | 0x80 | Insère activé | |
6 | 0x40 | Caps Lock activé | |
5 | 0x20 | Num Lock activé | |
4 | 0x10 | Scroll Lock activé | |
3 | 0x08 | Alt enfoncé | |
2 | 0x04 | Ctrl enfoncé | |
1 | 0x02 | Left Shift enfoncé | |
0 | 0x01 | Right Shift enfoncé |
Exemple
Voici un exemple permettant de demander l'état des touches spéciales à l'aide de cette fonction :
- #include <stdio.h>
- #include <stdlib.h>
- #include <bios.h>
-
- int main() {
- int HotKey = bioskey(0x02);
- printf("Shift de droite : ");
- if(HotKey & 1 == 1) {
- printf("Enfoncé\n");
- } else {
- printf("Relaché\n");
- }
- printf("Shift de gauche : ");
- if(HotKey & 2 == 2) {
- printf("Enfoncé\n");
- } else {
- printf("Relaché\n");
- }
- printf("Ctrl : ");
- if(HotKey & 4 == 4) {
- printf("Enfoncé\n");
- } else {
- printf("Relaché\n");
- }
- printf("Alt : ");
- if(HotKey & 8 == 8) {
- printf("Enfoncé\n");
- } else {
- printf("Relaché\n");
- }
- printf("ScrollLock : ");
- if(HotKey & 16 == 16) {
- printf("Activé\n");
- } else {
- printf("Désactivé\n");
- }
- printf("NumLock : ");
- if(HotKey & 32 == 32) {
- printf("Activé\n");
- } else {
- printf("Désactivé\n");
- }
- printf("CapsLock : ");
- if(HotKey & 64 == 64) {
- printf("Activé\n");
- } else {
- printf("Désactivé\n");
- }
- printf("Insert : ");
- if(HotKey & 128 == 128) {
- printf("Activé\n");
- } else {
- printf("Désactivé\n");
- }
- }
Voir également
Langage de programmation - C - Interruption 16h: Gestionnaire clavier
Langage de programmation - Turbo C - Référence de fonctions - int86x
Dernière mise à jour : Dimanche, le 28 juin 2015