home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / pentlk11.zip / PENPM.H < prev    next >
C/C++ Source or Header  |  1993-07-01  |  56KB  |  1,111 lines

  1. /****************************** Module Header ******************************\
  2. *                                                                          *
  3. * Pen for OS/2 header file                                                 *
  4. *                                                                          *
  5. * Copyright (c) 1992, 1993 IBM Corporation                                 *
  6. *                                                                          *
  7. * Module Name: penpm.h                                                     *
  8. *                                                                          *
  9. \***************************************************************************/
  10.  
  11. #ifndef PENPMH_INCLUDED
  12. #define PENPMH_INCLUDED
  13.  
  14.  
  15. LONG    APIENTRY WrtQuerySysValue(HWND DeskTop, ULONG  id);
  16. APIRET  APIENTRY WrtSetSysValue(HWND DeskTop, ULONG  id, LONG Val);
  17. APIRET  APIENTRY WrtReadSysValue(HWND DeskTop, ULONG id);
  18. APIRET  APIENTRY WrtWriteSysValue(HWND DeskTop, ULONG  id);
  19.  
  20. #define RECO_MAX_COORD   4
  21.  
  22. typedef ULONG    RECOID, HRECO;
  23. typedef RECOID   *PRECOID;
  24. typedef HRECO    *PHRECO;
  25.  
  26. typedef struct _RECODATA
  27.   {
  28.   ULONG  cbSize;              /* size of struc                       */
  29.   RECOID id;                  /* ID if reco event                    */
  30.   HRECO  hReco;               /* Reco subsystem handle               */
  31.   ULONG  virtual_id;          /* virtual id of event                 */
  32.   ULONG  char_code;           /* character code of event             */
  33.   RECTL  bound_box;           /* box that bounds gesture             */
  34.   POINTL ptlHotSpot;          /* Hot Spot X/Y screen coordinate      */
  35.   HWND   hwnd;                /* Hwnd under hot spot                 */
  36.   HWND   hwndActive;          /* Active window                       */
  37.   HWND   hwndFocus;           /* Window that has the focus           */
  38.   CHAR   *pszCommand;         /* Cmd and args gesture mapped to      */
  39.   CHAR   *pszCmdArgs;
  40.   CHAR   *pszPrefixCmd;
  41.   } RECODATA;
  42. typedef RECODATA *PRECODATA;
  43.  
  44. #define MAX_RECO_NAME_LENGTH   11  /* Maximum characters length for  */
  45.                                    /* Reco subsystem and event names */
  46.  
  47.  
  48.  
  49. #define MAX_STROKE_POINTS 1000
  50.  
  51. /*************************************************************/
  52. /* AUXPOINTDATA structure returned by WrtQueryAuxPointData() */
  53. /*                                                           */
  54. /*  AUXPOINTDATA is a static data structure available on     */
  55. /*  each WM_MOUSEMOVE.                                       */
  56. /*************************************************************/
  57.  
  58. typedef struct  _AUXPOINTDATA  /* apd */
  59.   {
  60.   USHORT         cbStructSize;   /* Structure size                */
  61.   ULONG          ulTimestamp;    /* Point timestamp               */
  62.   USHORT         usFlags;        /* Point flags                   */
  63.   USHORT         usUser;         /* For program use               */
  64.   SHORT          sScrZ;          /* Normalize Z axis value (4K to -4K)*/
  65.                                  /* Height - 0 t0 4096            */
  66.                                  /* Pressure 0 to -4096           */
  67.   SHORT          sDevZ;          /* Device Z axis value is device */
  68.                                  /*   dependant. See locator      */
  69.                                  /*   caps structure.             */
  70.   SHORT          sAngle;         /* Stylus angle to XY            */
  71.   SHORT          sRotation;      /* Stylus barrel rotation        */
  72.   USHORT         usButton;       /* Button status                 */
  73.   UCHAR          OEM[8];         /* OEM specific data             */
  74.   } AUXPOINTDATA;
  75. typedef AUXPOINTDATA *PAUXPOINTDATA; /* papd */
  76.  
  77. /* AUXPOINTDATA.usFlags Equates */
  78. #define APD_MODEMASK         0x0003   /* Mode mask (see below)          */
  79. #define APD_IDLEMODE              0   /* Stylus is idle                 */
  80. #define APD_PROXMODE              1   /* Stylus is in proximity         */
  81. #define APD_CONTACTMODE           2   /* Stylus is in contact           */
  82. #define APD_FILTERED         0x0004   /* Mouse event not passed to PM   */
  83.  
  84.  
  85. APIRET APIENTRY WrtQueryPointAuxData(PAUXPOINTDATA  papdInfo);
  86.  
  87.  
  88. /*****************************************************************/
  89. /* AUXDATADESC structure used to build the AUXDATAINFO structure */
  90. /*****************************************************************/
  91.  
  92. typedef struct  _AUXDATADESC  /* add */
  93.   {
  94.   ULONG          id;             /* Aux data type identity (See ADT_*) */
  95.   ULONG          offset;         /* Field offset                 */
  96.   ULONG          cb;             /* Aux data type byte count     */
  97.   } AUXDATADESC;
  98. typedef AUXDATADESC *PAUXDATADESC; /* padd */
  99.  
  100. /* AUXDATADESC.id Equates  */
  101. #define ADT_TIMESTAMP   0        /* Point timestamp.             */
  102. #define ADT_FLAGS       1        /* Point flags                  */
  103. #define ADT_SCREENZ     2        /* Normalized Z axis value      */
  104. #define ADT_DEVZ        3        /* Device Z axis value          */
  105. #define ADT_ANGLE       4        /* Stylus angle to XY           */
  106. #define ADT_ROTATION    5        /* Stylus rotation              */
  107. #define ADT_BUTTON      6        /* Button status                */
  108. #define ADT_USER        7        /* For program use              */
  109. #define ADT_OEM         16       /* OEM specific data            */
  110.  
  111.  
  112. /*****************************************************************/
  113. /* AUXDATAINFO structure pointed to by STROKEDATA.pAuxInfo       */
  114. /*****************************************************************/
  115.  
  116. typedef struct  _AUXDATAINFO  /* adi */
  117.   {
  118.   ULONG          cbAuxDesc;      /* Size of Aux desc structure   */
  119.   ULONG          ulNumElements;  /* Number of data elements in   */
  120.                                  /* aux data packet              */
  121.   ULONG          ulAuxSize;      /* Length of aux data packet    */
  122.                                  /* Sum of all AUXDATADESC.cb fields */
  123.   AUXDATADESC    addAuxDesc[1];  /* Array of descriptors         */
  124.   } AUXDATAINFO;
  125. typedef AUXDATAINFO *PAUXDATAINFO; /* padi */
  126.  
  127. /*****************************************************************/
  128. /* AUXSTROKEDATA structure pointed to by STROKEDATA.pAuxData     */
  129. /*****************************************************************/
  130.  
  131. typedef struct  _AUXSTROKEDATA  /* asd */
  132.   {
  133.   UCHAR          bAuxData[1][1]; /* Auxiliary stroke data        */
  134.   } AUXSTROKEDATA;
  135. typedef AUXSTROKEDATA *PAUXSTROKEDATA; /* pasd */
  136.  
  137.  
  138. /*********************************************************/
  139. /* STROKEDATA structure returned by WrtQueryStrokeData() */
  140. /*********************************************************/
  141.  
  142. typedef struct _STROKEDATA  /* sd */
  143.   {
  144.   ULONG          cbStructSize;      /* Size of stroke data header    */
  145.   ULONG          ulSource;          /* See Wrt Event Sources         */
  146.   ULONG          ulSeq;             /* Sequence number wraps at 4G   */
  147.   ULONG          ulResolution;      /* Points per Inch               */
  148.   ULONG          ulSampleRate;      /* Points per Second             */
  149.   RECTL          rclCell;           /* Rectangle Around Stroke       */
  150.   ULONG          ulNumPoints;       /* Number of points in stroke    */
  151.   ULONG          flStrokeFlags;     /* Stroke flags. (See SBF_*)     */
  152.   ULONG          ulXExtent;         /* X extent used to scale coords */
  153.   ULONG          ulYExtent;         /* Y extent used to scale coords */
  154.   ULONG          ulSensorResolution;/* Sensor resolution in dots/inch*/
  155.   ULONG          ulSensorXExtent;   /* Extent of sensor X axis       */
  156.   ULONG          ulSensorYExtent;   /* Extent of sensor Y axis       */
  157.   ULONG          ulTimestamp;       /* Timestamp of Button down      */
  158.   ULONG          ulDevTimestampRes; /* Resolution of device TS in usecs */
  159.   PPOINTL        pXY;               /* pointer to X/Y POINTL array   */
  160.   PAUXDATAINFO   pAuxInfo;          /* See AUXDATAINFO               */
  161.   PAUXSTROKEDATA pAuxData;          /* See AUXPOINTDATA              */
  162.   ULONG          ulUser1;
  163.   ULONG          ulUser2;
  164.   struct _STROKEDATA *psdFwd;   /* Recommended use-Forward chain ptr  */
  165.   struct _STROKEDATA *psdBack;  /* Recommended use-Backward chain ptr */
  166.   } STROKEDATA;
  167. typedef STROKEDATA *PSTROKEDATA; /* psd */
  168.  
  169. /* Stroke Buffer Flags */
  170. #define SBF_SCREEN          0x00000001  /* 1=Screen coords 0=hi res coord*/
  171. #define SBF_SCALE           0x00000001  /* 1=Scaled coords 0=hi res coord*/
  172. #define SBF_INKED           0x00000002  /* Stroke was inked              */
  173. #define SBF_INK_NOT_REMOVED 0x00000004  /* Stroke left inked             */
  174. #define SBF_TD_LO_SAME_HWND 0x00000008  /* Touchdown/liftoff in same hwnd*/
  175. #define SBF_STROKE_OUTSIDE_HWND 0x00000010 /* Stroke left the boundaries */
  176. #define SBF_POINTS_LOST     0x00000040  /* Points were lost (HW overrun) */
  177. #define SBF_BUFFER_OVERRUN  0x00000080  /* Points were lost (SB overrun) */
  178. #define SBF_MBUTTON_MASK    0x00001C00  /* Mask for isolating mouse butto*/
  179. #define SBF_TAP             0x00002000  /* Stroke was a tap              */
  180. #define SBF_DBLTAP          0x00004000  /* Stroke was a double tap       */
  181. #define SBF_NEGATIVE_COORDS 0x80000000  /* Contains negative window coord*/
  182.  
  183. APIRET APIENTRY WrtQueryStrokeData(PBYTE    pStrokeBuf,
  184.                                    PULONG   pBufLen,
  185.                                    HWND     hwnd,
  186.                                    ULONG    flConvopt,   /* See QSD_* */
  187.                                    ULONG    ulXOutput,
  188.                                    ULONG    ulYOutput,
  189.                                    ULONG    flAuxData);  /* See ADF_* */
  190.  
  191. #define QSD_NO_CNV           0x00000000  /* No Conversion (sensor resolution)   */
  192. #define QSD_SCALE            0x00000001  /* Scale to specified resolution       */
  193. #define QSD_STANDARDIZED_RES 0x00000002  /* Scale to standardize resolution     */
  194. #define QSD_RESOLUTION       0x00000004  /* Scale factor specified in dots/inch */
  195.  
  196.  
  197. APIRET  APIENTRY WrtMapPointLong(HWND     hwnd,
  198.                                  PPOINTL  pXY,
  199.                                  ULONG    flParms,     /* See MP_*  */
  200.                                  ULONG    ulXInput,
  201.                                  ULONG    ulYInput,
  202.                                  ULONG    ulXOutput,
  203.                                  ULONG    ulYOutput,
  204.                                  ULONG    ulCount
  205.                                  );
  206.  
  207. #define MP_SCALE        0x00000000    /* Scale coordinates (Default)              */
  208. #define MP_NO_SCALE     0x00000001    /* Do not scale coordinates                 */
  209. #define MP_RESOLUTION   0x00000002    /* Input and output expressed in resolution */
  210.  
  211.  
  212. APIRET  APIENTRY WrtSetStrictEmulation(HWND    hwnd,
  213.                                        ULONG   option);
  214. #define SSE_RESET     0x00000000    /* Reset strict emulation for app*/
  215. #define SSE_SET       0x00000001    /* Set strict emulation for appl */
  216.  
  217.  
  218. APIRET  APIENTRY WrtControlDisplayBacklight(ULONG  option, ULONG displayID);
  219. #define CDB_LIGHT_ON    0x00000001  /* Turn backlight on.            */
  220. #define CDB_LIGHT_OFF   0x00000002  /* Turn backlight off.           */
  221.  
  222. /************************************************/
  223. /*      PenPM Messages Definition Section       */
  224. /*                                              */
  225. /************************************************/
  226.  
  227. #ifndef WM_PENFIRST
  228. #define WM_PENFIRST             0x04C0        /* These equates taken    */
  229. #endif
  230.  
  231. #ifndef WM_PENLAST
  232. #define WM_PENLAST              0x04FF        /* from private pmwin.h   */
  233. #endif
  234.  
  235. #define WM_PEN_MSG   WM_PENFIRST
  236.  
  237. #define WM_TOUCHDOWN           WM_PEN_MSG + 0
  238. #define WM_LIFTOFF             WM_PEN_MSG + 1
  239. #define WM_RECO                WM_PEN_MSG + 2
  240. #define WM_RECO_COMMAND        WM_PEN_MSG + 3
  241. #define WM_SENSOR_MOVE         WM_PEN_MSG + 4
  242.  
  243. #define WM_EXIT_PROXIMITY      WM_PEN_MSG + 6
  244. #define WM_WRT_DEV_CAPS_CHANGE WM_PEN_MSG + 7
  245. #define WM_WRT_SYSVALUECHANGED WM_PEN_MSG + 8
  246. #define WM_PROXIMITY_TIMEOUT   WM_PEN_MSG + 9
  247. #define WM_PAUSE_TIMEOUT       WM_PEN_MSG + 12
  248. #define WM_STROKE              WM_PEN_MSG + 13
  249. #define WM_TAP                 WM_PEN_MSG + 14
  250. #define WM_DBL_TAP             WM_PEN_MSG + 15
  251.  
  252. /**************************************/
  253. /*   WM_TOUCHDOWN MRESULT Values      */
  254. /*   -------------------------------  */
  255. #define TDN_DEFAULT_DELAY    0x00000000  /* Delay Button 1 down (default) */
  256. #define TDN_IMMEDIATE        0x00000001  /* Immediate BUTxDOWN            */
  257. #define TDN_INFINITE         0x00000002  /* Never Issue BUTxDOWN          */
  258. #define TDN_DELAY_BITMASK TDN_DEFAULT_DELAY+TDN_IMMEDIATE+TDN_INFINITE
  259.                                          /*                               */
  260. #define TDN_INK_STROKE       0x00000000  /* Ink Stroke (Default)          */
  261. #define TDN_NO_INK_STROKE    0x00000010  /* Don't Ink Stroke              */
  262. #define TDN_LEAVE_INK        0x00000020  /* Leave Stroke Inked at liftoff */
  263. #define TDN_INK_BITMASK  TDN_INK_STROKE+TDN_NO_INK_STROKE+TDN_LEAVE_INK
  264.                                          /*                               */
  265. #define TDN_HIFREQ_MOUSEMOVE 0x00000040  /* Regenerate coalesced mouse moves */
  266. #define TDN_SENSOR_MOVE      0x00000080  /* Generate WM_SENSOR_MOVE msgs  */
  267.  
  268.  
  269.  
  270. /*************************************/
  271. /*  WM_LIFTOFF MRESULT Values        */
  272. /*  -----------------------------    */
  273. #define LO_DEFAULT           0x00000000  /* App didn't process stroke,*/
  274.                                          /*   do gesture processing   */
  275. #define LO_STROKE_PROCESSED  0x00000001  /* App processed stroke,     */
  276.                                          /*   take no other action    */
  277. #define LO_EMULATE_MOUSE     0x00000002  /* App processed stroke,     */
  278.                                          /*   perform mouse emulation */
  279.  
  280.  
  281. /*************************************/
  282. /*  WM_STROKE MRESULT Values         */
  283. /*  -----------------------------    */
  284. #define STK_DEFAULT          0x00000000  /* App didn't process stroke,*/
  285.                                          /*   do gesture processing   */
  286. #define STK_STROKE_PROCESSED 0x00000001  /* App processed stroke,     */
  287.                                          /*   take no other action    */
  288.  
  289.  
  290. /**************************************/
  291. /*  WM_PAUSE_TIMEOUT MRESULT Values   */
  292. /*  --------------------------------  */
  293.  
  294. #define PTO_DEFAULT          0x00000000  /* Allow mouse emulation     */
  295. #define PTO_CONTINUE         0x00000001  /* Remain in gesture mode    */
  296.                                          /*   take no other action    */
  297.  
  298.  
  299. /********************************************/
  300. /*   WM_TAP and WM_DBL_TAP MRESULT Values   */
  301. /*  --------------------------------------  */
  302.  
  303. #define TP_TAP_PROCESSED    0x00000001  /* App processed tap message,   */
  304.                                         /*   take no other action       */
  305. #define TP_DEFAULT          0x00000000  /* Mouse emulation is performed */
  306.                                         /* except if TDN_INFINITE was   */
  307.                                         /* returned at touchdown        */
  308.  
  309. /*************************************/
  310. /*  WM_RECO MRESULT Values           */
  311. /*  --------------------------       */
  312. #define RECO_MAP             0         /* App didn't process event, */
  313.                                        /*   PPM will map event      */
  314. #define RECO_NOMAP          -1         /* App doesn't want mapping  */
  315.                                        /*   done, only mou emulation*/
  316. #define RECO_PROCESSED       1         /* App processed reco event, */
  317.                                        /*   no mouse emul performed */
  318.  
  319.  
  320. typedef struct _WRTEVENTDATA   /* ed */
  321.   {
  322.   ULONG     cbStructSize;       /* Structure size                        */
  323.   USHORT    usKCFlags;          /* KC_* flags from mouse message         */
  324.   USHORT    usHitTest;          /* Hit test results from mouse message   */
  325.   POINTL    ptlDisplay;         /* Display X/Y coordinate                */
  326.   POINTL    ptlSensor;          /* Sensor X/Y coordinate                 */
  327.   POINTL    ptlStandard;        /* Standard X/Y coordinate               */
  328.   ULONG     flEventStatus;      /* Event status                          */
  329.   ULONG     ulStrokeSeq;        /* Stroke sequence number                */
  330.   ULONG     ulStrokeSize;       /* Number of stroke points (Liftoff only)*/
  331.   ULONG     ulLocatorID;        /* ID of pointing device                 */
  332.   ULONG     ulLocatorType;      /* Type of pointing device (See LT_*)    */
  333.   ULONG     ulLocatorFlags;     /* Pointing device flags   (See LTYPE_*) */
  334.   ULONG     ulValidityFlags;    /* Aux data validity flags (See ADF_*)   */
  335.   ULONG     ulButtonStatus;     /* Button device status                  */
  336.   HWND      hwndUnderPtr;       /* Hwnd under pointer                    */
  337.   } WRTEVENTDATA;
  338. typedef WRTEVENTDATA *PWRTEVENTDATA; /* ped */
  339.  
  340.  
  341. /*******************************************/
  342. /*   WRT_*  Event and State Indicators     */
  343. /*                                         */
  344. /*******************************************/
  345.  
  346. /* WRTEVENTDATA.flEventStatus Equates */
  347. #define WRT_STROKE_AVAIL     0x00000001   /* Stroke is avail for retrieval */
  348. #define WRT_INKING           0x00000002   /* Stroke was inked              */
  349.                                           /* Note: The next three flags are*/
  350.                                           /*       only valid if the Stroke*/
  351.                                           /*       Avail bit is set.       */
  352. #define WRT_INK_NOT_REMOVED  0x00000004   /* Stroke left inked as requested*/
  353. #define WRT_TD_LO_SAME_HWND  0x00000008   /* Touchdown/liftoff in same hwnd*/
  354. #define WRT_STROKE_OUTSIDE_HWND 0x00000010 /* Stroke left the boundaries */
  355.                                            /* of the TD window's hwnd.      */
  356. #define WRT_POINTS_LOST      0x00000040   /* Points were lost (HW overrun) */
  357. #define WRT_BUFFER_OVERRUN   0x00000080   /* Points lost (Stroke buffer overrun)*/
  358. #define WRT_NON_DEVICE_EVENT 0x00000100   /* Mouse event not generated by device*/
  359. #define WRT_MBUTTON_MASK     0x00001C00   /* Mask for isolating mouse butto*/
  360. #define WRT_MBUTTON1         0x00000400   /* Mouse button 1                */
  361. #define WRT_MBUTTON2         0x00000800   /* Mouse button 2                */
  362. #define WRT_MBUTTON3         0x00001000   /* Mouse button 3                */
  363. #define WRT_TAP              0x00002000   /* Stroke is a tap               */
  364. #define WRT_DBLTAP           0x00004000   /* Stroke is a double tap        */
  365.  
  366.  
  367. /*******************************************/
  368. /*   Virtual Event IDs                     */
  369. /*     Intent-based are individual values; */
  370. /*     User/letter events covered by one.  */
  371. /*******************************************/
  372.  
  373. #define VE_TOGGLESELECTION      (1)
  374. #define VE_HELP                 (2)
  375. #define VE_SPACE                (3)
  376. #define VE_EDIT                 (4)
  377. #define VE_DELETE               (5)
  378. #define VE_PASTE                (6)
  379. #define VE_SCRATCHOUT           (7)
  380. #define VE_DELETECHAR           (8)
  381. #define VE_INSERT               (9)
  382. #define VE_CUT                  (10)
  383. #define VE_COPY                 (11)
  384. #define VE_ASSIGNMENTS          (12)
  385. #define VE_UNDO                 (13)
  386. #define VE_ENTER                (14)
  387. #define VE_TAB                  (15)
  388. #define VE_SCROLLUP             (16)
  389. #define VE_SCROLLDOWN           (17)
  390. #define VE_SCROLLLEFT           (18)
  391. #define VE_SCROLLRIGHT          (19)
  392. #define VE_SCROLLUPMORE         (20)
  393. #define VE_SCROLLDOWNMORE       (21)
  394. #define VE_SCROLLLEFTMORE       (22)
  395. #define VE_SCROLLRIGHTMORE      (23)
  396. #define VE_SCROLLUPMAX          (24)
  397. #define VE_SCROLLDOWNMAX        (25)
  398. #define VE_SCROLLLEFTMAX        (26)
  399. #define VE_SCROLLRIGHTMAX       (27)
  400. #define VE_BACKSPACE            (28)
  401. #define VE_EXTENDSELECTION      (29)
  402. #define VE_CONTEXTMENU          (30)
  403. #define VE_BOUNDSELECTIONLEFT   (31)
  404. #define VE_BOUNDSELECTIONRIGHT  (32)
  405.  
  406. #define VE_LETTERGESTURE          (100)   /* Single value covers multiple. */
  407.  
  408.  
  409. /* string types for WrtQueryDeviceNames */
  410. typedef CHAR STR_32[32];     /* str32 */
  411. typedef STR_32 *PSTR_32;
  412.  
  413. /* defines for all device types */
  414. #define DT_LOCATOR  0x03          /* locator device  */
  415. #define DT_BUTTON   0x04          /* button device   */
  416. #define DT_DISPLAY  0x05          /* display device  */
  417.  
  418. APIRET APIENTRY WrtQueryEventData(PWRTEVENTDATA  pedInfo);
  419.  
  420. APIRET APIENTRY WrtQueryInputDeviceNames(PSZ     pszDriverName,
  421.                                          PULONG  ulNumDevices,
  422.                                          PSTR_32  aDeviceName,
  423.                                          PULONG  aDeviceType,
  424.                                          PULONG  aDeviceID);
  425.  
  426. APIRET APIENTRY WrtEnumInputDrivers(PULONG pulNumDrivers, PSTR_32 aDriverNames);
  427.  
  428. typedef struct _WRTSYSTEMINFO       /* si */
  429.   {
  430.   ULONG     cbStructSize;      /* Structure size                      */
  431.   ULONG     ulDisplayXPels;    /* Number of display X pixels          */
  432.   ULONG     ulDisplayYPels;    /* Number of display Y pixels          */
  433.   ULONG     ulDisplayXRes;     /* Display resolution                  */
  434.   ULONG     ulDisplayYRes;     /* Display resolution                  */
  435.   ULONG     ulStandardXRes;    /* Standardized dots per inch X axis   */
  436.   ULONG     ulStandardYRes;    /* Standardized dots per inch Y axis   */
  437.   ULONG     ulNumDrivers;      /* Number of registered pen drivers    */
  438.   ULONG     ulNumLocators;     /* Number of registered pointing devs  */
  439.   ULONG     ulNumButtons;      /* Number of registered button device  */
  440.   ULONG     ulNumDisplays;     /* Number of registered display devs   */
  441.   } WRTSYSTEMINFO;
  442. typedef WRTSYSTEMINFO *PWRTSYSTEMINFO; /* psi */
  443.  
  444. APIRET APIENTRY WrtQuerySystemCaps(PWRTSYSTEMINFO  psiInfo);
  445.  
  446. typedef struct _WRTLOCATORDEVINFO   /* ldi */
  447.   {
  448.   ULONG     cbStructSize;       /* Structure size                        */
  449.   ULONG     ulLocatorID;        /* ID of pointing device                 */
  450.   ULONG     ulLocatorType;      /* Type of pointing device               */
  451.   ULONG     ulLocatorFlags;     /* Pointing device flags                 */
  452.   ULONG     ulValidityFlags;    /* Aux data validity flags               */
  453.   ULONG     ulOEMValidityCnt;   /* Count of valid OEM bytes              */
  454.   ULONG     ulSensorHeight;     /* Sensor height in thousands of inches  */
  455.   ULONG     ulSensorWidth;      /* Sensor width in thousands of inches   */
  456.   ULONG     ulNumMouButtons;    /* Number of mouse buttons emulated      */
  457.   ULONG     ulNumButtons;       /* Number of buttons on pointing device  */
  458.   ULONG     ulButtonMask;       /* Mask giving IDs of barrel buttons     */
  459.   ULONG     ulSensorXpts;       /* Number of sensor X axis units         */
  460.   ULONG     ulSensorYpts;       /* Number of sensor Y axis units         */
  461.   LONG      lSensorZptsP;       /* Number of sensor Z axis pressure units*/
  462.   ULONG     ulSensorZptsH;      /* Number of sensor Z axis height units  */
  463.   ULONG     ulSensorXres;       /* Sensor X resolution (points/inch)     */
  464.   ULONG     ulSensorYres;       /* Sensor Y resolution (points/inch)     */
  465.   ULONG     ulStandardXpts;     /* Number of Standardized X axis units   */
  466.   ULONG     ulStandardYpts;     /* Number of Standardized Y axis units   */
  467.   ULONG     ulSampleRate;       /* Sample rate of stylus                 */
  468.   ULONG     ulMaxSampleRate;    /* Maximum possible point rate supported */
  469.   ULONG     ulTimestampRes;     /* Dev timestamp resolution in microsecs */
  470.   UCHAR     pszDriverName[32];  /* Name of controlling device driver     */
  471.   UCHAR     pszDeviceName[32];  /* Name of pointing device               */
  472.   } WRTLOCATORDEVINFO;
  473. typedef WRTLOCATORDEVINFO *PWRTLOCATORDEVINFO; /* pldi */
  474.  
  475. /* WRTLOCATORDEVINFO.ulLocatorType Values */
  476. #define LT_MOUSE              0x00000001 /* Mouse                     */
  477. #define LT_PEN                0x00000002 /* Stylus                    */
  478. #define LT_TOUCH              0x00000003 /* Finger touch              */
  479. #define LT_OTHER              0x00000004 /* Other misc pointing device*/
  480.  
  481. /* WRTLOCATORDEVINFO.ulLocatorFlags Values */
  482. #define LTYPE_TETHERED        0x00000001 /* Stylus is tethered          */
  483. #define LTYPE_PROXIMITY_EVENT 0x00000002 /* Proximity events reported   */
  484. #define LTYPE_TILT            0x00000004 /* Device reports angle to XY  */
  485. #define LTYPE_ROTATION        0x00000008 /* Device reports rotation     */
  486. #define LTYPE_OEMDATA         0x00000010 /* Device reports extra OEMata */
  487. #define LTYPE_TIMESTAMP       0x00000020 /* Device reports hi res timestamp*/
  488. #define LTYPE_PRESSURE        0x00000040 /* Device reports pressure     */
  489. #define LTYPE_HEIGHT          0x00000080 /* Device reports height       */
  490. #define LTYPE_PIN             0x00000100 /* Pen contains PIN            */
  491. #define LTYPE_BATTERY         0x00000800 /* Pen contains battery        */
  492. #define LTYPE_ERASURE         0x00000200 /* Erasure end of stylus reported */
  493. #define LTYPE_INTEG_SENSOR    0x00000400 /* Sensor integrated in display*/
  494. #define LTYPE_RELATIVE        0x00001000 /* Relative pointing device    */
  495.                                          /* Sensor coords from relative */
  496.                                          /* devices are offsets from    */
  497.                                          /* last reported point         */
  498. #define LTYPE_ABSOLUTE        0x00002000 /* Absolute pointing device    */
  499.  
  500.  
  501. /* WRTLOCATORDEVINFO.ulValidityFlags Values */
  502. #define ADF_TIMESTAMP         0x00000001 /* Point timestamp             */
  503. #define ADF_FLAGS             0x00000002 /* Point flags                 */
  504. #define ADF_SCREENZ           0x00000004 /* Normalized Z axis           */
  505. #define ADF_DEVZ              0x00000008 /* Device Z                    */
  506. #define ADF_ANGLE             0x00000010 /* Stylus angle to XY          */
  507. #define ADF_ROTATION          0x00000020 /* Stylus barrel rotation      */
  508. #define ADF_BUTTON            0x00000040 /* Button status               */
  509. #define ADF_OEM               0x00000080 /* OEM specific data byte cnt  */
  510. #define ADF_OEM_COUNT_MASK    0x000F0000 /* OEM valid count             */
  511. #define ADF_USER              0x00000100 /* This bit is not HW relat and*/
  512.                                          /* is always set. For appl use.*/
  513. #define ADF_ALL               0X000001FF /* All fields                  */
  514.  
  515. APIRET APIENTRY WrtQueryLocatorCaps(PULONG              ulNumLocators,
  516.                                     PWRTLOCATORDEVINFO  pldiInfo);
  517.  
  518. typedef struct _WRTBUTTONDEVINFO    /* bdi */
  519.   {
  520.   ULONG     cbStructSize;       /* Structure size                    */
  521.   ULONG     ulButtonID;         /* ID of button device               */
  522.   ULONG     ulNumButtons;       /* Number of configured buttons      */
  523.   ULONG     ulButtonMask;       /* 1=barrel,  0=non-barrel button    */
  524.   UCHAR     pszDriverName[32];  /* Name of controlling device driver */
  525.   UCHAR     pszDeviceName[32];  /* Name of button device             */
  526.   } WRTBUTTONDEVINFO;
  527. typedef WRTBUTTONDEVINFO *PWRTBUTTONDEVINFO;   /* pbdi */
  528.  
  529. APIRET APIENTRY WrtQueryButtonCaps(PULONG             ulNumButtons,
  530.                                    PWRTBUTTONDEVINFO  pbdiInfo);
  531.  
  532. typedef struct _WRTDISPLAYDEVINFO     /* ddi */
  533.   {
  534.   ULONG     cbStructSize;      /* Structure size                    */
  535.   ULONG     ulDisplayID;       /* ID of display device              */
  536.   ULONG     ulDisplayType;     /* Type of display                   */
  537.   ULONG     ulDisplayXPels;    /* Number of display X pixels        */
  538.   ULONG     ulDisplayYPels;    /* Number of display Y pixels        */
  539.   ULONG     ulDisplayXRes;     /* Display pels per inch X axis      */
  540.   ULONG     ulDisplayYRes;     /* Display pels per inch Y axis      */
  541.   ULONG     ulDisplayHeight;   /* Height of display in thousandsths */
  542.   ULONG     ulDisplayWidth;    /* Width of display in thousandsths  */
  543.   UCHAR     pszDriverName[32]; /* Name of controlling device driver */
  544.   UCHAR     pszDeviceName[32]; /* Name of display device            */
  545.   } WRTDISPLAYDEVINFO;
  546. typedef WRTDISPLAYDEVINFO *PWRTDISPLAYDEVINFO;   /* pddi */
  547.  
  548. /* WRTDISPLAYDEVINFO.ulDisplayType Values */
  549. #define DISPTYPE_LCD        0x0001   /* 1 - LCD,      0 - not LC   */
  550. #define DISPTYPE_CRT        0x0002   /* 1 - CRT,      0 - not CR   */
  551. #define DISPTYPE_BLANKING   0x0004   /* Display performs blankin   */
  552. #define DISPTYPE_COLOR      0x0008   /* 1 - Color,    0 - Monochme */
  553. #define DISPTYPE_ATTACHED   0x0010   /* 1 - Attached, 0 - Portab   */
  554. #define DISPTYPE_NO_KBD     0x0020   /* No Keyboard Attached       */
  555. #define DISPTYPE_BATTERY    0x0040   /* 1 - Battery,  0 - AC pow   */
  556. #define DISPTYPE_SPEAKER    0x0080   /* 1 - Speaker integrated     */
  557. #define DISPTYPE_MICROPHONE 0x0100   /* 1 - Microphone integrate   */
  558.  
  559. APIRET APIENTRY WrtQueryDisplayCaps(PULONG              ulDisplayID,
  560.                                     PWRTDISPLAYDEVINFO  pddiInfo);
  561.  
  562.  
  563. APIRET APIENTRY WrtWaitActive( ULONG ulTimeout );
  564.  
  565. /* WrtWaitActive Timeout equates */
  566. #define WRT_INDEFINITE_WAIT     -1L
  567. #define WRT_IMMEDIATE_RETURN     0L
  568.  
  569. APIRET APIENTRY VkpCloseKb( HWND hwnd );
  570. APIRET APIENTRY VkpHideKeyboard( HWND hwnd );
  571. APIRET APIENTRY VkpLoadKeyboard( PSZ pszKbd, HWND hwnd );
  572. APIRET APIENTRY VkpDeleteKeyboard( PSZ pszKbd, HWND hwnd );
  573. APIRET APIENTRY VkpIsKbRunning( PBOOL fRunning );
  574. APIRET APIENTRY VkpIsKbHidden( PBOOL fHidden );
  575. APIRET APIENTRY VkpQueryKbPos( PSWP pswp );
  576. APIRET APIENTRY VkpSetKbPos( LONG x, LONG y, LONG cx, LONG cy,
  577.                              ULONG fs, HWND hwnd );
  578.  
  579.  
  580. /****************************/
  581. /* PPMSV_* System Value IDs */
  582. /****************************/
  583.  
  584. /* Not stored in Profile */
  585. #define  PPMSV_VERSION                  0    /*  PenPM version number        */
  586. #define  PPMSV_RELEASE                  1
  587. #define  PPMSV_LEVEL                    2
  588. #define  PPMSV_SUSPEND                  3    /*  Suspend PenPM processing    */
  589.  
  590. /* Stored in Profile */
  591. #define  PPMSV_PEN_PAUSE               13    /*  Pen pause T.O value         */
  592. #define  PPMSV_TOUCH_PAUSE             14    /*  Touch pause T.O value       */
  593. #define  PPMSV_MOUSE_PAUSE             15    /*  Mouse pause T.O value       */
  594. #define  PPMSV_OTHER_PAUSE             16    /*  Other pause T.O value       */
  595.  
  596. #define  PPMSV_PAUSEBEEPFREQ           17    /*  Pause T.O. beep freq        */
  597. #define  PPMSV_RECO_BEEP_ENABLE        18    /*  Enable beep for no reco map */
  598. #define  PPMSV_MINGESTUREPOINTS        19    /*  Minimum gesture points      */
  599. #define  PPMSV_RECOPTRTIMER            20    /*  Timer display time          */
  600. #define  PPMSV_GESTURE_CANCEL_TIMEOUT  21    /*  Cancel gesture timeout      */
  601. #define  PPMSV_GESTURE_TIMEOUT         22    /*  Inter-stroke gesture timeout*/
  602. #define  PPMSV_STANDARDIZED_RESOLUTION 23    /*                              */
  603.  
  604. #define  PPMSV_CHARACTER_BOX_DX        24    /*  Character box dx and dy are */
  605. #define  PPMSV_CHARACTER_BOX_DY        25    /*   read-only variables        */
  606.  
  607. #define  PPMSV_TOUCH_PAUSE_ENABLE      26    /*  Touch pause T.O enable      */
  608. #define  PPMSV_PEN_PAUSE_ENABLE        27    /*  Pen pause T.O enable        */
  609. #define  PPMSV_MOUSE_PAUSE_ENABLE      28    /*  Mouse pause T.O enable      */
  610. #define  PPMSV_OTHER_PAUSE_ENABLE      29    /*  Other pause T.O enable      */
  611.  
  612. #define  PPMSV_RESERVED_FIRST          30    /*  Reserved                    */
  613. #define  PPMSV_RESERVED_LAST           39    /*  Reserved                    */
  614.  
  615. #define  PPMSV_PROFILE_FIRST           13
  616. #define  PPMSV_PROFILE_LAST            39
  617.  
  618. #define  PPMSV_NUM_PPMSV               40
  619. #define  PPMSV_PROTECTED               PPMSV_LEVEL
  620.  
  621.  
  622. /***********************************/
  623. /* PPMSV_* Variables Range Values  */
  624. /***********************************/
  625.  
  626. #define  PPMSV_TOUCH_PAUSE_MIN             150
  627. #define  PPMSV_TOUCH_PAUSE_MAX            2000
  628. #define  PPMSV_TOUCH_PAUSE_DEF             300
  629. #define  PPMSV_PEN_PAUSE_MIN               150
  630. #define  PPMSV_PEN_PAUSE_MAX              2000
  631. #define  PPMSV_PEN_PAUSE_DEF               400
  632. #define  PPMSV_MOUSE_PAUSE_MIN             150
  633. #define  PPMSV_MOUSE_PAUSE_MAX            2000
  634. #define  PPMSV_MOUSE_PAUSE_DEF             400
  635. #define  PPMSV_OTHER_PAUSE_MIN             150
  636. #define  PPMSV_OTHER_PAUSE_MAX            3500
  637. #define  PPMSV_OTHER_PAUSE_DEF             200
  638.  
  639. #define  PPMSV_GESTURE_CANCEL_TIMEOUT_MIN  500
  640. #define  PPMSV_GESTURE_CANCEL_TIMEOUT_MAX 3000
  641. #define  PPMSV_GESTURE_CANCEL_TIMEOUT_DEF 1200
  642. #define  PPMSV_GESTURE_TIMEOUT_MIN         100
  643. #define  PPMSV_GESTURE_TIMEOUT_MAX        2000
  644. #define  PPMSV_GESTURE_TIMEOUT_DEF         900
  645.  
  646. #define  PPMSV_PAUSEBEEPFREQ_MIN           100
  647. #define  PPMSV_PAUSEBEEPFREQ_MAX          4000
  648. #define  PPMSV_PAUSEBEEPFREQ_DEF           100
  649. #define  PPMSV_RECO_BEEP_ENABLE_MIN          0
  650. #define  PPMSV_RECO_BEEP_ENABLE_MAX          1
  651. #define  PPMSV_RECO_BEEP_ENABLE_DEF          1
  652.  
  653. #define  PPMSV_MINGESTUREPOINTS_MIN          1
  654. #define  PPMSV_MINGESTUREPOINTS_MAX         20
  655. #define  PPMSV_MINGESTUREPOINTS_DEF          5
  656. #define  PPMSV_RECOPTRTIMER_MIN            200
  657. #define  PPMSV_RECOPTRTIMER_MAX           1250
  658. #define  PPMSV_RECOPTRTIMER_DEF            350
  659.  
  660. #define  PPMSV_STANDARDIZED_RESOLUTION_MIN 1000
  661. #define  PPMSV_STANDARDIZED_RESOLUTION_MAX 1000
  662. #define  PPMSV_STANDARDIZED_RESOLUTION_DEF 1000
  663.  
  664. #define  PPMSV_TOUCH_PAUSE_ENABLE_MIN        0
  665. #define  PPMSV_TOUCH_PAUSE_ENABLE_MAX        1
  666. #define  PPMSV_TOUCH_PAUSE_ENABLE_DEF        1
  667. #define  PPMSV_PEN_PAUSE_ENABLE_MIN          0
  668. #define  PPMSV_PEN_PAUSE_ENABLE_MAX          1
  669. #define  PPMSV_PEN_PAUSE_ENABLE_DEF          1
  670. #define  PPMSV_MOUSE_PAUSE_ENABLE_MIN        0
  671. #define  PPMSV_MOUSE_PAUSE_ENABLE_MAX        1
  672. #define  PPMSV_MOUSE_PAUSE_ENABLE_DEF        0
  673. #define  PPMSV_OTHER_PAUSE_ENABLE_MIN        0
  674. #define  PPMSV_OTHER_PAUSE_ENABLE_MAX        1
  675. #define  PPMSV_OTHER_PAUSE_ENABLE_DEF        1
  676.  
  677. APIRET APIENTRY WrtQueryInputDeviceVariable(PSZ     pszDriverName,
  678.                                             PSZ     pszDeviceName,
  679.                                             ULONG   ulValueID, /* See PPMID_* */
  680.                                             PLONG   lValue,
  681.                                             PULONG  ulDatalen,
  682.                                             PVOID   pData);
  683. APIRET APIENTRY WrtSetInputDeviceVariable(PSZ     pszDriverName,
  684.                                           PSZ     pszDeviceName,
  685.                                           ULONG   ulValueID, /* See PPMID_* */
  686.                                           LONG    lValue,
  687.                                           ULONG   ulDatalen,
  688.                                           PVOID   pData);
  689. /*************************************/
  690. /* PPMID_* Input Device Variable IDs */
  691. /*************************************/
  692.  
  693. /* Stored in Profile */
  694. #define  PPMID_MOTION_STOP           0
  695. #define  PPMID_MOTION_START          1
  696. #define  PPMID_MINGESTURELENGTH      2
  697. #define  PPMID_DISABLE_PROXIMITY     3
  698. #define  PPMID_TOUCHOFFSET_X         4
  699. #define  PPMID_TOUCHOFFSET_Y         5
  700. #define  PPMID_BACKLIGHTBLANK        6
  701. #define  PPMID_BACKLIGHTBLANK_INT    7
  702. #define  PPMID_POINT_RATE            8
  703. #define  PPMID_DIVIDE_RATE           9
  704. #define  PPMID_DEVICE_PARMS         10
  705. #define  PPMID_RSVD_1               11
  706. #define  PPMID_RSVD_2               12
  707. #define  PPMID_RSVD_3               13
  708.  
  709. #define  PPMID_PROFILE_FIRST         0
  710. #define  PPMID_PROFILE_LAST         13
  711.  
  712. #define  PPMID_NUM_PPMID            14
  713.  
  714.  
  715. /***********************************/
  716. /* PPMID_* Variables Range Values  */
  717. /***********************************/
  718. #define  PPMID_MOTION_STOP_MIN             28
  719. #define  PPMID_MOTION_STOP_MAX            300
  720. #define  PPMID_MOTION_STOP_DEF_PEN         28
  721. #define  PPMID_MOTION_STOP_DEF_TOUCH       56
  722. #define  PPMID_MOTION_STOP_DEF_MOUSE       28
  723. #define  PPMID_MOTION_STOP_DEF_OTHER       28
  724. #define  PPMID_MOTION_START_MIN             1
  725. #define  PPMID_MOTION_START_MAX          1000
  726. #define  PPMID_MOTION_START_DEF_PEN        64
  727. #define  PPMID_MOTION_START_DEF_TOUCH     104
  728. #define  PPMID_MOTION_START_DEF_MOUSE      52
  729. #define  PPMID_MOTION_START_DEF_OTHER      25
  730.  
  731. #define  PPMID_MINGESTURELENGTH_MIN         0
  732. #define  PPMID_MINGESTURELENGTH_MAX      8000
  733. #define  PPMID_MINGESTURELENGTH_DEF_PEN   156
  734. #define  PPMID_MINGESTURELENGTH_DEF_TOUCH 233
  735. #define  PPMID_MINGESTURELENGTH_DEF_MOUSE 233
  736. #define  PPMID_MINGESTURELENGTH_DEF_OTHER 233
  737.  
  738. #define  PPMID_DISABLE_PROXIMITY_MIN        0
  739. #define  PPMID_DISABLE_PROXIMITY_MAX        1
  740. #define  PPMID_DISABLE_PROXIMITY_DEF        1
  741.  
  742. #define  PPMID_BACKLIGHTBLANK_MIN           0
  743. #define  PPMID_BACKLIGHTBLANK_MAX           1
  744. #define  PPMID_BACKLIGHTBLANK_DEF           1
  745. #define  PPMID_BACKLIGHTBLANK_INT_MIN      30
  746. #define  PPMID_BACKLIGHTBLANK_INT_MAX  500000
  747. #define  PPMID_BACKLIGHTBLANK_INT_DEF    1200
  748.  
  749. #define  PPMID_POINT_RATE_MIN              40
  750. #define  PPMID_POINT_RATE_MAX             200
  751. #define  PPMID_POINT_RATE_DEF             100
  752.  
  753. #define  PPMID_DIVIDE_RATE_MIN              1
  754. #define  PPMID_DIVIDE_RATE_MAX              8
  755. #define  PPMID_DIVIDE_RATE_DEF              2
  756. #define  PPMID_DEVICE_PARMS_MIN             0
  757. #define  PPMID_DEVICE_PARMS_MAX             1
  758. #define  PPMID_DEVICE_PARMS_DEF             1
  759.  
  760. #define  PPMID_TOUCHOFFSET_X_MIN        -1000
  761. #define  PPMID_TOUCHOFFSET_X_MAX         1000
  762. #define  PPMID_TOUCHOFFSET_X_DEF           60
  763. #define  PPMID_TOUCHOFFSET_Y_MIN        -1000
  764. #define  PPMID_TOUCHOFFSET_Y_MAX         1000
  765. #define  PPMID_TOUCHOFFSET_Y_DEF           10
  766.  
  767. /*                                                 */
  768. /*  WM_WRT_SYSVALUECHANGED message mp1 values      */
  769. /*                                                 */
  770. #define   VT_PPMSV     1
  771. #define   VT_PPMID     2
  772.  
  773.  
  774. /************************/
  775. /* WRTERR_* Error Codes */
  776. /************************/
  777. #define WRT_NO_ERROR                        0
  778. #define WRTERR_START                   0x7000
  779. #define WRTERR_ALREADY_ACTIVE          0x7001
  780. #define WRTERR_NOT_ENOUGH_MEMORY       0x7002
  781. #define WRTERR_CREATETHREAD_FAILED     0x7003
  782. #define WRTERR_SETHOOK_FAILED          0x7004
  783. #define WRTERR_RELEASEHOOK_FAILED      0x7005
  784. #define WRTERR_NOT_ACTIVE              0x7006
  785. #define WRTERR_NOT_OWNER               0x7007
  786. #define WRTERR_INVALID_HWND            0x7008
  787. #define WRTERR_INVALID_ID              0x7009
  788. #define WRTERR_INVALID_PID             0x700A
  789. #define WRTERR_TOO_MANY_MAPPERS        0x700B
  790. #define WRTERR_WRITE_FAILED            0x700C
  791. #define WRTERR_NOT_PEN_ENV             0x700D
  792. #define WRTERR_BUFFER_TOO_SMALL        0x700E
  793. #define WRTERR_STROKE_INVALID          0x700F
  794. #define WRTERR_BxDOWN_IN_STATEB        0x7010
  795. #define WRTERR_BxUP_IN_STATE0          0x7011
  796. #define WRTERR_APPL_NOT_ACTIVE         0x7012
  797.  
  798. #define REDERR_RECO_SUBSYS_NOT_REG     0x7015
  799. #define REDERR_RECO_NAME_TOO_LONG      0x7016
  800. #define REDERR_INVALID_RECO_NAME       0x7017
  801. #define REDERR_EVENT_NAME_TOO_LONG     0x7018
  802. #define REDERR_INVALID_EVENT_NAME      0x7019
  803. #define REDERR_EVENT_NAME_NOT_REG      0x701A
  804. #define REDERR_INVALID_EVENT_ID        0x701C
  805. #define REDERR_INVALID_EVENT_PTR       0x701D
  806. #define REDERR_RECO_DATA_INVALID       0x701E
  807.  
  808.  
  809. #define WRTERR_SENSORRESOLUTION_UNAVAIL 0x701F
  810. #define WRTERR_BxDOWN_IN_STATEA        0x7020
  811. #define WRTERR_HITTEST_FAILED          0x7021
  812. #define WRTERR_BACKLITE_CMD_FAILED     0x7022
  813. #define WRTERR_INVALID_PARM            0x7023
  814. #define WRTERR_INVALID_EXTENTS         0x7024
  815. #define WRTERR_INVALID_OPTION          0x7025
  816. #define WRTERR_PARM_OUT_OF_RANGE       0x7026
  817. #define WRTERR_INVALID_BUFFER          0x7027
  818. #define WRTERR_INVALID_DRIVER_NAME     0x7028
  819. #define WRTERR_INVALID_DEVICE_NAME     0x7029
  820. #define WRTERR_MORE_NAMES_AVAIL        0x702A
  821. #define WRTERR_INVALID_POINTER         0x702B
  822. #define WRTERR_INVALID_LOCATOR_ID      0x702C
  823. #define WRTERR_INVALID_BUTTON_ID       0x702D
  824. #define WRTERR_INVALID_DISPLAY_ID      0x702E
  825. #define WRTERR_STRUCT_NOT_INIT         0x702F
  826. #define WRTERR_VALUEID_DEVICE_MISMATCH 0x7030
  827. #define WRTERR_NO_DEVICE_CAPABILITY    0x7031
  828. #define WRTERR_INVALID_BUTTON_EVENT    0x7032
  829. #define WRTERR_WAIT_TIMEOUT            0x7033
  830. #define WRTERR_INVALID_MOUSE_EVENT     0x7034
  831. #define WRTERR_INVALID_INPUT           0x7035
  832. #define WRTERR_INVALID_COUNT           0x7036
  833. #define WRTERR_ID_READ_ONLY            0x7037
  834. #define WRTERR_PEN_NOT_INSTALLED       0x7038
  835.  
  836. /************************/
  837. /* VKPERR_* Error Codes */
  838. /************************/
  839.  
  840. #define VKP_NO_ERROR                   NO_ERROR
  841. #define VKPERR_OUT_OF_MEMORY           0x7100
  842. #define VKPERR_VKP_NOT_READY           0x7101
  843. #define VKPERR_INVALID_KBD_NAME        0x7102
  844. #define VKPERR_KBD_LOAD_FAILED         0x7103
  845. #define VKPERR_KBD_LOAD_TIMEOUT        0x7104
  846. #define VKPERR_INVALID_PARM            0x7105
  847. #define VKPERR_WSWP_FAILED             0x7106
  848. #define VKPERR_WQWP_FAILED             0x7107
  849. #define VKPERR_INVALID_OWNER           0x7108
  850.  
  851. /* Start of handwriting control area */
  852.  
  853. #ifndef __HWXENTRY_INCLUDED__
  854. #define __HWXENTRY_INCLUDED__
  855.  
  856. /*****************************************************************************/
  857. /*                                                                           */
  858. /* Class Name                                                                */
  859. /*                                                                           */
  860. /*****************************************************************************/
  861.  
  862. #ifndef WC_PENFIRST
  863. #define WC_PENFIRST     (0xffff0029L)
  864. #endif
  865.  
  866. #define WC_HWXENTRY     ((PSZ)0xffff0029L)
  867.  
  868. /*****************************************************************************/
  869. /*                                                                           */
  870. /* Handwriting Control Style Bits                                            */
  871. /*                                                                           */
  872. /*****************************************************************************/
  873.  
  874. #define HX_BORDER       0x0001   /* Control displays a    border        */
  875. #define HX_3DBORDER     0x0002   /* Control displays a 3D border        */
  876.  
  877. /*****************************************************************************/
  878. /*                                                                           */
  879. /*  Parent Notification Messages                                             */
  880. /*                                                                           */
  881. /*****************************************************************************/
  882.  
  883. #define HXN_STROKE_ADDED          WM_USER + 1   /* Stroke Add pending         */
  884. #define HXN_GESTURE_PENDING       WM_USER + 2   /* Gesture pending            */
  885. #define HXN_DELETE_PENDING        WM_USER + 3   /* Delete char pending        */
  886. #define HXN_INSERT_PENDING        WM_USER + 4   /* Insert char pending        */
  887. #define HXN_OVERFLOW              WM_USER + 5   /* Control text overflow      */
  888. #define HXN_SETFOCUS              WM_USER + 6   /* Input focus activated      */
  889. #define HXN_KILLFOCUS             WM_USER + 7   /* Input focus deactivated    */
  890. #define HXN_CONTENTS_CHANGED      WM_USER + 8   /* Control Recognition change */
  891.  
  892. #endif                              /* ifndef __HWXENTRY_INCLUDED__ */
  893.  
  894. /* Start of Sketch area */
  895.  
  896. #ifndef __SKETCH_INCLUDED__
  897. #define __SKETCH_INCLUDED__
  898.  
  899. /******************************************************************************/
  900. /*                                                                            */
  901. /* Class Name                                                                 */
  902. /*                                                                            */
  903. /******************************************************************************/
  904.  
  905. #ifndef WC_PENFIRST
  906. #define WC_PENFIRST     (0xffff0029L)
  907. #endif
  908.  
  909.  
  910. #define WC_SKETCH       ((PSZ)0xffff002AL)
  911.  
  912.  
  913.  
  914. /******************************************************************************/
  915. /*                                                                            */
  916. /* Control Style Bits                                                         */
  917. /*                                                                            */
  918. /******************************************************************************/
  919.  
  920. #define SKS_BORDER       0x0001   /* Control appearance is Bordered     */
  921. #define SKS_3DBORDER     0x0002   /* Control appearance is 3D Bordered  */
  922.  
  923. /******************************************************************************/
  924. /*                                                                            */
  925. /* Control Messages                                                           */
  926. /*                                                                            */
  927. /*  Messages sent to Sketch Control from Owner                                */
  928. /*                                                                            */
  929. /* These constants below are used as messages to query and change             */
  930. /* the state of a WC_SKETCH window.                                           */
  931. /* They are sent to WC_SKETCH windows using WinSendMsg like so:               */
  932. /*                                                                            */
  933. /*    rc = WinSendMsg (hwndSketch, SKM_xxx, mp1, mp2);                        */
  934. /*                                                                            */
  935. /******************************************************************************/
  936.  
  937.  
  938.                                                     /* Non modal messages     */
  939. #define SKM_DELETE_ALL_STROKES        WM_USER +  1  /*                        */
  940. #define SKM_GET_BITMAP                WM_USER +  2  /*                        */
  941. #define SKM_UNDO_LAST_STROKE          WM_USER +  3  /*                        */
  942. #define SKM_QUERY_BITMAP_SIZE         WM_USER +  4  /*                        */
  943. #define SKM_RENDER_TO_CLIPBOARD       WM_USER +  5  /*                        */
  944.                                                     /*                        */
  945.                                                     /* Query control values   */
  946. #define SKM_QUERY_CTL_DRAW_POINTER    WM_USER +  6  /*                        */
  947. #define SKM_QUERY_CTL_INK_COLOR       WM_USER +  7  /*                        */
  948. #define SKM_QUERY_CTL_INK_WIDTH       WM_USER +  8  /*                        */
  949. #define SKM_QUERY_CTL_INVISIBLE_MODE  WM_USER +  9  /*                        */
  950. #define SKM_QUERY_CTL_STROKE_COUNT    WM_USER + 10  /*                        */
  951.                                                     /*                        */
  952.                                                     /* Query stroke values    */
  953. #define SKM_QUERY_STROKE_DATA         WM_USER + 11  /*                        */
  954. #define SKM_QUERY_STROKE_INK_COLOR    WM_USER + 12  /*                        */
  955. #define SKM_QUERY_STROKE_INK_WIDTH    WM_USER + 13  /*                        */
  956. #define SKM_QUERY_STROKE_LENGTH       WM_USER + 14  /*                        */
  957.                                                     /*                        */
  958.                                                     /* Set control values     */
  959. #define SKM_SET_CTL_AUXDATA_MODE      WM_USER + 15  /* level of aux data      */
  960. #define SKM_SET_CTL_DRAW_POINTER      WM_USER + 16  /* draw pointer           */
  961. #define SKM_SET_CTL_INK_COLOR         WM_USER + 17  /* ink color              */
  962. #define SKM_SET_CTL_INK_WIDTH         WM_USER + 18  /* ink width              */
  963. #define SKM_SET_CTL_INVISIBLE_MODE    WM_USER + 19  /* invisible mode         */
  964.                                                     /*                        */
  965.                                                     /* Set stroke values      */
  966. #define SKM_SET_STROKE_INK_COLOR      WM_USER + 20  /*                        */
  967. #define SKM_SET_STROKE_INK_WIDTH      WM_USER + 21  /*                        */
  968.  
  969. #define SKM_ADD_STROKE                WM_USER + 22  /* Add a stroke           */
  970.  
  971. /******************************************************************************/
  972. /*                                                                            */
  973. /* Parent Notification Messages                                               */
  974. /*                                                                            */
  975. /* The WC_SKETCH window will send a message to its parent                     */
  976. /*                                                                            */
  977. /*     WinSendMsg (hwndOwner, WM_CONTROL,                                     */
  978. /*             MPFROM2SHORT (idSktWindow, usNotifyCode), mp2);                */
  979. /*                                                                            */
  980. /* These constants below are used as notification codes                       */
  981. /* for WM_CONTROL messages. (These are usNotifyCode's.)                       */
  982. /*                                                                            */
  983. /******************************************************************************/
  984.  
  985. #define SKN_FOCUS_ACTIVATE        WM_USER + 100   /* Control has gained focus        */
  986. #define SKN_FOCUS_DEACTIVATE      WM_USER + 102   /* Control has lost focus          */
  987. #define SKN_STROKE_ADD            WM_USER + 103   /* Control is adding stroke        */
  988. #define SKN_STROKE_UNDO           WM_USER + 104   /* Control is deleteting stroke    */
  989. #define SKN_CONTROL_CLEARED       WM_USER + 105   /* Control is deleting all strokes */
  990. #define SKN_INK_COLOR_CHANGE      WM_USER + 106   /* Control has changed ink color   */
  991. #define SKN_INK_WIDTH_CHANGE      WM_USER + 107   /* Control has changed ink width   */
  992.  
  993. /******************************************************************************/
  994. /*                                                                            */
  995. /*     Structure used to retrieve stroke(i) from the stroke database.         */
  996. /*                                                                            */
  997. /*                                                                            */
  998. /*             . ------------------------------- .                            */
  999. /*           1 .                                 .                            */
  1000. /*             . SKTCTRLSTROKEDEF                .                            */
  1001. /*             .                                 .                            */
  1002. /*             .         PSTROKEDATA             . -> 2                       */
  1003. /*             . ------------------------------- .                            */
  1004. /*           2 .                                 .                            */
  1005. /*             . STROKEDATA                      .                            */
  1006. /*             .                                 .                            */
  1007. /*             .         PPOINTL                 . -> 3                       */
  1008. /*             .                                 .                            */
  1009. /*             .         PAUXDATAINFO            . -> 4                       */
  1010. /*             .         PAUXSTROKEDATA          . -> 5                       */
  1011. /*             .                                 .                            */
  1012. /*             .         struct _STROKEDATA *    . -> NULL                    */
  1013. /*             .         struct _STROKEDATA *    . -> NULL                    */
  1014. /*             . ------------------------------- .                            */
  1015. /*           3 .                                 .                            */
  1016. /*             . X/Y POINTL array                .                            */
  1017. /*             .                                 .                            */
  1018. /*             . ------------------------------- .                            */
  1019. /*           4 .                                 .                            */
  1020. /*             . AUXDATAINFO                     .                            */
  1021. /*             .                                 .                            */
  1022. /*             . ------------------------------- .                            */
  1023. /*           5 .                                 .                            */
  1024. /*             . AUXPOINTDATA                    .                            */
  1025. /*             .                                 .                            */
  1026. /*             . ------------------------------- .                            */
  1027. /*                                                                            */
  1028. /******************************************************************************/
  1029.  
  1030. typedef struct _SKETCHSTROKEDEF
  1031. {
  1032.    ULONG  ulStrokeColor;
  1033.    ULONG  ulStrokeWidth;
  1034.    POINTL reserved1;
  1035.    ULONG  reserved2;
  1036.    ULONG  reserved3;
  1037.    PSTROKEDATA pStroke;
  1038. } SKETCHSTROKEDEF;
  1039.  
  1040. typedef SKETCHSTROKEDEF *PSKETCHSTROKEDEF;    /* Ptr->SKETCHSTROKEDEF         */
  1041. typedef PSKETCHSTROKEDEF *PPSKETCHSTROKEDEF;  /* Ptr->Ptr->SKETCHSTROKEDEF    */
  1042.  
  1043. #endif                                  /* ifndef __SKETCH_INCLUDED__ */
  1044.  
  1045. /* Start of RED area */
  1046.  
  1047. #ifndef PPMRED_INCLUDED
  1048. #define PPMRED_INCLUDED
  1049.  
  1050.  
  1051. #define REDHOBJ_OS2 (HOBJECT)(0xfffffffe)
  1052. #define REDHOBJ_WIN (HOBJECT)(0xfffffffd)
  1053. #define REDHOBJ_DOS (HOBJECT)(0xfffffffc)
  1054. #define REDHOBJ_PM  (HOBJECT)(0xfffffffb)
  1055.  
  1056.  
  1057. /*
  1058.  * Error defines for Red layer
  1059.  */
  1060. #define RED_NO_ERROR (0)
  1061. #define REDERR_INVALID_BUTTON        0x0000a000
  1062. #define REDERR_INVALID_BI            0x0000a001
  1063. #define REDERR_BUF_TOO_SMALL         0x0000a002
  1064. #define REDERR_INVALID_PARM          0x0000a003
  1065. #define REDERR_NO_MEMORY             0x0000a004
  1066. #define REDERR_NOT_FOUND             0x0000a005
  1067. #define REDERR_WRITE_ERR             0x0000a006
  1068. #define REDERR_PROFILE_ERROR         0x0000a007
  1069. #define REDERR_CMD_IS_BUILTIN        0x0000a008
  1070.  
  1071.  
  1072. /*
  1073.  * declarations for RED functions
  1074.  */
  1075.  
  1076. APIRET APIENTRY RedRegisterRecoCommand(PSZ pszCommand, ULONG id, HWND hwnd);
  1077.  
  1078. HWND APIENTRY RedQueryRecoCommand(PSZ cmdp);
  1079.  
  1080. APIRET APIENTRY RedDeregisterRecoCommand(HWND hwnd);
  1081.  
  1082.  
  1083. APIRET APIENTRY RedRecoDataFromEnv(PRECODATA prdEnv, ULONG *lenp);
  1084.  
  1085.  
  1086. APIRET APIENTRY RedQueryRecoHandle(PSZ     pszRecoSubsystem,
  1087.                                     PHRECO  phReco,
  1088.                                     PULONG pEventCount);
  1089.  
  1090.  
  1091. APIRET APIENTRY RedQueryRecoSubsystem(HRECO   hReco,
  1092.                                       PSZ     pszRecoSubsystem,
  1093.                                       PULONG pEventCount);
  1094.  
  1095.  
  1096. APIRET APIENTRY RedRecoIDFromName(HRECO   hReco,
  1097.                                   PSZ     pszEventName,
  1098.                                   PRECOID eventID);
  1099.  
  1100. APIRET APIENTRY RedRecoNameFromID(HRECO   hReco,
  1101.                                   RECOID  eventID,
  1102.                                   PSZ     pszEventName);
  1103.  
  1104. APIRET APIENTRY RedWriteObjectEventMap(HOBJECT hobj, PSZ fnamep);
  1105.  
  1106. APIRET APIENTRY RedReadObjectEventMap(HOBJECT hobj, PSZ fnamep);
  1107.  
  1108. #endif      /* ifndef RED_INCLUDED */
  1109.  
  1110. #endif
  1111.