2 * Copyright (c) 2009 Ryan Huffman
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to deal
6 * in the Software without restriction, including without limitation the rights
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 * copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23 * Ryan Huffman (ryanhuffman@gmail.com)
31 #include <xorg/xf86.h>
32 #include <xorg-server.h>
33 #include <xf86Xinput.h>
35 #include <xorgVersion.h>
36 #include <X11/extensions/XIproto.h>
37 #include <X11/extensions/XInput2.h>
38 #include <xf86_OSlib.h>
47 /* Module Functions */
49 TuioPlug(pointer
, pointer
, int *, int *);
56 TuioPreInit(InputDriverPtr
, IDevPtr
, int);
59 TuioUnInit(InputDriverPtr
, InputInfoPtr
, int);
62 TuioReadInput(InputInfoPtr
);
65 TuioControl(DeviceIntPtr
, int);
68 static XF86ModuleVersionInfo TuioVersionRec
=
75 PACKAGE_VERSION_MAJOR
, PACKAGE_VERSION_MINOR
, PACKAGE_VERSION_PATCHLEVEL
,
82 _X_EXPORT InputDriverRec TUIO
=
93 _X_EXPORT XF86ModuleData tuioModuleData
=
101 TuioPlug(pointer module
,
110 TuioUnplug(pointer p
)
116 * - Parse configuration options
117 * - Setup internal data
120 TuioPreInit(InputDriverPtr drv
, IDevPtr dev
, int flags
)
126 if (!(pInfo
= xf86AllocateInput(drv
, 0)))
129 pTuio
= xcalloc(1, sizeof(TuioDeviceRec
));
131 pInfo
->private = NULL
;
132 xf86DeleteInput(pInfo
, 0);
136 pInfo
->private = pTuio
;
138 pInfo
->name
= xstrdup(dev
->identifier
);
140 pInfo
->type_name
= XI_TOUCHSCREEN
;
141 pInfo
->conf_idev
= dev
;
142 pInfo
->read_input
= TuioReadInput
;
143 pInfo
->switch_mode
= NULL
;
144 pInfo
->device_control
= TuioControl
;
146 xf86CollectInputOptions(pInfo
, NULL
, NULL
);
147 xf86ProcessCommonOptions(pInfo
, pInfo
->options
);
149 pInfo
->flags
|= XI86_OPEN_ON_INIT
;
150 pInfo
->flags
|= XI86_CONFIGURED
;
156 TuioUnInit(InputDriverPtr drv
, InputInfoPtr pInfo
, int flags
)
158 TuioDevicePtr pTuio
= pInfo
->private;
161 xf86DeleteInput(pInfo
, 0);
165 TuioReadInput(InputInfoPtr pInfo
)
170 TuioControl(DeviceIntPtr device
, int what
)