home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mod201j.zip / modula2.exe / os2api / mou.def < prev    next >
Text File  |  1995-01-28  |  10KB  |  333 lines

  1. DEFINITION MODULE MOU;
  2.  
  3. (*************************************************************************
  4.   OS/2 2.x or 3.0  Mouse Kernel API.
  5.  
  6.   (c) 1995 by Juergen Neuhoff
  7. **************************************************************************)
  8.  
  9. (*$XL+    Modula-2 language extensions: '_' allowed for symbol names     *)
  10. (*$A      default alignment for record fields                            *)
  11. (*$API16+ 32 to 16 bit thunking for API functions                        *)
  12.  
  13. IMPORT DOSDEVIOCTL;
  14. IMPORT SYSTEM;
  15.  
  16. TYPE
  17.   HMOU                = CARDINAL;
  18.   PHMOU               = POINTER TO HMOU;
  19.   APIRET16            = CARDINAL;
  20.   TYPEPREFIX          = BOOLEAN;
  21.  
  22. PROCEDURE MouRegister
  23. (
  24.   ModName             : ARRAY OF CHAR;
  25.   EntryName           : ARRAY OF CHAR;
  26.   Funs                : LONGCARD
  27. )                     : APIRET16;
  28.  
  29. CONST
  30.   MR_MOUGETNUMBUTTONS = 00000001H;
  31.   MR_MOUGETNUMMICKEYS = 00000002H;
  32.   MR_MOUGETDEVSTATUS  = 00000004H;
  33.   MR_MOUGETNUMQUEEL   = 00000008H;
  34.   MR_MOUREADEVENTQUE  = 00000010H;
  35.   MR_MOUGETSCALEFACT  = 00000020H;
  36.   MR_MOUGETEVENTMASK  = 00000040H;
  37.   MR_MOUSETSCALEFACT  = 00000080H;
  38.   MR_MOUSETEVENTMASK  = 00000100H;
  39.   MR_MOUOPEN          = 00000800H;
  40.   MR_MOUCLOSE         = 00001000H;
  41.   MR_MOUGETPTRSHAPE   = 00002000H;
  42.   MR_MOUSETPTRSHAPE   = 00004000H;
  43.   MR_MOUDRAWPTR       = 00008000H;
  44.   MR_MOUREMOVEPTR     = 00010000H;
  45.   MR_MOUGETPTRPOS     = 00020000H;
  46.   MR_MOUSETPTRPOS     = 00040000H;
  47.   MR_MOUINITREAL      = 00080000H;
  48.   MR_MOUSETDEVSTATUS  = 00100000H;
  49.  
  50. PROCEDURE MouDeRegister
  51. ( )                   : APIRET16;
  52.  
  53. PROCEDURE MouFlushQue
  54. (
  55.   Handle              : HMOU
  56. )                     : APIRET16;
  57.  
  58. TYPE (* structure for MouGetPtrPos() and MouSetPtrPos() *)
  59.   PTRLOC              = RECORD (* moupl *)
  60.     CASE                : TYPEPREFIX OF
  61.     | FALSE             :
  62.       Row               : CARDINAL;
  63.       Col               : CARDINAL;
  64.     | TRUE              :
  65.       row               : CARDINAL;
  66.       col               : CARDINAL;
  67.     END;                END;
  68.   PPTRLOC             = POINTER TO PTRLOC;
  69.  
  70. PROCEDURE MouGetPtrPos
  71. (
  72.   VAR Location        : PTRLOC;
  73.   Handle              : HMOU
  74. )                     : APIRET16;
  75.  
  76. PROCEDURE MouSetPtrPos
  77. (
  78.   VAR Location        : PTRLOC;
  79.   Handle              : HMOU
  80. )                     : APIRET16;
  81.  
  82. TYPE (* structure for MouGetPtrShape() and MouSetPtrShape() *)
  83.   PTRSHAPE            = RECORD (* moups *)
  84.     CASE                : TYPEPREFIX OF
  85.     | FALSE             :
  86.       Size              : CARDINAL;
  87.       Col               : CARDINAL;
  88.       Row               : CARDINAL;
  89.       ColHot            : CARDINAL;
  90.       RowHot            : CARDINAL;
  91.     | TRUE              :
  92.       cb                : CARDINAL;
  93.       col               : CARDINAL;
  94.       row               : CARDINAL;
  95.       colHot            : CARDINAL;
  96.       rowHot            : CARDINAL;
  97.     END;                END;
  98.   PPTRSHAPE           = POINTER TO PTRSHAPE;
  99.  
  100. PROCEDURE MouSetPtrShape
  101. (
  102.   VAR Shape           : ARRAY OF SYSTEM.BYTE;
  103.   VAR Info            : PTRSHAPE;
  104.   Handle              : HMOU
  105. )                     : APIRET16;
  106.  
  107. PROCEDURE MouGetPtrShape
  108. (
  109.   VAR Shape           : ARRAY OF SYSTEM.BYTE;
  110.   VAR Info            : PTRSHAPE;
  111.   Handle              : HMOU
  112. )                     : APIRET16;
  113.  
  114. CONST (* device status for MouGetDevStatus() and MouSetDevStatus() *)
  115.   MOUSE_QUEUEBUSY        = 0001H;
  116.   MOUSE_BLOCKREAD        = 0002H;
  117.   MOUSE_FLUSH            = 0004H;
  118.   MOUSE_UNSUPPORTED_MODE = 0008H;
  119.   MOUSE_DISABLED         = 0100H;
  120.   MOUSE_MICKEYS          = 0200H;
  121.  
  122. PROCEDURE MouGetDevStatus
  123. (
  124.   VAR DevStatus       : CARDINAL;
  125.   Handle              : HMOU
  126. )                     : APIRET16;
  127.  
  128. PROCEDURE MouGetNumButtons
  129. (
  130.   VAR Buttons         : CARDINAL;
  131.   Handle              : HMOU
  132. )                     : APIRET16;
  133.  
  134. PROCEDURE MouGetNumMickeys
  135. (
  136.   VAR Mickeys         : CARDINAL;
  137.   Handle              : HMOU
  138. )                     : APIRET16;
  139.  
  140. CONST (* for MouReadEventQue() *)
  141.   MOU_NOWAIT          = DOSDEVIOCTL.MOU_NOWAIT;
  142.   MOU_WAIT            = DOSDEVIOCTL.MOU_WAIT;
  143.  
  144. (*$A2  WORD alignment for record fields >= 2 bytes *)
  145.  
  146. TYPE (* structure for MouReadEventQue() *)
  147.   MOUEVENTINFO        = RECORD (* mouev *)
  148.     CASE                : TYPEPREFIX OF
  149.     | FALSE             :
  150.       Flags             : CARDINAL;
  151.       Time              : LONGCARD;
  152.       Row               : INTEGER;
  153.       Col               : INTEGER;
  154.     | TRUE              :
  155.       fs                : CARDINAL;
  156.       time              : LONGCARD;
  157.       row               : INTEGER;
  158.       col               : INTEGER;
  159.     END;                END;
  160.   PMOUEVENTINFO       = POINTER TO MOUEVENTINFO;
  161.  
  162. PROCEDURE MouReadEventQue
  163. (
  164.   VAR Event           : MOUEVENTINFO;
  165.   VAR Wait            : CARDINAL;
  166.   Handle              : HMOU
  167. )                     : APIRET16;
  168.  
  169. TYPE (* structure for MouGetNumQueEl() *)
  170.   MOUQUEINFO          = RECORD  (* mouqi *)
  171.     CASE                : TYPEPREFIX OF
  172.     | FALSE             :
  173.       Events            : CARDINAL;
  174.       MaxEvents         : CARDINAL;
  175.     | TRUE              :
  176.       cEvents           : CARDINAL;
  177.       cmaxEvents        : CARDINAL;
  178.     END;                END;
  179.   PMOUQUEINFO         = POINTER TO MOUQUEINFO;
  180.  
  181. PROCEDURE MouGetNumQueEl
  182. (
  183.   VAR QueueInfo       : MOUQUEINFO;
  184.   Handle              : HMOU
  185. )                     : APIRET16;
  186.  
  187. CONST (* events for MouGetEventMask() and MouSetEventMask *)
  188.   MOUSE_MOTION                 = DOSDEVIOCTL.MOUSE_MOTION;
  189.   MOUSE_MOTION_WITH_BN1_DOWN   = DOSDEVIOCTL.MOUSE_MOTION_WITH_BN1_DOWN;
  190.   MOUSE_BN1_DOWN               = DOSDEVIOCTL.MOUSE_BN1_DOWN;
  191.   MOUSE_MOTION_WITH_BN2_DOWN   = DOSDEVIOCTL.MOUSE_MOTION_WITH_BN2_DOWN;
  192.   MOUSE_BN2_DOWN               = DOSDEVIOCTL.MOUSE_BN2_DOWN;
  193.   MOUSE_MOTION_WITH_BN3_DOWN   = DOSDEVIOCTL.MOUSE_MOTION_WITH_BN3_DOWN;
  194.   MOUSE_BN3_DOWN               = DOSDEVIOCTL.MOUSE_BN3_DOWN;
  195.  
  196. PROCEDURE MouGetEventMask
  197. (
  198.   VAR Events          : CARDINAL;
  199.   Handle              : HMOU
  200. )                     : APIRET16;
  201.  
  202. PROCEDURE MouSetEventMask
  203. (
  204.   VAR Events          : CARDINAL;
  205.   Handle              : HMOU
  206. )                     : APIRET16;
  207.  
  208. TYPE (* structure for MouGetScaleFact() and MouSetScaleFact() *)
  209.   SCALEFACT           = RECORD  (* mousc *)
  210.     CASE                : TYPEPREFIX OF
  211.     | FALSE             :
  212.       RowScale          : CARDINAL;
  213.       ColScale          : CARDINAL;
  214.     | TRUE              :
  215.       rowScale          : CARDINAL;
  216.       colScale          : CARDINAL;
  217.     END;                END;
  218.   PSCALEFACT          = POINTER TO SCALEFACT;
  219.  
  220. PROCEDURE MouGetScaleFact
  221. (
  222.   VAR ScaleFactor     : SCALEFACT;
  223.   Handle              : HMOU
  224. )                     : APIRET16;
  225.  
  226. PROCEDURE MouSetScaleFact
  227. (
  228.   VAR ScaleFactor     : SCALEFACT;
  229.   Handle              : HMOU
  230. )                     : APIRET16;
  231.  
  232. PROCEDURE MouOpen
  233. (
  234.   DvrName             : ARRAY OF CHAR;
  235.   VAR Handle          : HMOU
  236. )                     : APIRET16;
  237.  
  238. PROCEDURE MouClose
  239. (
  240.   Handle              : HMOU
  241. )                     : APIRET16;
  242.  
  243. TYPE (* structure for MouRemovePtr() *)
  244.   NOPTRRECT           = RECORD (* mourt *)
  245.     CASE                : TYPEPREFIX OF
  246.     | FALSE             :
  247.       UpperLeftRow      : CARDINAL;
  248.       UpperLeftCol      : CARDINAL;
  249.       LowerRightRow     : CARDINAL;
  250.       LowerRightCol     : CARDINAL;
  251.     | TRUE              :
  252.       row               : CARDINAL;
  253.       col               : CARDINAL;
  254.       cRow              : CARDINAL;
  255.       cCol              : CARDINAL;
  256.     END;                END;
  257.   PNOPTRRECT          = POINTER TO NOPTRRECT;
  258.  
  259. PROCEDURE MouRemovePtr
  260. (
  261.   VAR Rectangle       : NOPTRRECT;
  262.   Handle              : HMOU
  263. )                     : APIRET16;
  264.  
  265. PROCEDURE MouDrawPtr
  266. (
  267.   Handle              : HMOU
  268. )                     : APIRET16;
  269.  
  270. CONST
  271.   MOU_NODRAW          = 0001H;
  272.   MOU_DRAW            = 0000H;
  273.   MOU_MICKEYS         = 0002H;
  274.   MOU_PELS            = 0000H;
  275.  
  276. PROCEDURE MouSetDevStatus
  277. (
  278.   VAR DevStatus       : CARDINAL;
  279.   Handle              : HMOU
  280. )                     : APIRET16;
  281.  
  282. PROCEDURE MouInitReal
  283. (
  284.   Name                : ARRAY OF CHAR
  285. )                     : APIRET16;
  286.  
  287. PROCEDURE MouSynch
  288. (
  289.   IOWait              : CARDINAL
  290. )                     : APIRET16;
  291.  
  292. TYPE
  293.   THRESHOLD           = RECORD  (* threshold *)
  294.     Length              : CARDINAL; (* Length Field            *)
  295.     Level1              : CARDINAL; (* First movement level    *)
  296.     Lev1Mult            : CARDINAL; (* First level multiplier  *)
  297.     Level2              : CARDINAL; (* Second movement level   *)
  298.     Lev2Mult            : CARDINAL; (* Second level multiplier *)
  299.                         END;
  300.   PTHRESHOLD          = POINTER TO THRESHOLD;
  301.  
  302. PROCEDURE MouGetThreshold
  303. (
  304.   VAR Threshold       : THRESHOLD;
  305.   Handle              : HMOU
  306. )                     : APIRET16;
  307.  
  308. PROCEDURE MouSetThreshold
  309. (
  310.   VAR Threshold       : THRESHOLD;
  311.   Handle              : HMOU
  312. )                     : APIRET16;
  313.  
  314. CONST (* for MouGetHotkey() and MouSetHotkey() *)
  315.   MHK_BUTTON1         = DOSDEVIOCTL.MHK_BUTTON1;
  316.   MHK_BUTTON2         = DOSDEVIOCTL.MHK_BUTTON2;
  317.   MHK_BUTTON3         = DOSDEVIOCTL.MHK_BUTTON3;
  318.  
  319. PROCEDURE MouGetHotKey
  320. (
  321.   VAR Keys            : CARDINAL;
  322.   Handle              : HMOU
  323. )                     : APIRET16;
  324.  
  325. PROCEDURE MouSetHotKey
  326. (
  327.   VAR Keys            : CARDINAL;
  328.   Handle              : HMOU
  329. )                     : APIRET16;
  330.  
  331.  
  332. END MOU.
  333.