summaryrefslogtreecommitdiff
path: root/rtl/go32v2/keyboard.pp
diff options
context:
space:
mode:
Diffstat (limited to 'rtl/go32v2/keyboard.pp')
-rw-r--r--rtl/go32v2/keyboard.pp83
1 files changed, 83 insertions, 0 deletions
diff --git a/rtl/go32v2/keyboard.pp b/rtl/go32v2/keyboard.pp
new file mode 100644
index 0000000000..5766d1cdc0
--- /dev/null
+++ b/rtl/go32v2/keyboard.pp
@@ -0,0 +1,83 @@
+{
+ $Id: keyboard.pp,v 1.5 2005/02/14 17:13:22 peter Exp $
+ This file is part of the Free Pascal run time library.
+ Copyright (c) 1999-2000 by Florian Klaempfl
+ member of the Free Pascal development team
+
+ Keyboard unit for go32v2
+
+ See the file COPYING.FPC, included in this distribution,
+ for details about the copyright.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ **********************************************************************}
+unit Keyboard;
+interface
+
+{$i keybrdh.inc}
+
+implementation
+
+uses
+ go32;
+
+{$i keyboard.inc}
+
+
+function SysGetKeyEvent: TKeyEvent;
+
+var
+ regs : trealregs;
+begin
+ regs.ah:=$10;
+ realintr($16,regs);
+ if (regs.al=$e0) and (regs.ah<>0) then
+ regs.al:=0;
+ SysGetKeyEvent:=(kbPhys shl 24) or regs.ax or ((mem[$40:$17] and $f) shl 16);
+end;
+
+
+function SysPollKeyEvent: TKeyEvent;
+var
+ regs : trealregs;
+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;
+ SysPollKeyEvent:=(kbPhys shl 24) or regs.ax or ((mem[$40:$17] and $f) shl 16);
+end;
+
+
+function SysGetShiftState: Byte;
+begin
+ SysGetShiftState:=(mem[$40:$17] and $f);
+end;
+
+
+Const
+ SysKeyboardDriver : TKeyboardDriver = (
+ InitDriver : Nil;
+ DoneDriver : Nil;
+ GetKeyevent : @SysGetKeyEvent;
+ PollKeyEvent : @SysPollKeyEvent;
+ GetShiftState : @SysGetShiftState;
+ TranslateKeyEvent : Nil;
+ TranslateKeyEventUnicode : Nil;
+ );
+
+begin
+ SetKeyBoardDriver(SysKeyBoardDriver);
+end.
+
+{
+ $Log: keyboard.pp,v $
+ Revision 1.5 2005/02/14 17:13:22 peter
+ * truncate log
+
+}