Преглед изворни кода

* handle sequences that return both char and scan code

git-svn-id: branches/unicodekvm@41510 -
nickysn пре 6 година
родитељ
комит
0f1a20b8a4
1 измењених фајлова са 3 додато и 9 уклоњено
  1. 3 9
      packages/rtl-console/src/unix/keyboard.pp

+ 3 - 9
packages/rtl-console/src/unix/keyboard.pp

@@ -1495,17 +1495,11 @@ begin
               k.VirtualScanCode := 0;
               PushKey(k);
             end
-          else if NPT^.CharValue<>0 then
+          else if (NPT^.CharValue<>0) or (NPT^.ScanValue<>0) then
             begin
               k.AsciiChar := chr(NPT^.CharValue);
-              k.VirtualScanCode := Ord(k.AsciiChar);
-              PushKey(k);
-            end
-          else if NPT^.ScanValue<>0 then
-            begin
-              k.AsciiChar := #0;
-              k.UnicodeChar := WideChar(#0);
-              k.VirtualScanCode := NPT^.ScanValue shl 8;
+              k.UnicodeChar := WideChar(NPT^.CharValue);
+              k.VirtualScanCode := (NPT^.ScanValue shl 8) or Ord(k.AsciiChar);
               PushKey(k);
             end;
         end