.ASM Home Page
Programação de Hardware
 

Programação do Teclado
Int 09h - IRQ01
            A programação do teclado é muito simples, se comparada aos outros dispositivos de hardware, por isso resolvi iniciar por ele, a cada tecla pressionada é gerada a int 09h, para podermos saber o que aconteceu devemos ler a porta 060h.
            Para cada tecla existe um valor associado, esse valor é chamado de scan code (código de varredura), este código é armazenado nos 7 bits mais baixos da porta 060h, o bit mais significativo, se zerado significa que a tecla foi pressionada e se setado que a tecla foi liberada. Por exemplo se precionarmos a tecla ESC, a porta mostrará o valor 01 (o código de varredura da tecla ESC é 01), e a int 09h, será geranda enquanto a tecla permanecer pressionada, quando liberamos a tecla, uma última interrupção é gerada e o valor da porta 060h, passa de 01 para 129 (valor 01 da tecla ESC com o bit mais significativo setado).
            Além das teclas normais existem as teclas extendidas, quando uma tecla extendida é pessionada, a int 09h é gerada e a porta 060h vale 224 (0E0h), isto indica que quando a próxima int 09h for gerada o valor contido na porta 060h será o valor da tecla extendida, vejamos por exemplo o caso do control esquerdo e do direito, no caso do esquerdo seu código é 29, e o direito é o extendido, então quando pressionamos a tecla control direita, a int 09h é gerada e o valor da porta 060h será 224, então quando o teclado gerar a nova int 09h, o valor da porta 060h será 29, mas se referente ao código extendido, esta mesma coincidência ocorre com as teclas alt, e as setas direcionais (teclas do teclado numérico e as normais). Mas como em todo o mundo da informática sempre existem excessões, são elas a tecla Print Screen/SysRq e Pause/Break.

Print Screen/SysRq

           Nesta tecla temos uma série de particularidades, pois quando pressionamos a tecla PrintScreen, ao contrário das outras teclas extendidas, não serão gerados dois códigos mas sim 4 (note que para cada novo valor uma nova int 09h é gerada) a sequêencia é 224,42,224 e 55, você deve prestar atenção pois a tecla shift possui o código 42, e quando a tecla for liberada a nova sequência será 224,170,224 e 183. As particulariadades dessa tecla não param por aí, se alguma tecla shift ou control for pressionada em conjunto com ela a sequencia será de 2 byte ela é 224 e 55 e com a liberação 224 e 183, por fim a última particularidade dessa tecla, quando pressionamos  alt+PrintScreen( System Request), o código não será extendido e o valor da porta 060h será 84.

Pause/Break

            Com certeza esta tecla é a mais complicada de todas do teclado, se você pressionar esta tecla junto com qualquer tecla control, você receberá o código extendo 70, e em todas as outras vezes você receberá a sequência 225,29,69,225,157,197, preste atenção pois o código de caracter extendido neste caso é 225 e não 224, uma outra característica é que essa tecla não aceita a repetição automática.

Códigos de Varredura
 
Código
Tecla
Código
Tecla
Código
Tecla
Código
Tecla
Código
Tecla
01
ESC
21
Y
41
` ~
61
F3
81
3 Pg Dn
02
1
22
U
42
Shift Esq.
62
F4
82
0 Insert
03
2
23
I
43
 
63
F5
83
. Del
04
3
24
O
44
Z
64
F6
84
 
05
4
25
P
45
X
65
F7
85
 
06
5
26
[ {
46
C
66
F8
86
 
07
6
27
] }
47
V
67
F9
87
F11
08
7
28
Enter/Ret.
48
B
68
F10
88
F12
09
8
29
Ctrl Esqu.
49
N
69
Num Lock
89
 
10
9
30
A
50
M
70
Scro. Lock
90
 
11
0
31
S
51
, <
71
7 Home
91
 
12
- _
32
D
52
. >
72
8 Up
92
 
13
= +
33
F
53
/ ?
73
9 Pg Up
93
 
14
BS
34
G
54
Shift Dir.
74
- Keypad
94
 
15
TAB
35
H
55
* Keypad
75
4 Left
95
 
16
Q
36
J
56
Alt Esqu.
76
5 Keypad
96
 
17
W
37
K
57
Espaço
77
6 Right
97
 
18
E
38
L
58
Caps Lock
78
+ Keypad
98
 
19
R
39
; :
59
F1
79
1 End
99
 
20
T
40
' "
60
F2
80
2 Down
100
 
Códigos de Varredura Extendidos
 
 
Código
Tecla
Código
Tecla
Código
Tecla
Código
Tecla
Código
Tecla
28
Enter Keyp
75
Esquerda
 
 
 
 
 
 
29
Control Dir
77
Direita
 
 
 
 
 
 
42
Prt. Screen
79
End
 
 
 
 
 
 
53
/ (KeyPad)
80
Down
 
 
 
 
 
 
55
Prt. Screen
81
Pg. Down
 
 
 
 
 
 
56
Alt Dir.
82
Insert
 
 
 
 
 
 
71
Home
83
Delete
 
 
 
 
 
 
72
Up
111
Macro
 
 
 
 
 
 
73
Pg. Up
 
 
 
 
 
 
 
 

 Retornar                xandre@convex.com.br