Klaviaturani boshkarish
Skanirlash kodi, begili tugmachalar, boshkaruv tugmachalari, kengaytirilgan kod, ReadKey, KeyPressed, surish tugmachalari,
Standart klaviaturalarda uch tipdagi tugmachalar mavjud:
belgili (xarflar, sonlar);
boshkaruv (funksional tugmachalar, kursorni surish, kushish, yukotish va bokalar);
surish Ctrl, Alt, NumLock, CapsLock va boshkalar.
Biror -bir tugmacha bosilganda klaviatura mikroprotsessori shaxsiy kompyuterlar standartiga mos kodni tanlaydi va bu kod Turbo Pascal sistemasida skanerlash kodiga aylantiriladi. Skanerlash kodini analiz qilish mumkin va u klaviaturani boshqarish algoritmining asosi xisoblanadi.
Belgili tugmachalar bosilganda bittagina qiymatni qaytaradi va bu qiymat oddiy kod deb aytiladi.
Boshkarish klaishalari bosilganda ikkita qiymatni qaytaradi , ulardan birinchisi 0 (mana shu boshqarish klavishvsining xususiyatiga kiradi), ikinchisi esa- tugmacha bosilgandagi kattalik. Maxsus tugmachalarning qaytarish kodlarini kengaytirilgan deb qabul qilinadi. Klaviaturani boshqarish CRT modulining maxsus ReadKey va KeyPressed funksiyalari yordamida bajariladi..
ReadKey funksiyasi belgilarni klaviaturadan o’chib, Char tipidagi qiymatlarni qaytaradi.
KeyPressed. funksiyasi biron tugmacha bosilganda True ni, aks xolda False ni kaytaradi.
Belgili va boshqarish klavishlarini skanerlash kodlarini quyidagi misolda ko’rib chiqamiz.
PROGRAM DemoScanCode;
USES Crt;
CONST
Null = #0;
Esc = #27;
F1 = #59;
F10 = #68;
InsKey = #82;
VAR
ExtendKey: boolean;
Ch: char;
FUNCTION GetKey: char;
{ funksiya klavish bosilishini kutib turadi }
VAR
Ch: char;
BEGIN
ExtendKey:= False;
Ch:= ReadKey;
IF Ch = Null THEN BEGIN
ExtendKey:= True;
Ch:= ReadKey
END;
GetKey:= Ch
END; { GetKey }
BEGIN { DemoScanCode }
ClrScr;
REPEAT
Ch := GetKey;
IF NOT ExtendKey THEN
Writeln('Kodli belgi tugmachasi bosilgan ', byte(Ch))
ELSE
CASE Ch OF
F1..F10 : Writeln(' Funksional klavish bosilgan');
InsKey : Writeln(' bosilgan')
ELSE Writeln('Kengaytirilgan kod #00+', byte(Ch));
END; { case }
UNTIL (Ch <> Esc);
END. { DemoScanCode }
|
Endi siljish tugmachasini qanday ishlashini ko’rib chiqamiz. Misol tariqasida SIF (NumLock) klavishini ko’rib chiqamiz.
Agar baytlarni 0 dan 7 gacha bitlar yigindisi deb qaralsa, NumLock ga $0000:$0417 absalyut adresli baytning 5- biti to’g’ri keladi. NumLock klavishining ishlash dasturi quyidagicha:
PROGRAM DemoNumLock;
USES Crt;
CONST
Esc = #27;
VAR
Ch : char;
ShiftByte: byte absolute $0000:$0417;
BEGIN
REPEAT
IF KeyPressed THEN
Ch:= ReadKey;
IF ShiftByte AND $20 <> 0 THEN
Write(' NumLock tugmachasi bosilgan');
UNTIL Ch <> Esc;
END. { DemoNumLock }
|
Do'stlaringiz bilan baham: |