slm;
bu tuş konusunda bazı açıklamalar yapmam gerekiyor.
fonksiyon tuşlarını direk koduyla kullanamıyorsunuz.
kullanımı ile ilgili iki tane ornek program yazcam .
yalnız bazı açıklamalar yapmam lazım.
Size eksik kalan bazı kodlarıda yazayım.
#7 beep
#8 backspace
#71 home
#73 pageup
#79 end
#82insert
#83 delete
#81 pagedown
onksiyon tuşlarının asıl kodunun başında birde #0 vardır.
Daha sonra orneklere ekliycem ama şimdi size bir kopyasını yazdığım
bu programla fonksiyon tuşu olup olmadığını anlarsınız ve hafiften kodları
da veriyor.
uses crt;
var
kr:char;
begin
clrscr;
writeln('bir tusa basiniz');
repeat
kr:=readkey;
if kr=#0 then
begin
kr:=readkey;
writeln('( Fonksiyon tusu )',ord(kr));
end
else
writeln(ord(kr));
until kr=#27;
end.
burdaki kodu biraz inceleyin.
Çalıştırdığınızda bastığınız karakterin kodunu verir.
Fonksiyon tuşuysa belirtir.
Fonksiyon tuşlarının üstüne bukadar düşmemin sebebi aynı koda sahip başka
ascii karakterlenin olması.
size şimdide fonksiyon tuşunu kullanımına bir örnek yazıyorum.
uses crt;
var
a,b:char;
c:string;
function basilantus(kr:char):string;
begin
if kr=#0 then
begin
c:=";
kr:=readkey;
CASE kr of
#75: c:='Sol ok tusu';
#77: c:='Sag ok tusu';
#80: c:='Asagi ok tusu';
#72: c:='yukari ok tusu';
#59: c:='F1 Tusu';
#60: c:='F2 Tusu';
#61: c:='F3 Tusu';
#62: c:='F4 Tusu';
#63: c:='F5 Tusu';
#64: c:='F6 Tusu';
#65: c:='F7 Tusu';
#66: c:='F8 Tusu';
#67: c:='F9 Tusu';
#68: c:='F10 Tusu';
end
else c:=kr;
basilantus:=c;
end;
begin
clrscr;
writeln('Bir tusa basiniz');
repeat
a:=readkey;
clrscr;
writeln(basilantus(a));
until a=#27;
end.
Bu ornekte bir kaçtane ornek tuş var.
Capslook , ins , shift gibi tuşlar için
daha ozel bir koda ihtiyac vaR.
uses crt,dos;
var
cikis:boolean;
procedure ozeltuslar;
function ins_tusu:boolean;
begin
ins_tusu:=((mem[000:$417] and 128) <> 0);
end;
function num_tusu:boolean;
begin
num_tusu:=((mem[000:$417] and 32) <> 0);
end;
function caps_tusu:boolean;
begin
caps_tusu:=((mem[000:$417] and 64) <> 0);
end;
function shift_tusu:boolean;
begin
shift_tusu:=((mem[000:$417] and 3) <> 0);
end;
begin
if num_tusu then mem[$B800:100 +312]:=ord('N')
else mem[$B800:100 +312]:=32;
if ins_tusu then mem[$B800:100 +314]:=ord('I')
else mem[$B800:100 +314]:=32;
if caps_tusu then mem[$B800:100 +316]:=ord('C')
else mem[$B800:100 +316]:=32;
if shift_tusu then mem[$B800:100 +318]:=ord('S')
else mem[$B800:100 +318]:=32;
end;
begin
clrscr;
write('Cikis icin ');
cikis:=false;
repeat
ozeltuslar;
if keypressed and (readkey=#13) then cikis:=true;
until cikis;
end.
(
Ömer akgöbek in turbo pascal ve programlama sanatı
kitabı sayfa :465
)
Yukardaki kodu çalıştırınca capslook , numlook , shift ve ins ozel tuşlarının
durumunu öğrenebildiğimizi görceksiniz.
Yaptığınız projeye gore bu kodları düzenleyebilirsiniz.