Pascal/Turbo Pascal - Ayuda con las teclas especiales del teclado

 
Vista:

Ayuda con las teclas especiales del teclado

Publicado por soulblazer (19 intervenciones) el 17/09/2013 23:00:05
Estoy creando un programa que permite utilizar las teclas direccionales del teclado (arriba, abajo, izquierda y derecha) para mover una figura en pantalla, pero esas teclas no tienen ASCII (ojo, no me refiero a los simbolitos ASCII de flechitas ni nada de eso, me refiero a los botones reales del teclado).
Sé que las teclas devuelven primero un 0 para indicar que no hay código ASCII real, y luego el código de la tecla (72 para arriba, 80 para abajo, etc), pero no sé como implementarlo.

Cualquier ayuda, cursos, ejemplos,... se apreciarán. Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Ayuda con las teclas especiales del teclado

Publicado por Christian (8 intervenciones) el 18/09/2013 04:38:57
Ok, hace tiempo hice un programa que utilizaba menus controlado por teclas especiales que si mas lo recuerdo tenía la siguiente base, espero te sirva. Saludos!!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Program Teclado;
Uses crt;
Var
   Car : Array[0..1] of char;
 
Begin
     car[0]:=chr(0);
     clrscr;
     writeln('presiona teclas [ESC] para salir');
     while car[0]<>chr(27) do
     Begin
          repeat until keypressed;
          car[0]:=readkey;
          if car[0]<>chr(0) then writeln(car[0])
          else
          begin
               car[1]:=readkey;
               write('[Especial]');writeln(car[1]);
          end;
     End;
End.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con las teclas especiales del teclado

Publicado por ramon (2158 intervenciones) el 18/09/2013 12:55:51
{Mira esto evitara que al pulsar las letras [K, M, H, P] se tomen como flechas o sea derecha,
izquierda, arriba, abajo}

program teclas2;
uses
crt;
var
tecla : word;
nx, ny, px, py : integer;

function tecla_pulsada : word;
var
te : char;
vad : word;
begin
te := readkey;
if te = #0 then
vad := word(ord(readkey)) shl 8
else
vad := ord(te);
tecla_pulsada := vad;
end;

procedure mueve(anx, any, x, y : integer);
begin
gotoxy(anx,any);write(' ');
gotoxy(x,y);write('*');
end;


begin
px := 1;
py := 1;
nx := 1;
ny := 1;
clrscr;
repeat
mueve(nx, ny, px, py);
nx := px;
ny := py;
tecla := tecla_pulsada;
if tecla = 18432 then
begin
py := py - 1;
if py < 1 then
py := 1;
end;
if tecla = 20480 then
begin
py := py + 1;
if py > 24 then
py := 24;
end;
if tecla = 19200 then
begin
px := px - 1;
if px < 1 then
px := 1;
end;
if tecla = 19712 then
begin
px := px + 1;
if px > 79 then
px := 79;
end;
until tecla = 27;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar