Program KeyCodes;
uses crt;
var
 a: char;
begin
 while KeyPressed do a:=ReadKey;
 repeat
 a:=ReadKey;
 if ord(a)=0 then
 begin
 write('0':2);
 a:=ReadKey;
 writeln(ord(a):11);
 writeln;
 end else
 begin
 writeln(a:8, ord(a): 5);
 writeln
 end;
 until a='1';
end.

В этой программе прежде всего освобождается буфер клавиатуры.

while KeyPressed do a:=ReadKey

После этого организуется цикл REPEAT, в теле которого определяется, что собой представляет данный код - простой он или расширенный (расширенный код начинается с нуля). И в соответствии с типом кода организуется его вывод на экран в удобном формате. В окне Output в первом столбце отображается нуль, если это расширенный код. И вот что отображается в третьем столбце:

-если это простой код - ASCII-код данного символа;

-если это расширенный код клавиши (в случае если данная клавиша генерирует расширенный код) - скэн-код данной клавиши;

-если это расширенный код комбинации клавиш - номер данной комбинации.

В программе условием прекращения цикла является нажатие клавиши <1> (единица). Однако если потребуется определить, какой код соответствует этой клавише, символ в условии можно заменить на любой другой.

(Скэн-код - код, присвоенный каждой клавише, с помощью которого драйвер клавиатуры распознает, какая клавиша была нажата.)


2012-06-09 • Просмотров [ 1340 ]