-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathklavye.c
69 lines (60 loc) · 1.46 KB
/
klavye.c
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/*********************************
* Eklenecegi dosyaya kendisinden *
* once <dos.h> eklenmelidir. *
*********************************/
unsigned char kod;
struct /* kullanacagimiz tuslar icin */
{
int Esc : 1;
int Enter : 1;
int sol : 1;
int sag : 1;
int ilr : 1;
int gri : 1;
int art : 1;
int Ctrl : 1;
} T;
void interrupt (*INT9)(void); /* orjinal kesmeyi bunda sakliycaz */
void kod_kontrol(void) /* kullandimiz tuslarin basildiğini ya da birakildiğini kontrol eder */
{
if(kod == 1) T.Esc = 1;
if(kod == 129) T.Esc = 0;
if(kod == 28) T.Enter = 1;
if(kod == 156) T.Enter = 0;
if(kod == 75) T.sol = 1;
if(kod == 203) T.sol = 0;
if(kod == 77) T.sag = 1;
if(kod == 205) T.sag = 0;
if(kod == 72) T.ilr = 1;
if(kod == 200) T.ilr = 0;
if(kod == 80) T.gri = 1;
if(kod == 208) T.gri = 0;
if(kod == 78) T.art = 1;
if(kod == 206) T.art = 0;
if(kod == 29) T.Ctrl = 1;
if(kod == 157) T.Ctrl = 0;
}
void interrupt yeni_INT9(void) /* kendi kesmemiz */
{
kod = inp(0x60); /* 0x60 nolu porttan tus kodunu okur */
outp(0x20,0x20); /* portu durumdan haberdar et */
kod_kontrol(); /* kodu kontrol eder */
}
void klavyeyi_yeniden_programla(void)
{
kod = 0;
T.Esc = 0;
T.Enter = 0;
T.sol = 0;
T.sag = 0;
T.ilr = 0;
T.gri = 0;
T.art = 0;
T.Ctrl = 0;
INT9 = getvect(9); /* orjinal kesmeyi yedekle */
setvect(9, yeni_INT9); /* kendi kesmemizi orjinalinin yerine koy */
}
void klavyeyi_eski_haline_getir(void)
{
setvect(9, INT9); /* orjinal kesmeyi yerine koy */
}