hi,
wie ließt man bei Turbo Pascal Alt und Strg und Pfeiltasten [...] ein?
In Der Kürze Liegt Die Würze...
Gruß KoRny Boy
Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge
Hi!
Da muss man unterscheiden. Die Pfeiltasten verhalten sich fast wie normale Tasten, nur handelt es sich hier um Sondertasten, die einen Code aus zwei Zeichen mit readkey() zurückgeben:
program getkey;
uses crt;
var c:char;
begin
repeat
repeat until keypressed;
c:=readkey;
writeln('Zeichen : [',c,'] Code: ',ord(c));
until c=#27;
end.
Wie man sehen kann senden diese Sondertasten zuerst eine Null und dann einen Tastencode.
Bei den Steuertasten Alt, Umschalt und Strg ist es komplizierter. Die kann man nicht direkt abfragen, dass geht IMHO nur über Verwendung des Tastatur-BIOS-Interrupts (Int$16). Laut meinem "PC Intern 4" muss man dazu im AH-Register den Wert $02 übergeben. Die BIOS-Funktion liefert dann ein Statusbyte in AL zurück, dass auskunft über gedruckte Tasten gibt. Ich denke Ralf Browns Interruptliste wird hier die nötigen Details liefern, so dass ich das Buch nciht abtippen brauche. ;-)
Gerade entdeckt: ein Beispiel für die Umschakttasten hab' ich:
function leftshift:boolean;
var r:registers;
begin
r.ah:=$02;
intr($16,r);
if (r.al and 2)=2 then leftshift:=true
else leftshift:=false;
end;
function rightshift:boolean;
var r:registers;
begin
r.ah:=$02;
intr($16,r);
if (r.al and 1)=1 then rightshift:=true
else rightshift:=false;
end;
Hier die Liste der Bit-Werte:
1: rechte Shift
2: linke Shift
4: Ctrl
8: Alt
16:Scroll-Lock
32:Num-Lock
64:Caps-Lock
128:Insert an
Bis dann
Andreas
s. Überschrift.
Gruß
KoRny Boy