* Patch by Thomas Frieden, 13 Nov 2002:
[oweals/u-boot.git] / board / MAI / bios_emulator / scitech / src / pm / os2 / mon.h
diff --git a/board/MAI/bios_emulator/scitech/src/pm/os2/mon.h b/board/MAI/bios_emulator/scitech/src/pm/os2/mon.h
new file mode 100644 (file)
index 0000000..52f12f0
--- /dev/null
@@ -0,0 +1,165 @@
+/****************************************************************************
+*
+*                   SciTech OS Portability Manager Library
+*
+*  ========================================================================
+*
+*    The contents of this file are subject to the SciTech MGL Public
+*    License Version 1.0 (the "License"); you may not use this file
+*    except in compliance with the License. You may obtain a copy of
+*    the License at http://www.scitechsoft.com/mgl-license.txt
+*
+*    Software distributed under the License is distributed on an
+*    "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+*    implied. See the License for the specific language governing
+*    rights and limitations under the License.
+*
+*    The Original Code is Copyright (C) 1991-1998 SciTech Software, Inc.
+*
+*    The Initial Developer of the Original Code is SciTech Software, Inc.
+*    All Rights Reserved.
+*
+*  ========================================================================
+*
+* Language:     ANSI C
+* Environment:  32-bit OS/2
+*
+* Description:  Include file to include all OS/2 keyboard monitor stuff.
+*
+****************************************************************************/
+
+/* Monitors stuff */
+
+#define MONITOR_DEFAULT 0x0000
+#define MONITOR_BEGIN        1
+#define MONITOR_END          2
+
+typedef SHANDLE   HMONITOR;
+typedef HMONITOR *PHMONITOR;
+
+typedef struct _KEYPACKET {
+  USHORT  MonFlagWord;
+  UCHAR   XlatedChar;
+  UCHAR   XlatedScan;
+  UCHAR   DBCSStatus;
+  UCHAR   DBCSShift;
+
+  union
+  {
+    USHORT  ShiftState;
+    USHORT  LayerIndex;
+  } u;
+
+  ULONG   Milliseconds;
+  USHORT  KbdDDFlagWord;
+} KEYPACKET;
+
+typedef struct _MLNPACKET {
+  USHORT  MonFlagWord;
+  USHORT  IOCTL;
+  USHORT  CPId;
+  USHORT  CPIndex;
+  ULONG   Reserved;
+  USHORT  KbdDDFlagWord;
+} MLNPACKET;
+
+// DBCSStatus
+
+#define SF_SHIFTS              1  // If set to 1, shift status returned without a character
+#define SF_NOTCHAR             2  // 0 - Scan code is a character
+                                  // 1 - Scan code is not a character;
+                                  //     instead it is an extended key code from the keyboard.
+#define SF_IMMEDIATE          32  // If set to 1, immediate conversion requested
+#define SF_TYPEMASK          192  // Has the following values:
+                                  // 00 - Undefined
+                                  // 01 - Final character; interim character flag is turned off
+                                  // 10 - Interim character
+                                  // 11 - Final character; interim character flag is turned on.
+// MonFlagWord
+
+#define MF_OPEN                1  // open
+#define MF_CLOSE               2  // close
+#define MF_FLUSH               4  // is flush packet
+
+// KbdDDFlagWord
+
+#define KF_NOTSQPACKET      1024  // Don't put this packet in SQ buffer
+#define KF_ACCENTEDKEY       512  // Key was translated using previous accent.
+#define KF_MULTIMAKE         256  // Key was repeated make of a toggle key.
+#define KF_SECONDARYKEY      128  // Previous scan code was the E0 prefix code.
+#define KF_KEYBREAK           64  // This is the break of the key.
+#define KF_KEYTYPEMASK        63  // Isolates the Key Type field of DDFlags.
+#define KF_UNDEFKEY           63  // Key packet is undefined
+#define KF_SYSREQKEY          23  // This key packet is the SysReq key (4990)
+#define KF_PRINTFLUSHKEY      22  // This packet is Ct-Alt-PrtScr
+#define KF_PSPRINTECHOKEY     21  // This packet is Ctl-P
+#define KF_PRINTECHOKEY       20  // This packet is Ctl-PrtScr
+#define KF_PRTSCRKEY          19  // This packet is PrtScr
+#define KF_PSBREAKKEY         18  // This packet is Ctl-C
+#define KF_BREAKKEY           17  // This packet is Ctl-Break
+#define KF_ACCENTKEY          16  // This packet is an accent key
+#define KF_XRORPNOT           13  // This packet is a Read or Peek Notification Pct.
+#define KF_MLNOTIFICATION     14  // packet is a Multi-Layer NLS packet
+#define KF_HOTKEYPACKET       12  // This packet is the hot key.
+#define KF_BADKEYCOMBO        11  // Accent/char combo undefined, beep only.
+#define KF_WAKEUPKEY          10  // This packet is one following PAUSEKEY
+#define KF_PSPAUSEKEY          9  // This packet is Ctl-S
+#define KF_PAUSEKEY            8  // This packet is Ctl-Numlock or PAUSE
+#define KF_SHIFTMASK           7  // Key is a shift Key
+#define KF_DUMPKEY             6  // This packet is Ctl-Numlock-NumLock
+#define KF_REBOOTKEY           5  // This packet is Ctl-Alt-Del
+#define KF_RESENDCODE          4  // This packet is resend code from controller
+#define KF_OVERRUNCODE         3  // This packet is overrun code from controller
+#define KF_SECPREFIXCODE       2  // This packet is E0/E1 scan code
+#define KF_ACKCODE             1  // This packet is ack code from keyboard
+
+
+typedef struct _MONBUF {
+  USHORT    cb;
+  KEYPACKET Buffer;
+  BYTE      Reserved[20];
+} MONBUF;
+
+#define RS_SYSREG      32768  // Bit 15  SysReq key down
+#define RS_CAPSLOCK    16384  // Bit 14  Caps Lock key down
+#define RS_NUMLOCK      8192  // Bit 13  NumLock key down
+#define RS_SCROLLLOCK   4096  // Bit 12  Scroll Lock key down
+#define RS_RALT         2048  // Bit 11  Right Alt key down
+#define RS_RCONTROL     1024  // Bit 10  Right Ctrl key down
+#define RS_LALT          512  // Bit  9  Left Alt key down
+#define RS_LCONTROL      256  // Bit  8  Left Ctrl key down
+#define RS_INSERT        128  // Bit  7  Insert on
+#define RS_CAPS           64  // Bit  6  Caps Lock on
+#define RS_NUM            32  // Bit  5  NumLock on
+#define RS_SCROLL         16  // Bit  4  Scroll Lock on
+#define RS_ALT             8  // Bit  3  Either Alt key down
+#define RS_CONTROL         4  // Bit  2  Either Ctrl key down
+#define RS_LSHIFT          2  // Bit  1  Left Shift key down
+#define RS_RSHIFT          1  // Bit  0  Right Shift key down
+
+
+#define CS_RCONTROL     91    // Right Control
+#define CS_LSHIFT       42    // Left Shift
+#define CS_RSHIFT       54    // Right Shift
+#define CS_LALT         56    // Left Alt
+#define CS_RALT         94    // Right Alt
+
+
+/* DosMon* prototypes */
+#ifdef __EMX__
+    #define  APIRET16        USHORT
+    #define  APIENTRY16
+#else
+    #define  DosMonOpen      DOS16MONOPEN
+    #define  DosMonClose     DOS16MONCLOSE
+    #define  DosMonReg       DOS16MONREG
+    #define  DosMonRead      DOS16MONREAD
+    #define  DosMonWrite     DOS16MONWRITE
+    #define  DosGetInfoSeg   DOS16GETINFOSEG
+#endif
+
+APIRET16 APIENTRY16 DosMonOpen   (PSZ pszDevName, PHMONITOR phmon);
+APIRET16 APIENTRY16 DosMonClose  (HMONITOR hmon);
+APIRET16 APIENTRY16 DosMonReg    (HMONITOR hmon, MONBUF *pbInBuf, /*MONBUF*/ULONG *pbOutBuf, USHORT fPosition, USHORT usIndex);
+APIRET16 APIENTRY16 DosMonRead   (PBYTE pbInBuf, USHORT fWait, PBYTE pbDataBuf, PUSHORT pcbData);
+APIRET16 APIENTRY16 DosMonWrite  (PBYTE pbOutBuf, PBYTE pbDataBuf, USHORT cbData);