2 * Copyright 1995-1999 by Frederic Lepied, France. <Lepied@XFree86.org>
4 * Permission to use, copy, modify, distribute, and sell this software and its
5 * documentation for any purpose is hereby granted without fee, provided that
6 * the above copyright notice appear in all copies and that both that
7 * copyright notice and this permission notice appear in supporting
8 * documentation, and that the name of Frederic Lepied not be used in
9 * advertising or publicity pertaining to distribution of the software without
10 * specific, written prior permission. Frederic Lepied makes no
11 * representations about the suitability of this software for any purpose. It
12 * is provided "as is" without express or implied warranty.
14 * FREDERIC LEPIED DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
15 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
16 * EVENT SHALL FREDERIC LEPIED BE LIABLE FOR ANY SPECIAL, INDIRECT OR
17 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
18 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
19 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
20 * PERFORMANCE OF THIS SOFTWARE.
25 * Copyright (c) 2000-2002 by The XFree86 Project, Inc.
27 * Permission is hereby granted, free of charge, to any person obtaining a
28 * copy of this software and associated documentation files (the "Software"),
29 * to deal in the Software without restriction, including without limitation
30 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
31 * and/or sell copies of the Software, and to permit persons to whom the
32 * Software is furnished to do so, subject to the following conditions:
34 * The above copyright notice and this permission notice shall be included in
35 * all copies or substantial portions of the Software.
37 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
38 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
39 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
40 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
41 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
42 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
43 * OTHER DEALINGS IN THE SOFTWARE.
45 * Except as contained in this notice, the name of the copyright holder(s)
46 * and author(s) shall not be used in advertising or otherwise to promote
47 * the sale, use or other dealings in this Software without prior written
48 * authorization from the copyright holder(s) and author(s).
56 #include <X11/extensions/XI.h>
57 #include <X11/extensions/XIproto.h>
60 /* Input device flags */
61 #define XI86_ALWAYS_CORE 0x04 /* device always controls the pointer */
62 /* the device sends Xinput and core pointer events */
63 #define XI86_SEND_CORE_EVENTS XI86_ALWAYS_CORE
64 /* 0x08 is reserved for legacy XI86_SEND_DRAG_EVENTS, do not use for now */
65 /* server-internal only */
66 #define XI86_DEVICE_DISABLED 0x10 /* device was disabled before vt switch */
68 /* This holds the input driver entry and module information. */
69 typedef struct _InputDriverRec
{
71 const char *driverName
;
72 void (*Identify
) (int flags
);
73 int (*PreInit
) (struct _InputDriverRec
* drv
,
74 struct _InputInfoRec
* pInfo
, int flags
);
75 void (*UnInit
) (struct _InputDriverRec
* drv
,
76 struct _InputInfoRec
* pInfo
, int flags
);
78 const char **default_options
;
79 } InputDriverRec
, *InputDriverPtr
;
81 /* This is to input devices what the ScrnInfoRec is to screens. */
83 typedef struct _InputInfoRec
{
84 struct _InputInfoRec
*next
;
90 Bool (*device_control
) (DeviceIntPtr device
, int what
);
91 void (*read_input
) (struct _InputInfoRec
* local
);
92 int (*control_proc
) (struct _InputInfoRec
* local
, xDeviceCtl
* control
);
93 int (*switch_mode
) (ClientPtr client
, DeviceIntPtr dev
, int mode
);
94 int (*set_device_valuators
)
95 (struct _InputInfoRec
* local
,
96 int *valuators
, int first_valuator
, int num_valuators
);
101 const char *type_name
;
104 XF86OptionPtr options
;
105 InputAttributes
*attrs
;
109 extern InputInfoPtr xf86InputDevs
;
112 extern _X_EXPORT
void xf86PostMotionEvent(DeviceIntPtr device
, int is_absolute
,
113 int first_valuator
, int num_valuators
,
115 extern _X_EXPORT
void xf86PostMotionEventP(DeviceIntPtr device
, int is_absolute
,
118 const int *valuators
);
119 extern _X_EXPORT
void xf86PostMotionEventM(DeviceIntPtr device
, int is_absolute
,
120 const ValuatorMask
*mask
);
121 extern _X_EXPORT
void xf86PostProximityEvent(DeviceIntPtr device
, int is_in
,
123 int num_valuators
, ...);
124 extern _X_EXPORT
void xf86PostProximityEventP(DeviceIntPtr device
, int is_in
,
127 const int *valuators
);
128 extern _X_EXPORT
void xf86PostProximityEventM(DeviceIntPtr device
, int is_in
,
129 const ValuatorMask
*mask
);
130 extern _X_EXPORT
void xf86PostButtonEvent(DeviceIntPtr device
, int is_absolute
,
131 int button
, int is_down
,
132 int first_valuator
, int num_valuators
,
134 extern _X_EXPORT
void xf86PostButtonEventP(DeviceIntPtr device
, int is_absolute
,
135 int button
, int is_down
,
138 const int *valuators
);
139 extern _X_EXPORT
void xf86PostButtonEventM(DeviceIntPtr device
, int is_absolute
,
140 int button
, int is_down
,
141 const ValuatorMask
*mask
);
142 extern _X_EXPORT
void xf86PostKeyEvent(DeviceIntPtr device
,
143 unsigned int key_code
, int is_down
,
144 int is_absolute
, int first_valuator
,
145 int num_valuators
, ...);
146 extern _X_EXPORT
void xf86PostKeyEventM(DeviceIntPtr device
,
147 unsigned int key_code
, int is_down
,
149 const ValuatorMask
*mask
);
150 extern _X_EXPORT
void xf86PostKeyEventP(DeviceIntPtr device
,
151 unsigned int key_code
, int is_down
,
152 int is_absolute
, int first_valuator
,
154 const int *valuators
);
155 extern _X_EXPORT
void xf86PostKeyboardEvent(DeviceIntPtr device
,
156 unsigned int key_code
, int is_down
);
157 extern _X_EXPORT
void xf86PostTouchEvent(DeviceIntPtr dev
, uint32_t touchid
,
158 uint16_t type
, uint32_t flags
,
159 const ValuatorMask
*mask
);
160 extern _X_EXPORT InputInfoPtr
xf86FirstLocalDevice(void);
161 extern _X_EXPORT
int xf86ScaleAxis(int Cx
, int to_max
, int to_min
, int from_max
,
163 extern _X_EXPORT
void xf86ProcessCommonOptions(InputInfoPtr pInfo
,
164 XF86OptionPtr options
);
165 extern _X_EXPORT Bool
xf86InitValuatorAxisStruct(DeviceIntPtr dev
, int axnum
,
166 Atom label
, int minval
,
167 int maxval
, int resolution
,
168 int min_res
, int max_res
,
170 extern _X_EXPORT
void xf86InitValuatorDefaults(DeviceIntPtr dev
, int axnum
);
171 extern _X_EXPORT
void xf86AddEnabledDevice(InputInfoPtr pInfo
);
172 extern _X_EXPORT
void xf86RemoveEnabledDevice(InputInfoPtr pInfo
);
173 extern _X_EXPORT
void xf86DisableDevice(DeviceIntPtr dev
, Bool panic
);
174 extern _X_EXPORT
void xf86EnableDevice(DeviceIntPtr dev
);
177 int xf86NewInputDevice(InputInfoPtr pInfo
, DeviceIntPtr
*pdev
, BOOL is_auto
);
178 InputInfoPtr
xf86AllocateInput(void);
181 extern _X_EXPORT
void xf86AddInputDriver(InputDriverPtr driver
, pointer module
,
183 extern _X_EXPORT
void xf86DeleteInputDriver(int drvIndex
);
184 extern _X_EXPORT InputDriverPtr
xf86LookupInputDriver(const char *name
);
185 extern _X_EXPORT InputInfoPtr
xf86LookupInput(const char *name
);
186 extern _X_EXPORT
void xf86DeleteInput(InputInfoPtr pInp
, int flags
);
187 extern _X_EXPORT
void xf86MotionHistoryAllocate(InputInfoPtr pInfo
);
188 extern _X_EXPORT
void
189 xf86IDrvMsgVerb(InputInfoPtr dev
,
190 MessageType type
, int verb
, const char *format
, ...)
191 _X_ATTRIBUTE_PRINTF(4, 5);
192 extern _X_EXPORT
void
193 xf86IDrvMsg(InputInfoPtr dev
, MessageType type
, const char *format
, ...)
194 _X_ATTRIBUTE_PRINTF(3, 4);
195 extern _X_EXPORT
void
196 xf86VIDrvMsgVerb(InputInfoPtr dev
,
197 MessageType type
, int verb
, const char *format
, va_list args
)
198 _X_ATTRIBUTE_PRINTF(4, 0);
201 extern _X_EXPORT
void
202 xf86CollectInputOptions(InputInfoPtr pInfo
, const char **defaultOpts
);
204 #endif /* _xf86Xinput_h */