kbd1.pp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. program kbd1;
  2. uses
  3. keyboard;
  4. procedure ShowASCIIKey(C: AnsiChar);
  5. begin
  6. Write('ASCII key #', Ord(C), ' - #$', HexStr(Ord(C), 2));
  7. if C = '''' then
  8. Write(' - ''''''''')
  9. else if (C >= #32) and (C <= #126) then
  10. Write(' - ''', C, '''')
  11. else if C < #32 then
  12. Write(' - ^', Chr(Ord(C) + Ord('@')));
  13. Writeln;
  14. end;
  15. procedure ShowUnicodeKey(WC: WideChar);
  16. begin
  17. Writeln('Unicode key #', Ord(WC));
  18. end;
  19. procedure ShowKeyEvent(K: TKeyEvent);
  20. begin
  21. case GetKeyEventFlags(K) and 3 of
  22. kbASCII:
  23. ShowASCIIKey(GetKeyEventChar(K));
  24. kbUniCode:
  25. ShowUnicodeKey(WideChar(GetKeyEventUniCode(K)));
  26. kbFnKey:
  27. Writeln('Function key ', FunctionKeyName(GetKeyEventCode(K)));
  28. kbPhys:
  29. Writeln('Physical key ', K and $FFFF, ' - $' + HexStr(K and $FFFF, 4));
  30. end;
  31. Writeln('Shift state: ', ShiftStateToString(K, True));
  32. if (GetKeyEventFlags(K) and kbReleased) <> 0 then
  33. Writeln('Released key event');
  34. end;
  35. var
  36. K: TKeyEvent;
  37. begin
  38. InitKeyboard;
  39. Writeln('Press keys, press "q" to end.');
  40. repeat
  41. K:=GetKeyEvent;
  42. Write('Before translation: ');
  43. ShowKeyEvent(K);
  44. K:=TranslateKeyEvent(K);
  45. Write('After translation: ');
  46. ShowKeyEvent(K);
  47. until (GetKeyEventChar(K)='q');
  48. DoneKeyboard;
  49. end.