123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- {
- 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.
|