diff options
Diffstat (limited to 'board/MAI/bios_emulator/scitech/src/pm/os2/mon.h')
-rw-r--r-- | board/MAI/bios_emulator/scitech/src/pm/os2/mon.h | 165 |
1 files changed, 165 insertions, 0 deletions
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 index 0000000000..52f12f0d2d --- /dev/null +++ b/board/MAI/bios_emulator/scitech/src/pm/os2/mon.h @@ -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); |