Browse Source

+ added test, that reads enhanced keyboard events

git-svn-id: branches/unicodekvm@40329 -
nickysn 6 years ago
parent
commit
7b880b2eee
2 changed files with 62 additions and 0 deletions
  1. 1 0
      .gitattributes
  2. 61 0
      packages/rtl-console/tests/kbd2.pp

+ 1 - 0
.gitattributes

@@ -7448,6 +7448,7 @@ packages/rtl-console/tests/fpc-3.0.4-win64/us101-us-rctrl.dmp svneol=native#text
 packages/rtl-console/tests/fpc-3.0.4-win64/us101-us-rshift.dmp svneol=native#text/plain
 packages/rtl-console/tests/fpc-3.0.4-win64/us101-us-rshift.dmp svneol=native#text/plain
 packages/rtl-console/tests/fpc-3.0.4-win64/us101-us.dmp svneol=native#text/plain
 packages/rtl-console/tests/fpc-3.0.4-win64/us101-us.dmp svneol=native#text/plain
 packages/rtl-console/tests/kbd1.pp svneol=native#text/plain
 packages/rtl-console/tests/kbd1.pp svneol=native#text/plain
+packages/rtl-console/tests/kbd2.pp svneol=native#text/plain
 packages/rtl-console/tests/kbdbdump.pp svneol=native#text/x-pascal
 packages/rtl-console/tests/kbdbdump.pp svneol=native#text/x-pascal
 packages/rtl-console/tests/kbddump.pp svneol=native#text/plain
 packages/rtl-console/tests/kbddump.pp svneol=native#text/plain
 packages/rtl-console/tests/kbdtest.pp svneol=native#text/plain
 packages/rtl-console/tests/kbdtest.pp svneol=native#text/plain

+ 61 - 0
packages/rtl-console/tests/kbd2.pp

@@ -0,0 +1,61 @@
+program kbd2;
+
+uses
+  keyboard;
+
+procedure ShowASCIIKey(C: Char);
+begin
+  Write('ASCII key #', Ord(C), ' - #$', HexStr(Ord(C), 2));
+  if C = '''' then
+    Write(' - ''''''''')
+  else if (C >= #32) and (C <= #126) then
+    Write(' - ''', C, '''')
+  else if C < #32 then
+    Write(' - ^', Chr(Ord(C) + Ord('@')));
+end;
+
+procedure ShowUnicodeKey(WC: WideChar);
+begin
+  Write('Unicode key #', Ord(WC));
+end;
+
+function EnhancedShiftStateToString(const ShiftState: TEnhancedShiftState): string;
+var
+  S: TEnhancedShiftStateElement;
+  FirstElement: Boolean = True;
+begin
+  EnhancedShiftStateToString := '[';
+  for S in TEnhancedShiftStateElement do
+    if S in ShiftState then
+    begin
+      if FirstElement then
+        WriteStr(EnhancedShiftStateToString, EnhancedShiftStateToString, S)
+      else
+        WriteStr(EnhancedShiftStateToString, EnhancedShiftStateToString, ',', S);
+      FirstElement := False;
+    end;
+  EnhancedShiftStateToString := EnhancedShiftStateToString + ']';
+end;
+
+procedure ShowKeyEvent(const K: TEnhancedKeyEvent);
+begin
+  ShowASCIIKey(K.AsciiChar);
+  Write(', ');
+  ShowUnicodeKey(K.UnicodeChar);
+  Write(', Virtual Scan Code ', K.VirtualScanCode, ' - $' + HexStr(K.VirtualScanCode, 4),
+    ', Function key ', FunctionKeyName(K.VirtualKeyCode),
+    ', Shift state: ', EnhancedShiftStateToString(K.ShiftState));
+  Writeln;
+end;
+
+var
+  K: TEnhancedKeyEvent;
+begin
+  InitKeyboard;
+  Writeln('Press keys, press "q" to end.');
+  repeat
+    K:=GetEnhancedKeyEvent;
+    ShowKeyEvent(K);
+  until K.AsciiChar='q';
+  DoneKeyboard;
+end.