Browse Source

* PollKeyEvent implemented

Tomas Hajny 25 years ago
parent
commit
7d72f3610b
1 changed files with 16 additions and 12 deletions
  1. 16 12
      api/os2/keyboard.inc

+ 16 - 12
api/os2/keyboard.inc

@@ -83,35 +83,39 @@ begin
 end;
 
 function PollKeyEvent: TKeyEvent;
+var
+ K: TKbdKeyInfo;
 begin
- if PendingKeyEvent <> 0 then PollKeyEvent := PendingKeyEvent else
+ if PendingKeyEvent = 0 then
  begin
-{  regs.ah:=$11;
-  realintr($16,regs);
-  if (regs.realflags and zeroflag<>0) then
-   exit(0);
-  if (regs.al=$e0) and (regs.ah<>0) then
-   regs.al:=0;
-  PollKeyEvent:=regs.ax or ((mem[$40:$17] and $f) shl 16);
-}
+  KbdGetFocus (IO_NoWait, Handle);
+  if (KbdCharIn (K, IO_NoWait, Handle) <> NoError) or
+       (K.fbStatus and $40 = 0) then FillChar (K, SizeOf (K), 0) else
+            with K do PendingKeyEvent := cardinal (fsState or $F) shl 16 or
+                               cardinal (byte (chScan)) shl 8 or byte (chChar);
  end;
+ PollKeyEvent := PendingKeyEvent;
+ if PendingKeyEvent and $FFFF = 0 then PendingKeyEvent := 0;
 end;
 
 function PollShiftStateEvent: TKeyEvent;
 begin
 end;
 
-function TranslateKeyEvent(KeyEvent: TKeyEvent): TKeyEvent;
+function TranslateKeyEvent (KeyEvent: TKeyEvent): TKeyEvent;
 begin
 end;
 
-function TranslateKeyEventUniCode(KeyEvent: TKeyEvent): TKeyEvent;
+function TranslateKeyEventUniCode (KeyEvent: TKeyEvent): TKeyEvent;
 begin
 end;
 
 {
   $Log$
-  Revision 1.2  2000-01-09 20:42:05  hajny
+  Revision 1.3  2000-03-19 11:29:07  hajny
+    * PollKeyEvent implemented
+
+  Revision 1.2  2000/01/09 20:42:05  hajny
     + the first part of implementation
 
   Revision 1.1  2000/01/06 01:20:31  peter