kbd2.pp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. program kbd2;
  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. end;
  14. procedure ShowUnicodeKey(WC: WideChar);
  15. begin
  16. Write('Unicode key #', Ord(WC));
  17. end;
  18. function EnhancedShiftStateToString(const ShiftState: TEnhancedShiftState): shortstring;
  19. var
  20. S: TEnhancedShiftStateElement;
  21. FirstElement: Boolean = True;
  22. begin
  23. EnhancedShiftStateToString := '[';
  24. for S in TEnhancedShiftStateElement do
  25. if S in ShiftState then
  26. begin
  27. if FirstElement then
  28. WriteStr(EnhancedShiftStateToString, EnhancedShiftStateToString, S)
  29. else
  30. WriteStr(EnhancedShiftStateToString, EnhancedShiftStateToString, ',', S);
  31. FirstElement := False;
  32. end;
  33. EnhancedShiftStateToString := EnhancedShiftStateToString + ']';
  34. end;
  35. procedure ShowKeyEvent(const K: TEnhancedKeyEvent);
  36. begin
  37. ShowASCIIKey(K.AsciiChar);
  38. Write(', ');
  39. ShowUnicodeKey(K.UnicodeChar);
  40. Write(', Virtual Scan Code ', K.VirtualScanCode, ' - $' + HexStr(K.VirtualScanCode, 4),
  41. ', Function key ', FunctionKeyName(K.VirtualKeyCode),
  42. ', Shift state: ', EnhancedShiftStateToString(K.ShiftState));
  43. Writeln;
  44. end;
  45. var
  46. K: TEnhancedKeyEvent;
  47. begin
  48. InitKeyboard;
  49. Writeln('Press keys, press "q" to end.');
  50. repeat
  51. K:=GetEnhancedKeyEvent;
  52. ShowKeyEvent(K);
  53. until K.AsciiChar='q';
  54. DoneKeyboard;
  55. end.