Jak sprawdzić czy 2 klawisze sa wcisniete

0

Witam.
Chciałbym Was zapytać jak sprawdzićw delphi czy np strzałka w dół i prawo jest wcisnieta.
Tylko nie przez onkeydown tylko w aplikacji konsolowej
Pozdrawiam :)

0

Kody klawiszy:
Strzałka w górę: #72
Strzałka na dół: #80
Strzałka w prawo: #77
Strzałka w lewo: #75

Możesz także sprawdzić inne kody klawiszy tym prostym programem:

program chrcode;
uses crt;
var
  z:char;
begin
  clrscr;
  repeat
    z:=Readkey;
    z:=Readkey;
    writeln(z,' ',ord(z));
  until z=#27;
end.

A jeśli chodzi o wciśnięcie dwóch klawiszy i są to właśnie strzałki to sprawa jest skomplikowana, ale da się z niej wyjść. Otóż kombinacja dwóch klawiszy (oprócz Shift, Control oraz Alt) to po prostu wprowadzenie dwóch znaków. Teraz sprawa jest prosta:)

program check_key;
uses crt;
var
  z,s:char;
begin
  clrscr;
    repeat
      s:=Readkey;
      s:=Readkey;
      z:=Readkey;
      z:=Readkey;
        if (z=#72) and (s=#80)
        or (z=#80) and (s=#72) then
          begin
            writeln('Nacisnales Strzalki: Gora i Dol!');
          end;
    until z=#13;
end.

Oczywiście, że trzeba się napisać, ale ja tu innego wyjścia nie widze, może dlatego że nie chce mi się myśleć?

0
{$APPTYPE CONSOLE}

uses Windows;

function IsKeyPressed(vKey:integer):boolean;
begin
result:=(GetAsyncKeyState(vKey) and $8000>0);
end;

begin
WriteLn('[ESCAPE] - zakonczenie');
WriteLn('[->]+[/\] - wypisanie *');
WriteLn('[<-]+[\/] - wypisanie .');
WriteLn('');
  repeat
  if (IsKeyPressed(VK_UP) and IsKeyPressed(VK_RIGHT)) then
    Write('*');
  if (IsKeyPressed(VK_DOWN) and IsKeyPressed(VK_LEFT)) then
    Write('.');
  Sleep(50);
  until IsKeyPressed(VK_ESCAPE);
end.

1 użytkowników online, w tym zalogowanych: 0, gości: 1