Section courante

A propos

Section administrative du site

Accéder au clavier depuis le BIOS

L'interruption 16h fournit trois fonctions pour lire le clavier et l'état du clavier. Les fonctions du clavier du BIOS sont très limitées : Aucune fonction du BIOS n'existe pour supprimer des caractères de la mémoire tampon du clavier ou renommer des touches. Les fonctions DOS peuvent effectuer ces opérations.

Touches compatibles avec le BIOS

Certaines combinaisons de touches ne peuvent pas être lues par le BIOS en tant que codes de touches car elles exécutent des commandes. L'activation de la touche PrtSc ou Print appelle l'interruption 5h du BIOS. Cela démarre une routine envoyant l'affichage de l'écran actuel à une imprimante, produisant une copie papier.

Les touches Ctrl+Num Lock arrêtent tout le système jusqu'à ce que l'utilisateur appuie sur une autre touche. Le tampon du clavier ignore les touches Ctrl+Num Lock et la touche enfoncée par la suite, de sorte que les programmes ne peuvent pas lire ces touches.

L'appui sur la combinaison de touches Ctrl+Break appelle l'interruption 1Bh. Normalement, le programme en cours s'arrête et retourne sous DOS. Pour éviter cela, cette interruption peut être dirigée vers une routine dans le programme d'application continuant l'exécution du programme si la routine consiste en une instruction en langage assembleur IRET uniquement.

Les AT et quelques PC/XT avancés ont la touche Sys Req. Son ahctivation appelle l'interruption 1Bh en passant la valeur 8500h au registre AX. Lorsque l'utilisateur relâche la touche, le registre AX reçoit alors la valeur 8501h. La valeur 85h dans le registre AH représente le numéro de fonction de l'interruption 15h. Après démarrage du système, la fonction 85h de l'l'interruption 15h du BIOS consiste uniquement en une instruction IRET ; appuyer sur la touche Sys Req n'a aucun résultat visible.

Codes de contrôle

La plupart des gens savent que n'importe quel code ASCII peut être saisi à partir du clavier en utilisant la touche Alt et les touches du pavé numérique. Peu d'utilisateurs connaissent la saisie de caractères à l'aide de la touche Ctrl. Lorsqu'elle est utilisée avec d'autres touches, cette touche peut saisir des codes ASCII inférieurs au numéro de code 32. La figure suivante montre les touches accessibles :

Décimal Symbole Touche frappé
0 (Nul) Ctrl+2
1 (SOH) Ctrl+A
2 Ctrl+B
3 Ctrl+C
4 Ctrl+D
5 Ctrl+E
6 Ctrl+F
7 (BEL) Ctrl+G
8 (BS) Ctrl+H, BackSpace, Shift+BackSpace
9 (TAB) Ctrl+I
10 (LE) Ctrl+J
11 Ctrl+K
12 (FF) Ctrl+L
13 (CR) Ctrl+M, Enter, Shift+Enter
14 Ctrl+N
15 Ctrl+O
16 Ctrl+P
17 Ctrl+Q
18 Ctrl+R
19 Ctrl+S
20 Ctrl+T
21 Ctrl+U
22 Ctrl+V
23 Ctrl+W
24 Ctrl+X
25 Ctrl+Y
26 (EOF) Ctrl+Z
27 (ESC) Ctrl+[, ESC, Shift+Esc, Ctrl+Esc
28 Ctrl+\
29 Ctrl+]
30 Ctrl+6
31 Ctrl+-
32 Espace Ctrl+Barre d'espacement, Barre d'espacement, Shift+Barre d'espacement, Alt+Barre d'espacement

Fonction 0 : Lire le clavier

L'interruption 16h reçoit normalement un appel lorsqu'un programme s'attend à ce que l'utilisateur saisisse un ou plusieurs caractères. Si un caractère a déjà été saisi avant l'appel de la fonction, le tampon du clavier vide ce caractère et le transmet au programme appelant. S'il n'y a pas de caractère dans la mémoire tampon du clavier, la fonction 0 attend qu'un caractère ait été saisi puis retourne au programme appelant. L'appelant peut déterminer le caractère ou activer une touche à partir du contenu des registres AL et AH.

ASCII

Si le registre AL contient une valeur autre que 0, il contient le code ASCII du caractère. Le registre AH contient le code de balayage de la touche active. Le code dans le registre AL correspond aux codes ASCII pour la sortie des caractères à l'écran. Certaines différences se produisent dans les touches de contrôle :

