[NTVDM]
[reactos.git] / reactos / subsystems / mvdm / ntvdm / dos / mouse32.h
1 /*
2 * COPYRIGHT: GPL - See COPYING in the top level directory
3 * PROJECT: ReactOS Virtual DOS Machine
4 * FILE: mouse32.h
5 * PURPOSE: VDM 32-bit compatible MOUSE.COM driver
6 * PROGRAMMERS: Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
7 */
8
9 #ifndef _MOUSE32_H_
10 #define _MOUSE32_H_
11
12 /* DEFINES ********************************************************************/
13
14 #define DOS_MOUSE_INTERRUPT 0x33
15 #define MOUSE_IRQ_INT 0x74
16 #define MOUSE_MAX_HORIZ 640
17 #define MOUSE_MAX_VERT 200
18
19 enum
20 {
21 MOUSE_BUTTON_LEFT,
22 MOUSE_BUTTON_RIGHT,
23 MOUSE_BUTTON_MIDDLE,
24 NUM_MOUSE_BUTTONS
25 };
26
27 typedef struct _MOUSE_USER_HANDLER
28 {
29 /*
30 * CallMask format: see table: http://www.ctyme.com/intr/rb-5968.htm#Table3171
31 * Alternatively, see table: http://www.ctyme.com/intr/rb-5981.htm#Table3174
32 */
33 USHORT CallMask;
34 ULONG Callback; // Far pointer to the callback
35 } MOUSE_USER_HANDLER, *PMOUSE_USER_HANDLER;
36
37 typedef struct _MOUSE_DRIVER_STATE
38 {
39 SHORT ShowCount;
40 COORD Position;
41 WORD Character;
42 WORD ButtonState;
43 WORD PressCount[NUM_MOUSE_BUTTONS];
44 COORD LastPress[NUM_MOUSE_BUTTONS];
45 WORD ReleaseCount[NUM_MOUSE_BUTTONS];
46 COORD LastRelease[NUM_MOUSE_BUTTONS];
47 SHORT HorizCount;
48 SHORT VertCount;
49 WORD MinX, MaxX, MinY, MaxY;
50
51 /*
52 * User Subroutine Handlers called on mouse events
53 */
54 MOUSE_USER_HANDLER Handler0; // Handler compatible MS MOUSE v1.0+
55 MOUSE_USER_HANDLER Handlers[3]; // Handlers compatible MS MOUSE v6.0+
56
57 struct
58 {
59 WORD ScreenMask;
60 WORD CursorMask;
61 } TextCursor;
62
63 struct
64 {
65 COORD HotSpot;
66 WORD ScreenMask[16];
67 WORD CursorMask[16];
68 } GraphicsCursor;
69 } MOUSE_DRIVER_STATE, *PMOUSE_DRIVER_STATE;
70
71 /* FUNCTIONS ******************************************************************/
72
73 VOID DosMouseEnable(VOID);
74 VOID DosMouseDisable(VOID);
75 BOOLEAN DosMouseInitialize(VOID);
76 VOID DosMouseCleanup(VOID);
77
78 #endif // _MOUSE32_H_
79
80 /* EOF */