home *** CD-ROM | disk | FTP | other *** search
- /*
- {*********************************************************}
- { }
- { A program forráskódja az IDG - PCX szerkesztôségének, }
- { és Kimmel Tamás-nak a tulajdona. }
- { A forráskód a kereskedelmi célokat kivéve szabadon }
- { terjeszthetô ! }
- { }
- { PC-X User (c) 1997, november }
- {*********************************************************}
-
- A BIOS a LED-ek állapotát (vagyis inkább a ScrollLock, NumLock és
- CapsLock állapotát, de ez most mindegy) a hex 0040:0017 bájton.
- E bájt felépítése:
-
- 0. bit == 1, ha a jobb oldali Shift lenyomva
- 1. bit bal oldali Shift lenyomva
- 2. bit Ctrl lenyomva
- 3. bit Alt lenyomva
- 4. bit ScrollLock bekapcsolva
- 5. bit NumLock bekapcsolva
- 6. bit CapsLock bekapcsolva
- 7. bit Insert bekapcsolva (ezt is figyeli!?)
-
- Ezt a bájtot variáljuk és így lehet villogtatni stb. (Ki gondolta
- volna...)
- */
-
-
- #include <stdio.h>
- #include <dos.h>
- #include <conio.h>
-
- struct {
- char Rshift : 1;
- char Lshift : 1;
- char Ctrl : 1;
- char Alt : 1;
- char ScrollLock : 1;
- char NumLock : 1;
- char CapsLock : 1;
- char Insert : 1;
- } far *bit_var;
-
- void main(void)
- {
- (long)bit_var=0x0040*65536+0x0017; //ez a byte a 40h-es szegmens 17h-edik offszettjen van
-
- clrscr();
-
- //villoggyunk & nézzük a billentyûket
- while(!kbhit())
- {
- gotoxy(1,1);
- if (bit_var->Rshift)
- printf("Rshift pressed \n");
- else printf("Rshift not pressed\n");
- if (bit_var->Lshift)
- printf("Lshift pressed \n");
- else printf("Lshift not pressed\n");
- if (bit_var->Ctrl)
- printf("Ctrl is on \n");
- else printf("Ctrl is off\n");
- if (bit_var->Alt)
- printf("Alt pressed \n");
- else printf("Alt not pressed\n");
- if (bit_var->ScrollLock)
- printf("ScrollLock is on \n");
- else printf("ScrollLock is off\n");
- if (bit_var->NumLock)
- printf("NumLock is on \n");
- else printf("NumLock is off\n");
- if (bit_var->CapsLock)
- printf("CapsLock is on \n");
- else printf("CapsLock is off\n");
- if (bit_var->Insert)
- printf("Insert is on \n");
- else printf("Insert is off\n");
-
- bit_var->NumLock=1;
- bit_var->CapsLock=0;
- bit_var->ScrollLock=0;
- outportb(0x60,0xEE); //kikudunk valamit a bilentyuzeportra, hogy eszrevegye a valtozast
- delay(100);
- bit_var->NumLock=0;
- bit_var->CapsLock=1;
- bit_var->ScrollLock=0;
- outportb(0x60,0xEE); //kikudunk valamit a bilentyuzeportra, hogy eszrevegye a valtozast
- delay(100);
- bit_var->NumLock=0;
- bit_var->CapsLock=0;
- bit_var->ScrollLock=1;
- outportb(0x60,0xEE); //kikudunk valamit a bilentyuzeportra, hogy eszrevegye a valtozast
- delay(100);
- }
-
- getch();
- }