Code Touche(s)
8 Backspace
9 Tab
10 Ctrl+Return
13 Return
27 Esc

Balayage des codes

Le code de balayage dans le registre AH indique le numéro de la touche active, où les touches du clavier sont numérotées en commençant par 0. Comme les claviers PC, XT et AT diffèrent, cela n'a pas d'importance pour la plupart des programmes.

Codes de touches étendus

Si le registre AL contient la valeur 0 après l'appel, le registre AH indique un code clavier étendu. La différence entre le code ASCII et le code étendu du clavier réside dans le fait que certaines touches (par exemple, les touches du curseur) ne peuvent pas tenir dans l'ensemble de 256 caractères du PC. Le tableau suivant donne un aperçu des codes de clavier étendus :

Code(s) Touche(s)
15 Shift+Tab
16 à 25 Alt+Q, Alt+W, Alt+E, Alt+R, Alt+T, Alt+Y, Alt+U, Alt+I, Alt+O, Alt+P
30 à 38 Alt+A, Alt+S, Alt+D, Alt+F, Alt+G, Alt+H, Alt+J, Alt+K, Alt+L
44 à 50 Alt+Z, Alt+X, Alt+C, Alt+V, Alt+B, Alt+N, Alt+M
59 à 68 F1, F2, F3, F4, F5, F6, F7, F8, F9, F10
71 Home
72
73 Page Up
75
77
79 End
80
81 Page Down
82 Insert
83 Delete
84 à 93 Shift+F1, Shift+F2, Shift+F3, Shift+F4, Shift+F5, Shift+F6, Shift+F7, Shift+F8, Shift+F9, Shift+F10
94 à 103 Ctrl+F1, Ctrl+F2, Ctrl+F3, Ctrl+F4, Ctrl+F5, Ctrl+F6, Ctrl+F7, Ctrl+F8, Ctrl+F9, Ctrl+F10
104 à 113 Alt+F1, Alt+F2, Alt+F3, Alt+F4, Alt+F5, Alt+F6, Alt+F7, Alt+F8, Alt+F9, Alt+F10
115 Ctrl+
116 Ctrl+
117 Ctrl+End
118 Ctrl+Page Down
119 Ctrl+Home
120 à 131 Alt+1, Alt+2Alt+3Alt+4, Alt+5, Alt+6, Alt+7, Alt+8, Alt+9, Alt+0
132 Ctrl+Page Up

Les combinaisons de touches non contenues dans ce tableau ne peuvent pas être détectées à l'aide des fonctions du clavier du BIOS, car elles ne génèrent pas de codes de clavier.

Fonction 1 : lire le clavier

La fonction 1 lit également le clavier. Contrairement à la fonction 0, la fonction 1 laisse le caractère précédent dans la mémoire tampon du clavier. Des appels répétés de la fonction 1 ou de la fonction 0 lisent à nouveau le clavier. Placez la valeur 1 dans le registre AH pour appeler la fonction 1. Contrairement à la fonction 0, la fonction 1 informe immédiatement le programme appelant avec le drapeau zéro après l'appel de la fonction si un caractère est disponible ou non. Si le drapeau zéro est égal à 1, aucun caractère n'était disponible. Si le drapeau zéro est réinitialisé, les registres AL et AH contiennent des informations sur la touche activée. Comme dans la fonction 0, le registre AL contient la valeur 0 si l'utilisateur a activé une touche étendue, et une valeur différente de 0 si l'utilisateur a appuyé sur une touche "normale". Le registre AH contient le code de balayage des touches normales ; les touches étendues placent leurs codes dans le registre AH.

Fonction 2 : lire les touches de contrôle

La fonction 2 a une tâche complètement différente. Il lit l'état de certaines touches de commande et conditions (par exemple, Insert. Placez le chiffre 2 dans le registre AH pour appeler la fonction. L'état du clavier peut être trouvé dans le registre AL après l'appel de la fonction.

Bit Description
0 1=Touche SHIFT de droite est enfoncé
1 1=Touche SHIFT de gauche est enfoncé
2 1=Touche CTRL est enfoncé
3 1=Touche ALT est enfoncé
4 1=SCROLL LOCK est activé
5 1=NUM LOCK est activé
6 1=CAPS LOCK est activé
7 1=INSERT est activé


Dernière mise à jour : Mardi, le 7 février 2023