home *** CD-ROM | disk | FTP | other *** search
/ PC-X 1998 March / pcx19_9803.iso / PC-XUSER / PC-XUSER.10 / ABC / VILL.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1997-10-06  |  3.0 KB  |  98 lines

  1. /*
  2. {*********************************************************}
  3. {                                                         }
  4. {   A program forráskódja az IDG - PCX szerkesztôségének, }
  5. {   és Kimmel Tamás-nak a tulajdona.                      }
  6. {   A forráskód a kereskedelmi célokat kivéve szabadon    }
  7. {                    terjeszthetô !                       }
  8. {                                                         }
  9. {   PC-X User (c) 1997, november                          }
  10. {*********************************************************}
  11.  
  12.  A BIOS a LED-ek állapotát (vagyis inkább a ScrollLock, NumLock és
  13.  CapsLock állapotát, de ez most mindegy) a hex 0040:0017 bájton.
  14.  E bájt felépítése:
  15.  
  16.  0. bit == 1, ha a jobb oldali Shift lenyomva
  17.  1. bit            bal oldali Shift lenyomva
  18.  2. bit            Ctrl lenyomva
  19.  3. bit            Alt lenyomva
  20.  4. bit            ScrollLock bekapcsolva
  21.  5. bit            NumLock bekapcsolva
  22.  6. bit            CapsLock bekapcsolva
  23.  7. bit            Insert bekapcsolva (ezt is figyeli!?)
  24.  
  25.  Ezt a bájtot variáljuk és így lehet villogtatni stb. (Ki gondolta
  26.  volna...)
  27. */
  28.  
  29.  
  30. #include <stdio.h>
  31. #include <dos.h>
  32. #include <conio.h>
  33.  
  34. struct {
  35.   char Rshift        : 1;
  36.   char Lshift        : 1;
  37.   char Ctrl          : 1;
  38.   char Alt           : 1;
  39.   char ScrollLock    : 1;
  40.   char NumLock       : 1;
  41.   char CapsLock      : 1;
  42.   char Insert        : 1;
  43. } far *bit_var;
  44.  
  45. void main(void)
  46. {
  47.  (long)bit_var=0x0040*65536+0x0017;  //ez a byte a 40h-es szegmens 17h-edik offszettjen van
  48.  
  49.  clrscr();
  50.  
  51.  //villoggyunk & nézzük a billentyûket
  52.  while(!kbhit())
  53.  {
  54.   gotoxy(1,1);
  55.   if (bit_var->Rshift)
  56.          printf("Rshift pressed    \n");
  57.     else printf("Rshift not pressed\n");
  58.   if (bit_var->Lshift)
  59.          printf("Lshift pressed    \n");
  60.     else printf("Lshift not pressed\n");
  61.   if (bit_var->Ctrl)
  62.          printf("Ctrl is on \n");
  63.     else printf("Ctrl is off\n");
  64.   if (bit_var->Alt)
  65.          printf("Alt pressed    \n");
  66.     else printf("Alt not pressed\n");
  67.   if (bit_var->ScrollLock)
  68.          printf("ScrollLock is on \n");
  69.     else printf("ScrollLock is off\n");
  70.   if (bit_var->NumLock)
  71.          printf("NumLock is on \n");
  72.     else printf("NumLock is off\n");
  73.   if (bit_var->CapsLock)
  74.          printf("CapsLock is on \n");
  75.     else printf("CapsLock is off\n");
  76.   if (bit_var->Insert)
  77.          printf("Insert is on \n");
  78.     else printf("Insert is off\n");
  79.  
  80.   bit_var->NumLock=1;
  81.   bit_var->CapsLock=0;
  82.   bit_var->ScrollLock=0;
  83.   outportb(0x60,0xEE);  //kikudunk valamit a bilentyuzeportra, hogy eszrevegye a valtozast
  84.   delay(100);
  85.   bit_var->NumLock=0;
  86.   bit_var->CapsLock=1;
  87.   bit_var->ScrollLock=0;
  88.   outportb(0x60,0xEE); //kikudunk valamit a bilentyuzeportra, hogy eszrevegye a valtozast
  89.   delay(100);
  90.   bit_var->NumLock=0;
  91.   bit_var->CapsLock=0;
  92.   bit_var->ScrollLock=1;
  93.   outportb(0x60,0xEE); //kikudunk valamit a bilentyuzeportra, hogy eszrevegye a valtozast
  94.   delay(100);
  95.  }
  96.  
  97.  getch();
  98. }