1 /*****************************************************************************
2 ** wacomcfg.h
3 **
4 ** Copyright (C) 2003 - John E. Joganic
5 ** Copyright (C) 2004-2008 - Ping Cheng
6 **
7 ** This program is free software; you can redistribute it and/or
8 ** modify it under the terms of the GNU Lesser General Public License
9 ** as published by the Free Software Foundation; either version 2
10 ** of the License, or (at your option) any later version.
11 **
12 ** This program is distributed in the hope that it will be useful,
13 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
14 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 ** GNU Lesser General Public License for more details.
16 **
17 ** You should have received a copy of the GNU Lesser General Public License
18 ** along with this program; if not, write to the Free Software
19 ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
20 **
21 ****************************************************************************/
22 
23 #ifndef __LINUXWACOM_WACOMCFG_H
24 #define __LINUXWACOM_WACOMCFG_H
25 
26 #include <X11/Xlib.h>
27 #include <X11/extensions/XInput.h>
28 #include <X11/extensions/XIproto.h>
29 
30 /* JEJ - NOTE WE DO NOT INCLUDE Xwacom.h HERE.  THIS ELIMINATES A CONFLICT
31  *       WHEN THIS FILE IS INSTALLED SINCE Xwacom.h WILL IN MANY CASES NOT
32  *       GO WITH IT.  SOMEDAY IT MAY BE PART OF XFREE86. */
33 
34 typedef struct _WACOMCONFIG WACOMCONFIG;
35 typedef struct _WACOMDEVICE WACOMDEVICE;
36 typedef void (*WACOMERRORFUNC)(int err, const char* pszText);
37 typedef struct _WACOMDEVICEINFO WACOMDEVICEINFO;
38 
39 typedef enum
40 {
41 	WACOMDEVICETYPE_UNKNOWN,
42 	WACOMDEVICETYPE_CURSOR,
43 	WACOMDEVICETYPE_STYLUS,
44 	WACOMDEVICETYPE_ERASER,
45 	WACOMDEVICETYPE_PAD,
46 	WACOMDEVICETYPE_TOUCH,
47 	WACOMDEVICETYPE_MAX
48 } WACOMDEVICETYPE;
49 
50 struct _WACOMDEVICEINFO
51 {
52 	const char* pszName;
53 	WACOMDEVICETYPE type;
54 };
55 
56 struct _WACOMCONFIG
57 {
58 	Display* pDisp;
59 	WACOMERRORFUNC pfnError;
60 	XDeviceInfo * pDevs;
61 	int nDevCnt;
62 };
63 
64 struct _WACOMDEVICE
65 {
66 	WACOMCONFIG* pCfg;
67 	XDevice* pDev;
68 };
69 
70 
71 /*****************************************************************************
72 ** Functions
73 *****************************************************************************/
74 
75 WACOMCONFIG * WacomConfigInit(Display* pDisplay, WACOMERRORFUNC pfnErrorHandler);
76 /* Initializes configuration library.
77  *   pDisplay        - display to configure
78  *   pfnErrorHandler - handler to which errors are reported; may be NULL
79  * Returns WACOMCONFIG handle on success, NULL on error.
80  *   errno contains error code. */
81 
82 void WacomConfigTerm(WACOMCONFIG * hConfig);
83 /* Terminates configuration library, releasing display. */
84 
85 int WacomConfigListDevices(WACOMCONFIG * hConfig, WACOMDEVICEINFO** ppInfo,
86 	unsigned int* puCount);
87 /* Returns a list of wacom devices.
88  *   ppInfo         - pointer to WACOMDEVICEINFO* to receive device data
89  *   puSize         - pointer to receive device count
90  * Returns 0 on success, -1 on failure.  errno contains error code.
91  * Comments: You must free this structure using WacomConfigFree. */
92 
93 WACOMDEVICE * WacomConfigOpenDevice(WACOMCONFIG * hConfig,
94 	const char* pszDeviceName);
95 /* Open a device by name.
96  *   pszDeviceName  - name of XInput device corresponding to wacom device
97  * Returns handle to device on success, NULL on error.
98  *   errno contains error code.
99  * Comments: Close using WacomConfigCloseDevice */
100 
101 int WacomConfigCloseDevice(WACOMDEVICE * hDevice);
102 /* Closes a device.
103  * Returns 0 on success, -1 on error.  errno contains error code. */
104 
105 int WacomConfigSetRawParam(WACOMDEVICE * hDevice, int nParam, int nValue, unsigned * keys);
106 /* Sets the raw device parameter to specified value.
107  *   nParam         - valid paramters can be found Xwacom.h which is not
108  *                      automatically included.
109  *   nValue         - 32 bit integer value
110  *   keys	    - an array of keys and modifiers
111  * Returns 0 on success, -1 on error.  errno contains error code.
112  *   EINVAL  - invalid parameter or value
113  *   EIO     - unknown X failure, use XSetErrorHandler to capture complete
114  *             error code and message
115  * Comments: Data is sent to wacom_drv module without any error checking.
116  *   Generally, you should use the more specific handler functions in this
117  *   library, but for some parameters, particularly experimental ones, you
118  *   will probably have to set them directly. */
119 
120 int WacomConfigGetRawParam(WACOMDEVICE *hDevice, int nParam, int *nValue, int valu, unsigned * keys);
121 /* Gets the raw device parameter.
122  *   nParam         - valid paramters can be found Xwacom.h which is not
123  *                      automatically included.
124  *   nValue         - the device parameter is returned in the integer
125  *                    pointed by this parameter.
126  *   valu	    - calling valuator value: 1: Get 3: GetDefault
127  *   keys	    - an array of keys and modifiers
128  * Returns 0 on success, -1 on error.  errno contains error code.
129  *   EINVAL  - invalid parameter or value
130  *   EIO     - unknown X failure, use XSetErrorHandler to capture complete
131  *             error code and message
132  */
133 
134 void WacomConfigFree(void* pvData);
135 /* Frees memory allocated by library. */
136 
137 #endif /* __LINUXWACOM_WACOMCFG_H */
138 
139