home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ddkx86v5.zip / DDKX86 / SRC / PEN / PENTKT / PENBASE / INC / PENEI.H < prev    next >
Text File  |  1995-04-14  |  23KB  |  372 lines

  1. /*DDK*************************************************************************/
  2. /*                                                                           */
  3. /* COPYRIGHT    Copyright (C) 1995 IBM Corporation                           */
  4. /*                                                                           */
  5. /*    The following IBM OS/2 WARP source code is provided to you solely for  */
  6. /*    the purpose of assisting you in your development of OS/2 WARP device   */
  7. /*    drivers. You may use this code in accordance with the IBM License      */
  8. /*    Agreement provided in the IBM Device Driver Source Kit for OS/2. This  */
  9. /*    Copyright statement may not be removed.                                */
  10. /*                                                                           */
  11. /*****************************************************************************/
  12. /*************************************************************************/
  13. /*                                                                       */
  14. /*                                                                       */
  15. /*************************************************************************/
  16. /******************* START OF SPECIFICATIONS *****************************/
  17. /*                                                                       */
  18. /*  SOURCE FILE NAME: PENEI.H                                            */
  19. /*                                                                       */
  20. /*  DESCRIPTIVE NAME: Pen extended interface structures                  */
  21. /*                                                                       */
  22. /*                                                                       */
  23. /*  STATUS:  Version 1.0                                                 */
  24. /*                                                                       */
  25. /*  NOTES:                                                               */
  26. /*                                                                       */
  27. /*  ENTRY POINTS:                                                        */
  28. /*      See public statements                                            */
  29. /*  EXTERNAL REFERENCES:                                                 */
  30. /*      See extrn statements                                             */
  31. /*                                                                       */
  32. /******************* END  OF  SPECIFICATIONS *****************************/
  33. /*****************************************************************************/
  34. /* Extended Information Structures*/
  35.  
  36. #define PEN_EI_LEV_MAJOR  0       /* level of this specification             */
  37. #define PEN_EI_LEV_MINOR  7       /* level of this specification             */
  38.  
  39. /* defines for all dev_type                                                  */
  40. #define DT_DRIVER   0x00          /* index to access driver                  */
  41. #define DT_CONTROL  0x01          /* control (not used by pen device driver) */
  42. #define DT_SYSTEM   0x02          /* system  (not used by pen device driver) */
  43. #define DT_LOCATOR  0x03          /* locator                                 */
  44. #define DT_BUTTON   0x04          /* button                                  */
  45. #define DT_DISPLAY  0x05          /* display                                 */
  46.  
  47. /*****************************************************************************/
  48. /* Common Capabilities Packet                                                */
  49.  
  50. /* each capability packet starts with these common fields                    */
  51.  
  52. #define SIZEOF_DRIVER_NAME 8
  53. #define SIZEOF_DEVICE_NAME 32
  54. #define CCAP_DEFAULTDATA   0x01
  55. #define CCAP_OS2INI        0x00
  56.  
  57. typedef struct _CCAP         {    /* ccap                                    */
  58.   USHORT length;                  /* total length of  capabilities packet    */
  59.   UCHAR  device_type;             /* device type                             */
  60.   UCHAR  device_id;               /* device id (is returned from registration*/
  61.   UCHAR  unit;                    /* unit number within the driver           */
  62.   UCHAR  flags;                   /* round to word boundary                  */
  63.   UCHAR  driver_name[SIZEOF_DRIVER_NAME];    /* device driver name           */
  64.   UCHAR  device_name[SIZEOF_DEVICE_NAME];    /* device name                  */
  65.   USHORT event_caps;              /* events that will be generated           */
  66. } CCAP;
  67.  
  68. /* ccap.event_caps is defined by lev.cev.devicebits,                         */
  69. /* bev.cev.devicebits, dev.cev.devicebits                                    */
  70.  
  71. /*****************************************************************************/
  72. /* Driver Specific Capabilities Packet                                       */
  73.  
  74. typedef struct _DDCAP        {    /* ddcap                                   */
  75.   CCAP   ccap;                    /* Common capabilities packet              */
  76.   ULONG  capabilites;             /* reserved                                */
  77.   UCHAR  unitCount;               /* number of logical devices, including one*/
  78.                                   /* for the driver device                   */
  79.   UCHAR  rev_major;               /* driver major level                      */
  80.   UCHAR  rev_minor;               /* driver minor level                      */
  81.   UCHAR  ioc_major;               /* IOCTL interface major level             */
  82.   UCHAR  ioc_minor;               /* IOCTL interface minor level             */
  83.   UCHAR  eif_major;               /* Extended interface major level          */
  84.   UCHAR  eif_minor;               /* Extended interfcae minor level          */
  85.   UCHAR  idc_major;               /* DDS IDC interface major level           */
  86.   UCHAR  idc_minor;               /* DDS IDC interfcae minor level           */
  87. } DDCAP;
  88.  
  89. /*****************************************************************************/
  90. /* Locator Specific Capabilities Packet                                      */
  91. /* This structure can be imbedded into an OEM Capabilities Structure         */
  92. /* if you need to pass additional information such as: Whether the device    */
  93. /* timestamp is used, if the OEM_data field is being used OR how many bytes  */
  94. /* of it are being used.                                                     */
  95.  
  96. typedef struct _LCAP         {    /* lcap                                    */
  97.   CCAP   ccap;                    /* Common capabilities packet              */
  98.   USHORT type;                    /* locator type                            */
  99.   USHORT caps;                    /* locator capabilities                    */
  100.   USHORT sample_rate;             /* device sample rate                      */
  101.   USHORT max_sample_rate;         /* maximum device sample rate              */
  102.   USHORT barrel_num;              /* number of barrel buttons                */
  103.   USHORT barrel_mask;             /* bit position of barrel buttons          */
  104.   ULONG  dev_x_extent;            /* device x axis extent                    */
  105.   ULONG  dev_y_extent;            /* device y axis extent                    */
  106.   ULONG  std_x_extent;            /* standard x axis extent                  */
  107.   ULONG  std_y_extent;            /* standard y axis extent                  */
  108.   SHORT  dev_z_p_extent;          /* device z axis pressure extent (negative)*/
  109.   SHORT  dev_z_h_extent;          /* device z axis height extent (positive)  */
  110.   UCHAR  pass_rate;               /* device pass rate                        */
  111.   UCHAR  num_mouse_but;           /* number of mouse buttons emulated by dev */
  112.   USHORT std_res;                 /* points per inch for standard resolution */
  113.   USHORT dev_x_res;               /* points per inch on x axis               */
  114.   USHORT dev_y_res;               /* points per inch on y axis               */
  115.   ULONG  dev_timestampRes;        /* device timestamp resolution in micrscds */
  116. } LCAP;
  117.  
  118. /*defines for lcap.type */
  119. #define LOCTYPE_MOUSE       0x0001   /* stock device                         */
  120. #define LOCTYPE_PEN         0x0002   /* Pen                                  */
  121. #define LOCTYPE_FINGER      0x0004   /* Finger                               */
  122. #define LOCTYPE_OTHER       0x0008   /* Other                                */
  123.  
  124. #define LOCTYPE_ABSOLUTE    0x0010   /* Absolute                             */
  125. #define LOCTYPE_RELATIVE    0x0020   /* Relative                             */
  126.  
  127.  
  128. /* defines for LCAP.caps */
  129. #define PENCAP_TETHERED    0x0001    /* 1 - Tethered, 0 - Untethered         */
  130. #define PENCAP_PROXIMITY   0x0002    /* Generates enter/exit events          */
  131. #define PENCAP_PHI         0x0004    /* Stylus angle from vertical, +y direc */
  132. #define PENCAP_THETA       0x0008    /* Stylus angle from vertical, +x direc */
  133. #define PENCAP_OEMDATA     0x0010    /* OEM data reported                    */
  134. #define PENCAP_TIMESTAMP   0x0020    /* dev_timestamp reported               */
  135. #define PENCAP_ZPRESSURE   0x0040    /* Z axis represents pressure           */
  136. #define PENCAP_ZHEIGHT     0x0080    /* Z axis represents height             */
  137. #define PENCAP_PIN         0x0100    /* 1=Personal Idenification Number      */
  138. #define PENCAP_ERASER      0x0200    /* 1=device used as eraser              */
  139. #define PENCAP_DISPLAY     0x0400    /* 1=integrated display                 */
  140. #define PENCAP_BATTERY     0x0800    /* pen has battery                      */
  141. #define PENCAP_FIXED_RATE  0x4000    /* Point rate cannot be changed         */
  142.  
  143. /*defines for lcap.std_res */
  144. #define STD_RESOLUTION      1000     /* standard resolution is 1000 pts/inch */
  145. /*****************************************************************************/
  146. /* Button Specific Capabilities Packet                                       */
  147. /* button index 0 is represented with the least significant                  */
  148. /* bit in the mask (0x0001)                                                  */
  149.  
  150. typedef struct _BCAP         {    /* bcap                                        */
  151.   CCAP   ccap;                    /* Common capabilities packet                  */
  152.   USHORT num;                     /* number of buttons (0 to 16)                 */
  153.   USHORT typeMask;                /* bit mask for type (1=barrel, 0=not barrel)  */
  154.   USHORT barrel;                  /* Valid capabilites for barrel buttons   */
  155.   USHORT nonBarrel;               /* Valid capabilites for non-barrel buttons */
  156.  
  157.   USHORT nullMask;                /* bit mask to show null assignment            */
  158.   USHORT hotKeyMask;              /* bit mask to show assignment to hotkey       */
  159.   USHORT shiftMask;               /* bit mask to show assignment to mouse mod    */
  160.   USHORT appKeyMask;              /* bit mask to show assignment to appl key     */
  161.   USHORT augKeyMask;              /* bit mask to show assignment to augmentation */
  162.   USHORT gesKeyMask;              /* bit mask to show assignment to gesture mode */
  163. } BCAP;
  164.  
  165. /* Defines for BCAP.barrel  and  BCAP.nonBarrel  capabilities. */
  166. /* If these bits are set, this means the action is supported   */
  167. /* by the barrel or nonbarrel buttons.                         */
  168.  
  169. #define CAP_NOBUTTONACTION        0x0001  /* null - do nothing (the default) */
  170. #define CAP_SENDHOTKEY            0x0002  /* hot key support                 */
  171. #define CAP_SHIFTBUTTON           0x0004  /* shift button support            */
  172. #define CAP_APPLBUTTON            0x0008  /* button for application use      */
  173. #define CAP_AUGMENTATIONBUTTON    0x0010  /* button for key augmentation     */
  174. #define CAP_GESMODEBUTTON         0x0020  /* button for gesture mode         */
  175.  
  176. #define CAP_DEFAULT_BARREL CAP_NOBUTTONACTION|CAP_SHIFTBUTTON|CAP_GESMODEBUTTON
  177. #define CAP_DEFAULT_NBARREL CAP_DEFAULT_BARREL| \
  178. CAP_SENDHOTKEY|CAP_APPLBUTTON|CAP_AUGMENTATIONBUTTON
  179.  
  180. /*****************************************************************************/
  181. /* Display Specific Capabilities Packet                                      */
  182.  
  183. typedef struct _DCAP         {    /* dcap                                    */
  184.   CCAP   ccap;                    /* Common capabilities packet              */
  185.   USHORT type;                    /* display type                            */
  186.   USHORT auto_flag;               /* capable of supporting automatic inactivity */
  187.                                   /* period (1=yes, 0 = no)                  */
  188.   ULONG  height;                  /* screen height in .01 of inch            */
  189.   ULONG  width;                   /* screen width  in .01 of inch            */
  190. } DCAP;
  191.  
  192. /* defines for DCAP.type  */
  193. #define DISPTYPE_LCD       0x0001    /* 1 - LCD,      0 - not LCD           */
  194. #define DISPTYPE_CRT       0x0002    /* 1 - CRT,      0 - not CRT           */
  195. #define DISPTYPE_BLANKING  0x0004    /* Display performs screen blanking    */
  196. #define DISPTYPE_COLOR     0x0008    /* 1 - Color,    0 - Monochrome        */
  197. #define DISPTYPE_ATTACHED  0x0010    /* 1 - Attached, 0 - Portable          */
  198. #define DISPTYPE_NO_KBD    0x0020    /* No Keyboard Attached                */
  199. #define DISPTYPE_BATTERY   0x0040    /* 1 - Battery,  0 - AC power          */
  200. #define DISPTYPE_SPEAKER   0x0080    /* 1 - speaker is close to display     */
  201.  
  202. /*****************************************************************************/
  203. /* Control Specific Registration Packet */
  204.  
  205. /* NOTE: Control devices are not registered from pen device drivers*/
  206.  
  207. typedef struct _UCAP         {    /* ucap                          */
  208.   CCAP   ccap;                    /* Common capabilities packet    */
  209.   USHORT cntrl_num_devices;       /* number of devices registered  */
  210. } UCAP;
  211.  
  212. /*****************************************************************************/
  213. /* System Specific Capabilities Packet */
  214.  
  215. /* NOTE: System devices are not registered from pen device drivers */
  216.  
  217. typedef struct _SCAP         {    /* scap                          */
  218.   CCAP   ccap;                    /* Common capabilities packet    */
  219.                                   /* no specific variables         */
  220. } SCAP;
  221.  
  222. /*****************************************************************************/
  223. /* Common Event Packet */
  224.  
  225. typedef struct _CEV          {    /* cev                                     */
  226.   USHORT length;                  /* total length of eiq event packet        */
  227.   UCHAR  device_type;             /* event category - system, locator, display, control */
  228.   UCHAR  device_id;               /* identity of device that generated event */
  229.   ULONG  timestamp;               /* millisecond timestamp (not for DD)      */
  230.   UCHAR  session;                 /* foreground session number (not for DD)  */
  231.   UCHAR  cntrl;                   /* control info (not for DD)               */
  232.   USHORT devicebits;              /* event field (defined by device type)    */
  233. } CEV;
  234.  
  235. /*****************************************************************************/
  236. /* Locator Specific Event Packet */
  237.  
  238. typedef struct _LEV          {    /* lev                                     */
  239.   CEV  cev;                       /* common event packet                     */
  240.   USHORT cntrl;                   /* locator control info                    */
  241.   USHORT scr_x;                   /* screen coords (NOT filled in by pen DD) */
  242.   USHORT scr_y;                   /*  "                                      */
  243.   SHORT  scr_z;                   /*  " normalized z coord (-4k to 4k)       */
  244.   USHORT buttons;                 /* state of buttons 0 - 15;                */
  245.   ULONG  dev_x;                   /* device coordinates                      */
  246.   ULONG  dev_y;                   /*                                         */
  247.   ULONG  std_x;                   /* standard coordinates                    */
  248.   ULONG  std_y;                   /*                                         */
  249.   SHORT  dev_z;                   /* negative = pressure, positive = height  */
  250.   ULONG  dev_timestamp;           /* high resolution device timestamp        */
  251.   USHORT dev_sequence;            /* increment for each event                */
  252.                                   /* Angles range from +-180 degrees         */
  253.   SHORT  dev_angle_theta;         /* Stylus angle from vertical, increases   */
  254.                                   /* in positive x direction.                */
  255.   SHORT  dev_angle_phi;           /* Stylus angle from vertical, increases   */
  256.                                   /* in positive y direction.                */
  257.   UCHAR  OEM_data[8];             /* OEM specific locator data (optional)    */
  258. } LEV;
  259.  
  260. /* defines for LEV.cntrl */
  261. #define LOC_PASS_ON        0x0001 /* Generate mouse point */
  262. #define LOC_ARBITRATED_OUT 0x0002 /* For use my arbitration */
  263. #define LOC_SUPPRESSED     0x0004 /* suppressed contact due to bklt auto-on  */
  264. #define LOC_BKLT_OFF       0x0008 /* suppressed contact due to backlight off */
  265. #define LOC_REL            0x0010 /* dev_x and dev_y are relative            */
  266. #define LOC_ABS            0x0020 /* dev_x and dev_y are absolute            */
  267. #define LOC_FAKE           0x0040 /* device coordinates are valid, but fake  */
  268. #define LOC_INVALID        0x0080 /* screen coordinates are not valid        */
  269. #define LOC_CONTACT        0x0100 /* Indicates the locator is in contact.    */
  270. #define LOC_PROX           0x0200 /* Indicates the locator is in proximity   */
  271. #define LOC_GSTMODE        0x0400 /* Force gesture mode                      */
  272.  
  273. /* defines for LEV.cev.devicebits */
  274. /* low order byte = mouse event   */
  275. #define EV_NONE         0x00      /* no buttons, no movement           */
  276. #define EV_MOVE         0x01      /* just movement, no buttons         */
  277. #define EV_BUTTON1_MOVE 0x02      /* movement and button 1 down        */
  278. #define EV_BUTTON1      0x04      /* just button 1 down, no movement   */
  279. #define EV_BUTTON2_MOVE 0x08      /* movement and button 2 down        */
  280. #define EV_BUTTON2      0x10      /* just button 2 down, no movement   */
  281. #define EV_BUTTON3_MOVE 0x20      /* movement and button 3 down        */
  282. #define EV_BUTTON3      0x40      /* just button 3 down, no movement   */
  283.  
  284. #define EV_ANY_STAT_BUTTON   EV_BUTTON1 | EV_BUTTON2 | EV_BUTTON3
  285. #define EV_ANY_MOVE_BUTTON   \
  286. EV_BUTTON1_MOVE | EV_BUTTON2_MOVE | EV_BUTTON3_MOVE
  287. #define EV_ANY_MOVE          EV_MOVE | EV_ANY_MOVE_BUTTON
  288. #define EV_ANY_BUTTON        EV_ANY_STAT_BUTTON | EV_ANY_MOVE_BUTTON
  289. #define EV_STD_MOUSE         EV_ANY_STAT_BUTTON | EV_ANY_MOVE
  290.  
  291. /*  high order byte = mouse events that changed */
  292. #define EV_BUTTON1_CHANGED 0x0400 /* button 1 changed */
  293. #define EV_BUTTON2_CHANGED 0x1000 /* button 2 changed */
  294. #define EV_BUTTON3_CHANGED 0x4000 /* button 3 changed */
  295. #define EV_BUTTON_CHG \
  296. EV_BUTTON1_CHANGED|EV_BUTTON2_CHANGED|EV_BUTTON3_CHANGED
  297.  
  298. /*  Stroke events */
  299. #define EV_EXIT_PROX  0x0080   /* exit proximity  */
  300. #define EV_ENTER_PROX  0x8000  /* enter proximity */
  301. #define EV_PROX  EV_EXIT_PROX|EV_ENTER_PROX
  302.  
  303. /*****************************************************************************/
  304. /* Button Specific Event Packet */
  305.  
  306. typedef struct _BEV          {    /* bev                                     */
  307.   CEV  cev;                       /* common event packet                     */
  308.   USHORT cntrl;                   /* button  control info                    */
  309.   USHORT state;                   /* button state mask (1=activated 0=release*/
  310.   USHORT change;                  /* mask, 1= changed since last event report*/
  311.   UCHAR  action;                  /* action to preform                       */
  312.   UCHAR  value;                   /* hotKey value for hot key assignment or  */
  313.                                   /* Mouse button selection mask             */
  314.   UCHAR  OEM_data[8];             /* OEM specific display data (optional)    */
  315. } BEV;
  316.  
  317. /* defines for BEV.cev.devicebits */
  318. #define BEV_BUTTON_CHANGE  0x01 /* button change event */
  319.  
  320. /* defines for BEV.cntrl */
  321. #define BEV_SUPPRESSED LOC_SUPPRESSED /* suppres contact due to bklt auto-on  */
  322. #define BEV_BKLT_OFF   LOC_BKLT_OFF   /* suppres contact due to backlight off */
  323. /*****************************************************************************/
  324. /* Display Specific Event Packet */
  325.  
  326. typedef struct _DEV          {    /* dev                                     */
  327.   CEV  cev;                       /* common event packet                     */
  328.   USHORT state;                   /* state of backlight (0=off, 1=on)        */
  329.   USHORT OEM_data[8];             /* OEM specific display data (optional)    */
  330. } DEV;
  331.  
  332. /* defines for DEV.cev.devicebits */
  333. #define DEV_BACKLIGHT_CHANGE    0x01 /* state of backlight changed */
  334.  
  335. /*****************************************************************************/
  336. /* Control Specific Event Packet */
  337.  
  338. /* Note: Control devices are not provided by the device driver */
  339.  
  340. typedef struct _UEV          {    /* uev                                    */
  341.   CEV   cev;                      /* common event packet                    */
  342.   UCHAR cntrl_target_cat;         /* device type reported                   */
  343.   UCHAR cntrl_target_id;          /* device id reported                     */
  344.   UCHAR cntrl_cap_packet;         /* updated capabilities packet starts here*/
  345. } UEV;
  346.  
  347. /* defines for UEV.cev.devicebits */
  348. #define CNTRL_CAPCHANGED        0x01 /* update capabilities */
  349. /*****************************************************************************/
  350. /* System Specific Event Packet */
  351.  
  352. /* Note: System devices are not provided by the device driver */
  353.  
  354. typedef struct _SEV          {    /* sev                                */
  355.   CEV   cev;                      /* common event packet                */
  356.   UCHAR  sys_Mtype;               /* video mode type                    */
  357.   UCHAR  sys_Color;               /* number of colors                   */
  358.   USHORT sys_TCol_res;            /* text colomn resolution             */
  359.   USHORT sys_TRow_res;            /* text row resolution                */
  360.   USHORT sys_GCol_res;            /* graphics colomn resolution         */
  361.   USHORT sys_GRow_res;            /* graphics row resolution            */
  362.   UCHAR  sys_session;             /* session affected by system event   */
  363. } SEV;
  364.  
  365. /* defines for SEV.cev.devicebits */
  366. #define SYS_BEG_VMODE_CHANGE    0x01 /* beginning of video mode change  */
  367. #define SYS_END_VMODE_CHANGE    0x02 /* end of video mode change        */
  368. #define SYS_BEG_SESSION_CHANGE  0x04 /* beginning of session change     */
  369. #define SYS_END_SESSION_CHANGE  0x08 /* end of session change           */
  370. #define SYS_BEG_LOCKUP          0x10 /* beginning of lockup             */
  371. #define SYS_END_LOCKUP          0x20 /* end of lockup                   */
  372.