/**[txh]********************************************************************

  Copyright (c) 2002 by Salvador E. Tropea
  Covered by the GPL license.

  Description: 
  Keyboard `driver' classes for DOS.
  
***************************************************************************/

#if defined(TVCompf_djgpp) && !defined(DOSKEY_HEADER_INCLUDED)
#define DOSKEY_HEADER_INCLUDED
struct TEvent;

// A class to encapsulate the globals, all is static!
class TGKeyDOS : public TGKey
{
public:
 TGKeyDOS() {};

 // Function replacements
 static unsigned GetShiftStateBIOS();
 static void     ClearBIOS();
 static unsigned GetShiftStateDirect();
 static void     ClearDirect();
 static ushort   GKey();
 static void     FillTEvent(TEvent &e);
 static void     SetKbdMapping(int version);
 static int      GetKbdMapping(int version);

 // Setup the pointers to point our members
 static void     Init();

protected:
 // Specific for this driver
 static void     GetRawBIOS(void);
 static void     GetRawDirect(void);
 static void   (*GetRaw)(void);
 static int      KbHitBIOS();
 static int      KbHitDirect();
 static int      InternationalToKey(uchar ascii);
 static int      Abstract;
 static char     ascii;
 static ushort   sFlags;
 static KeyType  rawCode;
 static int      useBIOS;
 static int      translateKeyPad;
 static const uchar kbWithASCII0[256];
 static const uchar kbWithASCIIE0[256];
};
#endif // DOSKEY_HEADER_INCLUDED

