{ 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 MS-DOS 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 dos; {$i keyboard.inc} function SysGetKeyEvent: TKeyEvent; var regs : registers; begin regs.ah:=$10; intr($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 : registers; begin regs.ah:=$11; intr($16,regs); if (regs.flags and fzero)<>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.