/*++
Copyright (c) 1991 Microsoft Corporation
Module Name:
os2sub.h
Abstract:
Main include file for OS/2 Client 16 bit VIO API support (Vio, Kbd & Mou )
Author:
Yaron Shamir (YaronS) 19-Jul-1991
Revision History:
--*/
#ifndef _OS2VIO_
#define _OS2VIO_
#define KR_KBDCHARIN 0x00000001L
#define KR_KBDPEEK 0x00000002L
#define KR_KBDFLUSHBUFFER 0x00000004L
#define KR_KBDGETSTATUS 0x00000008L
#define KR_KBDSETSTATUS 0x00000010L
#define KR_KBDSTRINGIN 0x00000020L
#define KR_KBDOPEN 0x00000040L
#define KR_KBDCLOSE 0x00000080L
#define KR_KBDGETFOCUS 0x00000100L
#define KR_KBDFREEFOCUS 0x00000200L
#define KR_KBDGETCP 0x00000400L
#define KR_KBDSETCP 0x00000800L
#define KR_KBDXLATE 0x00001000L
#define KR_KBDSETCUSTXT 0x00002000L
#define IO_WAIT 0
#define IO_NOWAIT 1
#define KEYBOARD_ECHO_ON 0x0001
#define KEYBOARD_ECHO_OFF 0x0002
#define KEYBOARD_BINARY_MODE 0x0004
#define KEYBOARD_ASCII_MODE 0x0008
#define KEYBOARD_MODIFY_STATE 0x0010
#define KEYBOARD_MODIFY_INTERIM 0x0020
#define KEYBOARD_MODIFY_TURNAROUND 0x0040
#define KEYBOARD_2B_TURNAROUND 0x0080
#define KEYBOARD_SHIFT_REPORT 0x0100
#define KBDTRF_SHIFT_KEY_IN 0x01
#define KBDTRF_CONVERSION_REQUEST 0x20
#define KBDTRF_FINAL_CHAR_IN 0x40
#define KBDTRF_INTERIM_CHAR_IN 0x80
#define KEYBOARD_AT_COMPATABLE 0x0001
#define KEYBOARD_ENHANCED_101 0xAB41
#define KEYBOARD_ENHANCED_102 0xAB41
#define KEYBOARD_ENHANCED_122 0xAB85
#define KEYBOARD_SPACESAVER 0xAB54
/* KBDKEYINFO structure, for KbdCharIn and KbdPeek */
#pragma pack(1)
typedef struct _KBDKEYINFO { /* kbci */
UCHAR chChar;
UCHAR chScan;
UCHAR fbStatus;
UCHAR bNlsShift;
USHORT fsState;
ULONG time;
} KBDKEYINFO, *PKBDKEYINFO;
/* structure for KbdStringIn() */
typedef struct _STRINGINBUF { /* kbsi */
USHORT cb;
USHORT cchIn;
} STRINGINBUF, *PSTRINGINBUF;
/* KBDINFO structure, for KbdSet/GetStatus */
typedef struct _KBDINFO { /* kbst */
USHORT cb;
USHORT fsMask;
USHORT chTurnAround;
USHORT fsInterim;
USHORT fsState;
} KBDINFO, *PKBDINFO;
/* structure for KbdGetHWID() */
typedef struct _KBDHWID { /* kbhw */
USHORT cb;
USHORT idKbd;
USHORT usReserved1;
USHORT usReserved2;
} KBDHWID, *PKBDHWID;
/* structure for KbdXlate() */
typedef struct _KBDTRANS { /* kbxl */
UCHAR chChar;
UCHAR chScan;
UCHAR fbStatus;
UCHAR bNlsShift;
USHORT fsState;
ULONG time;
USHORT fsDD;
USHORT fsXlate;
USHORT fsShift;
USHORT sZero;
} KBDTRANS, *PKBDTRANS;
/* first parameter registration constants */
#define VR_VIOGETCURPOS 0x00000001L
#define VR_VIOGETCURTYPE 0x00000002L
#define VR_VIOGETMODE 0x00000004L
#define VR_VIOGETBUF 0x00000008L
#define VR_VIOGETPHYSBUF 0x00000010L
#define VR_VIOSETCURPOS 0x00000020L
#define VR_VIOSETCURTYPE 0x00000040L
#define VR_VIOSETMODE 0x00000080L
#define VR_VIOSHOWBUF 0x00000100L
#define VR_VIOREADCHARSTR 0x00000200L
#define VR_VIOREADCELLSTR 0x00000400L
#define VR_VIOWRTNCHAR 0x00000800L
#define VR_VIOWRTNATTR 0x00001000L
#define VR_VIOWRTNCELL 0x00002000L
#define VR_VIOWRTTTY 0x00004000L
#define VR_VIOWRTCHARSTR 0x00008000L
#define VR_VIOWRTCHARSTRATT 0x00010000L
#define VR_VIOWRTCELLSTR 0x00020000L
#define VR_VIOSCROLLUP 0x00040000L
#define VR_VIOSCROLLDN 0x00080000L
#define VR_VIOSCROLLLF 0x00100000L
#define VR_VIOSCROLLRT 0x00200000L
#define VR_VIOSETANSI 0x00400000L
#define VR_VIOGETANSI 0x00800000L
#define VR_VIOPRTSC 0x01000000L
#define VR_VIOSCRLOCK 0x02000000L
#define VR_VIOSCRUNLOCK 0x04000000L
#define VR_VIOSAVREDRAWWAIT 0x08000000L
#define VR_VIOSAVREDRAWUNDO 0x10000000L
#define VR_VIOPOPUP 0x20000000L
#define VR_VIOENDPOPUP 0x40000000L
#define VR_VIOPRTSCTOGGLE 0x80000000L
/* second parameter registration constants */
#define VR_VIOMODEWAIT 0x00000001L
#define VR_VIOMODEUNDO 0x00000002L
#define VR_VIOGETFONT 0x00000004L
#define VR_VIOGETCONFIG 0x00000008L
#define VR_VIOSETCP 0x00000010L
#define VR_VIOGETCP 0x00000020L
#define VR_VIOSETFONT 0x00000040L
#define VR_VIOGETSTATE 0x00000080L
#define VR_VIOSETSTATE 0x00000100L
/* structure for VioSet/GetCurType() */
typedef struct _VIOCURSORINFO { /* vioci */
USHORT yStart;
USHORT cEnd;
USHORT cx;
USHORT attr;
} VIOCURSORINFO, *PVIOCURSORINFO;
/* VIOMODEINFO.color constants */
#define COLORS_2 0x0001
#define COLORS_4 0x0002
#define COLORS_16 0x0004
/* structure for VioSet/GetMode() */
typedef struct _VIOMODEINFO { /* viomi */
USHORT cb;
UCHAR fbType;
UCHAR color;
USHORT col;
USHORT row;
USHORT hres;
USHORT vres;
UCHAR fmt_ID;
UCHAR attrib;
ULONG buf_addr;
ULONG buf_length;
ULONG full_length;
ULONG partial_length;
CHAR *ext_data_addr; /* => PCH */
} VIOMODEINFO, *PVIOMODEINFO;
#define VGMT_OTHER 0x01
#define VGMT_GRAPHICS 0x02
#define VGMT_DISABLEBURST 0x04
#define ANSI_ON 1
#define ANSI_OFF 0
#define VSRWI_SAVEANDREDRAW 0
#define VSRWI_REDRAW 1
#define VSRWN_SAVE 0
#define VSRWN_REDRAW 1
#define UNDOI_GETOWNER 0
#define UNDOI_RELEASEOWNER 1
#define UNDOK_ERRORCODE 0
#define UNDOK_TERMINATE 1
#define VMWR_POPUP 0
#define VMWN_POPUP 0
#define LOCKIO_NOWAIT 0
#define LOCKIO_WAIT 1
#define LOCK_SUCCESS 0
#define LOCK_FAIL 1
#define VP_NOWAIT 0x0000
#define VP_WAIT 0x0001
#define VP_OPAQUE 0x0000
#define VP_TRANSPARENT 0x0002
/* VIOCONFIGINFO.adapter constants */
#define DISPLAY_MONOCHROME 0x0000
#define DISPLAY_CGA 0x0001
#define DISPLAY_EGA 0x0002
#define DISPLAY_VGA 0x0003
#define DISPLAY_8514A 0x0007
/* VIOCONFIGINFO.display constants */
#define MONITOR_MONOCHROME 0x0000
#define MONITOR_COLOR 0x0001
#define MONITOR_ENHANCED 0x0002
#define MONITOR_8503 0x0003
#define MONITOR_851X_COLOR 0x0004
#define MONITOR_8514 0x0009
/* structure for VioGetConfig() */
typedef struct _VIOCONFIGINFO { /* vioin */
USHORT cb;
USHORT adapter;
USHORT display;
ULONG cbMemory;
USHORT Configuration;
USHORT VDHVersion;
USHORT Flags;
ULONG HWBufferSize;
ULONG FullSaveSize;
ULONG PartSaveSize;
USHORT EMAdaptersOFF;
USHORT EMDisplaysOFF;
} VIOCONFIGINFO, *PVIOCONFIGINFO;
#define VIO_CONFIG_CURRENT 0
#define VIO_CONFIG_PRIMARY 1
#define VIO_CONFIG_SECONDARY 2
/* structure for VioGet/SetFont() */
typedef struct _VIOFONTINFO { /* viofi */
USHORT cb;
USHORT type;
USHORT cxCell;
USHORT cyCell;
PVOID pbData;
USHORT cbData;
} VIOFONTINFO, *PVIOFONTINFO;
#define VGFI_GETCURFONT 0
#define VGFI_GETROMFONT 1
typedef struct _VIOPALSTATE { /* viopal */
USHORT cb;
USHORT type;
USHORT iFirst;
USHORT acolor[1];
} VIOPALSTATE, *PVIOPALSTATE;
typedef struct _VIOOVERSCAN { /* vioos */
USHORT cb;
USHORT type;
USHORT color;
} VIOOVERSCAN, *PVIOOVERSCAN;
typedef struct _VIOINTENSITY { /* vioint */
USHORT cb;
USHORT type;
USHORT fs;
} VIOINTENSITY, *PVIOINTENSITY;
typedef struct _VIOCOLORREG { /* viocreg */
USHORT cb;
USHORT type;
USHORT firstcolorreg;
USHORT numcolorregs;
CHAR *colorregaddr; /* => PCH */
} VIOCOLORREG, *PVIOCOLORREG;
typedef struct _VIOSETULINELOC { /* viouline */
USHORT cb;
USHORT type;
USHORT scanline;
} VIOSETULINELOC, *PVIOSETULINELOC;
typedef struct _VIOSETTARGET { /* viosett */
USHORT cb;
USHORT type;
USHORT defaultalgorithm;
} VIOSETTARGET, *PVIOSETTARGET;
#define MR_MOUGETNUMBUTTONS 0x00000001L
#define MR_MOUGETNUMMICKEYS 0x00000002L
#define MR_MOUGETDEVSTATUS 0x00000004L
#define MR_MOUGETNUMQUEEL 0x00000008L
#define MR_MOUREADEVENTQUE 0x00000010L
#define MR_MOUGETSCALEFACT 0x00000020L
#define MR_MOUGETEVENTMASK 0x00000040L
#define MR_MOUSETSCALEFACT 0x00000080L
#define MR_MOUSETEVENTMASK 0x00000100L
#define MR_MOUOPEN 0x00000800L
#define MR_MOUCLOSE 0x00001000L
#define MR_MOUGETPTRSHAPE 0x00002000L
#define MR_MOUSETPTRSHAPE 0x00004000L
#define MR_MOUDRAWPTR 0x00008000L
#define MR_MOUREMOVEPTR 0x00010000L
#define MR_MOUGETPTRPOS 0x00020000L
#define MR_MOUSETPTRPOS 0x00040000L
#define MR_MOUINITREAL 0x00080000L
#define MR_MOUSETDEVSTATUS 0x00100000L
#define MHK_BUTTON1 0x0001
#define MHK_BUTTON2 0x0002
#define MHK_BUTTON3 0x0004
/* structure for MouGet/SetPtrPos() */
typedef struct _PTRLOC { /* moupl */
USHORT row;
USHORT col;
} PTRLOC, *PPTRLOC;
/* structure for MouGet/SetPtrShape() */
typedef struct _PTRSHAPE { /* moups */
USHORT cb;
USHORT col;
USHORT row;
USHORT colHot;
USHORT rowHot;
} PTRSHAPE, *PPTRSHAPE;
/* structure for MouReadEventQue() */
typedef struct _MOUEVENTINFO { /* mouev */
USHORT fs;
ULONG time;
USHORT row;
USHORT col;
} MOUEVENTINFO, *PMOUEVENTINFO;
/* structure for MouGetNumQueEl() */
typedef struct _MOUQUEINFO { /* mouqi */
USHORT cEvents;
USHORT cmaxEvents;
} MOUQUEINFO, *PMOUQUEINFO;
/* structure for MouGet/SetScaleFact() */
typedef struct _SCALEFACT { /* mousc */
USHORT rowScale;
USHORT colScale;
} SCALEFACT, *PSCALEFACT;
/* structure for MouRemovePtr() */
typedef struct _NOPTRRECT { /* mourt */
USHORT row;
USHORT col;
USHORT cRow;
USHORT cCol;
} NOPTRRECT, *PNOPTRRECT;
#pragma pack()
/* MouGetDevStatus/MouSetDevStatus device status constants */
#define MOUSE_QUEUEBUSY 0x0001
#define MOUSE_BLOCKREAD 0x0002
#define MOUSE_FLUSH 0x0004
#define MOUSE_UNSUPPORTED_MODE 0x0008
#define MOUSE_DISABLED 0x0100
#define MOUSE_MICKEYS 0x0200
/* MouReadEventQue */
#define MOU_NOWAIT 0x0000
#define MOU_WAIT 0x0001
#define MOU_NODRAW 0x0001
#define MOU_DRAW 0x0000
#define MOU_MICKEYS 0x0002
#define MOU_PELS 0x0000
#endif /* _OS2VIO_ */