program tstkey; {проверка модуля keyboard и клавиатуры}
uses keyboard;
{наименования клавиш}
const ss : array[1..96] of string[3] =
(?Esc?,? 1 ?,? 2 ?,? 3 ?,? 4 ?,? 5 ?,? 6 ?,? 7 ?, { 8}
? 8 ?,? 9 ?,? 0 ?,? - ?,? = ?,?Bsk?,?Tab?,? Q ?, {16}
? W ?,? E ?,? R ?,? T ?,? Y ?,? U ?,? I ?,? O ?, {24}
? P ?,? [ ?,? ] ?,?Ent?,?Ctr?,? A ?,? S ?,? D ?, {32}
? F ?,? G ?,? H ?,? J ?,? K ?,? L ?,? ; ?,? ? ?, {40}
? ~ ?,?ShL?,? ?,? Z ?,? X ?,? C ?,? V ?,? B ?, {48}
? N ?,? M ?,? , ?,?pnt?,? / ?,?ShR?,? * ?,?Alt?, {56}
?Spc?,?CpL?,?F1 ?,?F2 ?,?F3 ?,?F4 ?,?F5 ?,?F6 ?, {64}
?F7 ?,?F8 ?,?F9 ?,?F10?,?NmL?,?ScL?,?Hom?,? Up?, {72}
?PUp?,?Gr-?,?Lft?,??5??,?Rgh?,?Gr+?,?End?,?Dwn?, {80}
?PDn?,?Ins?,?Del?,?APS?,?CtR?,?AlR?,?F11?,?F12?, {88}
? ?,? ?,?WlL?,?WlR?,?WA ?,? ?,? ?,? ?);{96}
var
i,j : integer;
scr : array[0..24,0..79,0..1]of char
absolute $B800:0;{Экран}
s : string;
procedure DrawKeys; {отображение нажатых клавиш}
begin
repeat
for j := 0 to 5 do
for i := 0 to 15 do
if key[i+j*16] then begin
scr[1+j*2,1+i*4-1,0] := ss[i+j*16][1];
scr[1+j*2,1+i*4 ,0] := ss[i+j*16][2];
scr[1+j*2,1+i*4+1,0] := ss[i+j*16][3];
end else begin
scr[1+j*2,1+i*4-1,0] := ? ?;
scr[1+j*2,1+i*4 ,0] := ?.?;
scr[1+j*2,1+i*4+1,0] := ? ?;
end;
until key[1] and key[2]; {выход по ?Esc+1?}
end;
begin
for j := 0 to 24 do
for i := 0 to 79 do
scr[j,i,0] := ? ?; {очистка экрана}
write(? Для завершения программы одновременно?);
writeln(? нажмите Esc и 1?);
DrawKeys;
SetStandardInt; {восстановление стандартного ввода}
writeln(?Введите строку?);
readln(s); {ввод стандартными средствами}
SetMyInt; {снова собственный обработчик}
write(? Для завершения программы одновременно?);
writeln(? нажмите Esc и 1?);
DrawKeys;
end.