home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ddkx86v1.zip / DDKX86 / H / VMD.H < prev    next >
C/C++ Source or Header  |  1995-04-14  |  11KB  |  245 lines

  1. /*DDK*************************************************************************/
  2. /*                                                                           */
  3. /* COPYRIGHT (C) Microsoft Corporation, 1989                                 */
  4. /* COPYRIGHT    Copyright (C) 1995 IBM Corporation                           */
  5. /*                                                                           */
  6. /*    The following IBM OS/2 WARP source code is provided to you solely for  */
  7. /*    the purpose of assisting you in your development of OS/2 WARP device   */
  8. /*    drivers. You may use this code in accordance with the IBM License      */
  9. /*    Agreement provided in the IBM Device Driver Source Kit for OS/2. This  */
  10. /*    Copyright statement may not be removed.                                */
  11. /*                                                                           */
  12. /*****************************************************************************/
  13. /*static char *SCCSID = "@(#)vmd.h      6.6 92/02/20";*/
  14. /***    VMD.H
  15.  *
  16.  *      SCCSID = @(#)vmd.h      6.6 92/02/20
  17.  *
  18.  *      MVDM Virtual Mouse Exported Definitions
  19.  *
  20.  *      For include file hierarchy, see MVDM.H
  21.  *
  22.  *
  23.  *      MODIFICATION HISTORY
  24.  *      11/15/88    JTP     Created.
  25.  *      05/05/93    RAR     Version 9.00 updates
  26.  */
  27.  
  28.  
  29. #ifndef INCL_NONE                       // include everything by default
  30. #define INCL_VMOUSE
  31. #endif
  32.  
  33. #ifdef  INCL_VMOUSE
  34. #define INCL_VMOUSEINT
  35. #define INCL_VMOUSESYSREQ
  36. #define INCL_VMOUSEDEVREQ
  37. #endif
  38.  
  39.  
  40. #ifdef  INCL_VMOUSEINT
  41.  
  42. /***    VMD INT 33h constants
  43.  */
  44.  
  45. #define INT_MOUSE            0x33       // mouse software interrupt
  46.  
  47. #define INT33_RESET             0       // mouse reset and status
  48. #define INT33_SHOWPOINTER       1       // show pointer
  49. #define INT33_HIDEPOINTER       2       // hide pointer
  50. #define INT33_QUERYSTATUS       3       // query button status and mouse pos.
  51. #define INT33_SETPOSITION       4       // set mouse position
  52. #define INT33_GETPRESSINFO      5       // get button press information
  53. #define INT33_GETRELEASEINFO    6       // get button release information
  54. #define INT33_SETHORIZONTAL     7       // set horizontal min/max boundaries
  55. #define INT33_SETVERTICAL       8       // set vertical min/max boundaries
  56. #define INT33_DEFINEGRPOINTER   9       // define graphics pointer
  57. #define INT33_DEFINETEXTPOINTER 10      // define text/hardware pointer
  58. #define INT33_GETMOTIONCOUNTS   11      // get mouse motion counters
  59. #define INT33_SETUSERSUB        12      // set user call mask/address
  60. #define INT33_ENABLELIGHTPEN    13      // enable lightpen emulation
  61. #define INT33_DISABLELIGHTPEN   14      // disable lightpen emulation
  62. #define INT33_SETMICKEYRATIO    15      // set mickeys-to-8-pixels ratio
  63. #define INT33_SETCONDITIONAL    16      // set conditional-off area
  64. #define INT33_FUNCTION17        17      // UNDEFINED (points to function 19)
  65. #define INT33_DEFINEVARPOINTER  18      // define variable-size graphics pointer
  66. #define INT33_SETDBLSPEED       19      // set dbl-speed threshold
  67. #define INT33_SWAPUSERSUB       20      // swap user call mask/address
  68. #define INT33_QUERYSTATESIZE    21      // query save-state storage req.
  69. #define INT33_SAVESTATE         22      // save driver state
  70. #define INT33_RESTORESTATE      23      // restore driver state
  71. #define INT33_SETALTUSERSUB     24      // set alternate call mask/address
  72. #define INT33_QUERYALTUSERSUB   25      // query alternate call mask/address
  73. #define INT33_SETSENSITIVITY    26      // set mickeys/pixel, dbl-speed thres.
  74. #define INT33_QUERYSENSITIVITY  27      // query mickeys/pixel, dbl-speed thres.
  75. #define INT33_SETINTERRUPTRATE  28      // set interrupt rate (inport only)
  76. #define INT33_SETCRTPAGE        29      // set CRT page #
  77. #define INT33_QUERYCRTPAGE      30      // query CRT page #
  78. #define INT33_DISABLEDRIVER     31      // disable driver
  79. #define INT33_ENABLEDRIVER      32      // enable driver
  80. #define INT33_SOFTWARERESET     33      // more complete mouse reset
  81. #define INT33_SETLANGUAGE       34      // set language #
  82. #define INT33_QUERYLANGUAGE     35      // query language #
  83. #define INT33_QUERYMOUSEVERSION 36      // query mouse version, type, and IRQ
  84.  
  85. #define INT33_GETSWITCHSETTINGS 51      // get switch settings
  86. #define INT33_GETMOUSEINI       52      // get MOUSE.INI
  87. #define INT33_MAXFUNC           INT33_GETMOUSEINI
  88.  
  89. #define INT33_ERROR             -1      // error return in AX of INT 33 function
  90.  
  91. #define MAX_PTRWIDTH            2       // maximum # bytes across
  92. #define MAX_PTRHEIGHT           16      // maximum # bytes in height
  93.  
  94. #define BUTTON_LEFT             0       // button ordinals
  95. #define BUTTON_RIGHT            1
  96. #define BUTTON_CENTER           2
  97.  
  98. #define BUTBIT_LEFT             0x0001  // button bit positions
  99. #define BUTBIT_RIGHT            0x0002
  100. #define BUTBIT_CENTER           0x0004
  101.  
  102. #define CALLMASK_MOTION         0x0001  // motion
  103. #define CALLMASK_LEFTDOWN       0x0002  // LEFT button down
  104. #define CALLMASK_LEFTUP         0x0004  // LEFT button up
  105. #define CALLMASK_RIGHTDOWN      0x0008  // RIGHT button down
  106. #define CALLMASK_RIGHTUP        0x0010  // RIGHT button up
  107. #define CALLMASK_SHIFTBUTTON    0x0020  // SHIFT key held while button up/down
  108. #define CALLMASK_CTRLBUTTON     0x0040  // CTRL key held while button up/down
  109. #define CALLMASK_ALTBUTTON      0x0080  // ALT key held while button up/down
  110. #define CALLMASK_CENTERDOWN     0x0100  // CENTER button down
  111. #define CALLMASK_CENTERUP       0x0200  // CENTER button up
  112. #define CALLMASK_ALLOWED        0x03FF
  113. #define CALLMASK_BUTTONSHIFTS   (CALLMASK_SHIFTBUTTON | \
  114.                                  CALLMASK_CTRLBUTTON  | \
  115.                                  CALLMASK_ALTBUTTON)
  116.  
  117. #define CALL12MASK_CENTERDOWN   0x0020  // CENTER button down (SETUSERSUB only)
  118. #define CALL12MASK_CENTERUP     0x0040  // CENTER button up (SETUSERSUB only)
  119. #define CALL12MASK_ALLOWED      0x007F
  120.  
  121.  
  122. #define DEF_XMICKEYS    8               // (x_pixel)
  123. #define DEF_YMICKEYS    16              // (y_pixel)
  124.  
  125. #define DEF_XMICSSCALE  50              // range 0-100
  126. #define DEF_YMICSSCALE  50              // range 0-100
  127. #define DEF_THRESHOLDSCALE      50      // range 0-100
  128.  
  129. #define DEF_TEXTANDMASK 0xffff          // (DfltTextAndMask)
  130. #define DEF_TEXTXORMASK 0x7700          // (DfltTextXorMask)
  131.  
  132. #define DEF_THRESHOLD   64       // BUGBUG JeffPar - What is correct???
  133.                                         // PDD wants 4, doc says 64, MS src says 128
  134. #endif
  135.  
  136.  
  137. #ifdef  INCL_VMOUSESYSREQ
  138.  
  139. /***    VMSE constants
  140.  */
  141.  
  142. #define VMD_NAME "VMOUSE$"              // name of VMD
  143.  
  144. /***    VMSE functions for use by PMVDMP
  145.  */
  146.  
  147. #define VMSESYSREQ_SETACCESS    1       // obtain exclusive access for VDM
  148. #define VMSESYSREQ_SETFOCUS     2       // notify VDM is gaining/losing focus
  149. #define VMSESYSREQ_POSTMOUSE    3       // send mouse events to a VDM
  150. #define VMSESYSREQ_MAX          3
  151.  
  152. #endif
  153.  
  154.  
  155. #ifdef  INCL_VMOUSEDEVREQ
  156.  
  157. /***EK+ VMD constants
  158.  */
  159.  
  160. #define VMDEVREQ_REGISTER       1       // VMD-defined functions for
  161. #define VMDEVREQ_SETSIZE        2       // communication from VVD to VMD
  162. #define VMDEVREQ_SEAMLESS       3       // Seamless notification
  163. #define VMDEVREQ_PROTINT33      4       // VDPX to VMD for Pmode Int 33h calls
  164. #define VMDEVREQ_DPMITASK       5       // DPMI program start/stop notification
  165. /*end*/
  166.  
  167.  
  168. /***ET+ VMD VDHRequestVDD communication structures
  169.  *
  170.  *  VMREG is the input packet passed with the VMDEVREQ_REGISTER request
  171.  *  from a VVD, and contains all the functions required by VMD of every
  172.  *  supported VVD, which are:
  173.  *
  174.  *      Show pointer
  175.  *      Hide pointer
  176.  *      Define text pointer
  177.  *      Define graphics pointer
  178.  *      Enable/disable light pen emulation
  179.  *
  180.  *  VMFUNC is the output packet filled in on the same (VMDEVREQ_REGISTER)
  181.  *  request.  It points to the following functions:
  182.  *
  183.  *      VDM Light pen request (to call only when light pen emulation enabled)
  184.  *
  185.  *  VMSSIZE is the input packet passed with the VMDEVREQ_SETSIZE request
  186.  *  from a VVD, and defines the current video mode (or -1 if unknown),
  187.  *  physical screen dimensions, and cell size.  There is no output packet
  188.  *  for this request.
  189.  */
  190.  
  191. typedef BOOL (EXPENTRY *PFNSHOWPTR)(HVDM, ULONG, ULONG);
  192. typedef BOOL (EXPENTRY *PFNHIDEPTR)(HVDM);
  193. typedef BOOL (EXPENTRY *PFNDEFTEXT)(HVDM, ULONG, ULONG, BOOL);
  194. typedef BOOL (EXPENTRY *PFNDEFGRAPH)(HVDM, PUSHORT, ULONG, ULONG);
  195. typedef BOOL (EXPENTRY *PFNSETPAGE)(HVDM, ULONG);
  196. typedef BOOL (EXPENTRY *PFNSETLPEN)(HVDM, BOOL);
  197.  
  198. typedef struct vmreg_s {                /* vmreg */
  199.     ULONG       vmreg_nb;               // size of structure, in bytes (24)
  200.     PFNSHOWPTR  vmreg_pfnShowPtr;       // ptr to show pointer fn.
  201.     PFNHIDEPTR  vmreg_pfnHidePtr;       // ptr to hide pointer fn.
  202.     PFNDEFTEXT  vmreg_pfnDefTextPtr;    // ptr to define text pointer fn.
  203.     PFNDEFGRAPH vmreg_pfnDefGraphPtr;   // ptr to define graphics pointer fn.
  204.     PFNSETPAGE  vmreg_pfnSetVideoPage;  // ptr to set video page fn.
  205.     PFNSETLPEN  vmreg_pfnSetLPenEm;     // ptr to enable/disable lpen fn.
  206. } VMREG;
  207.  
  208. typedef VMREG *PVMREG;
  209.  
  210.  
  211. typedef struct vmstat_s {
  212.     BOOL    vmstat_fPtrHidden;          // visual pointer status
  213.     ULONG   vmstat_x;                   // current virtual position
  214.     ULONG   vmstat_y;
  215.     ULONG   vmstat_flButtons;           // current button status (see BUTBITs)
  216. } VMSTAT;
  217.  
  218. typedef VMSTAT *PVMSTAT;
  219.  
  220. typedef BOOL (EXPENTRY *PFNQUERYSTAT)(HVDM, PVMSTAT);
  221.  
  222. typedef struct vmfunc_s {               /* vmfunc */
  223.     ULONG        vmfunc_nb;             // size of structure, in bytes (8)
  224.     PFNQUERYSTAT vmfunc_pfnQueryStatus; // ptr to query virtual status proc.
  225. } VMFUNC;
  226.  
  227. typedef VMFUNC *PVMFUNC;
  228.  
  229. typedef struct vmss_s {                 /* vmss */
  230.     ULONG   vmss_nb;                    // size of structure, in bytes (36)
  231.     LONG    vmss_lMode;                 // video mode (eg, 00h-13h, or -1)
  232.     ULONG   vmss_ulWidth;               // width of screen, in pixels
  233.     ULONG   vmss_ulHeight;              // height of screen, in pixels
  234.     ULONG   vmss_ulCellWidth;           // width of screen cells, in pixels
  235.     ULONG   vmss_ulCellHeight;          // height of screen cells, in pixels
  236.     ULONG   vmss_ulPtrWidth;            // width of pointer drawing size, in pixels
  237.     ULONG   vmss_ulPtrHeight;           // height of pointer drawing size, in pixels
  238.     ULONG   vmss_ulPtrUnitWidth;        // width of pointer drawing unit, in pixels
  239. } VMSSIZE;
  240.  
  241. typedef VMSSIZE *PVMSSIZE;
  242. /*end*/
  243.  
  244. #endif  // INCL_VMOUSEDEVREQ
  245.