Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge

TurbpPascal -> tasten wie Alt oder Strg einlesen ? ? ?

KoRny Boy / 2 Antworten / Baumansicht Nickles

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

Wer anderen eine Grube gräbt ist selbst ein Schwein
bei Antwort benachrichtigen
Andreas42 KoRny Boy „TurbpPascal -> tasten wie Alt oder Strg einlesen ? ? ?“
Optionen

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

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen
KoRny Boy Andreas42 „Hi! Da muss man unterscheiden. Die Pfeiltasten verhalten sich fast wie normale...“
Optionen

s. Überschrift.

Gruß
KoRny Boy

Wer anderen eine Grube gräbt ist selbst ein Schwein
bei Antwort benachrichtigen