libwacom
Wacom model identification library
libwacom.h
Go to the documentation of this file.
1 /*
2  * Copyright © 2011 Red Hat, Inc.
3  *
4  * Permission to use, copy, modify, distribute, and sell this software
5  * and its documentation for any purpose is hereby granted without
6  * fee, provided that the above copyright notice appear in all copies
7  * and that both that copyright notice and this permission notice
8  * appear in supporting documentation, and that the name of Red Hat
9  * not be used in advertising or publicity pertaining to distribution
10  * of the software without specific, written prior permission. Red
11  * Hat makes no representations about the suitability of this software
12  * for any purpose. It is provided "as is" without express or implied
13  * warranty.
14  *
15  * THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
16  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
17  * NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
18  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
19  * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
20  * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
21  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
22  *
23  * Authors:
24  * Peter Hutterer (peter.hutterer@redhat.com)
25  */
26 
27 
29 #ifndef _LIBWACOM_H_
30 #define _LIBWACOM_H_
31 
33 #include <stdint.h>
34 #include <stdio.h>
35 
36 #if defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 301)
37 #define LIBWACOM_DEPRECATED __attribute__((deprecated))
38 #else
39 #define LIBWACOM_DEPRECATED
40 #endif /* __GNUC__ */
41 
85 typedef struct _WacomDevice WacomDevice;
86 
87 typedef struct _WacomMatch WacomMatch;
88 
89 typedef struct _WacomStylus WacomStylus;
90 
91 typedef struct _WacomError WacomError;
92 
93 typedef struct _WacomDeviceDatabase WacomDeviceDatabase;
94 
95 #define WACOM_STYLUS_FALLBACK_ID 0xfffff
96 #define WACOM_ERASER_FALLBACK_ID 0xffffe
97 
108 };
109 
113 typedef enum {
119 } WacomBusType;
120 
124 typedef enum {
129 
133 typedef enum {
146 } WacomClass;
147 
151 typedef enum {
162 
166 typedef enum {
176  WACOM_BUTTON_OLED = (1 << 9),
182 
186 typedef enum {
199 
200 typedef enum {
204 
205 typedef enum {
207  WCOMPARE_MATCHES = (1 << 1),
209 
210 typedef enum {
217 
225 
233 void libwacom_error_free(WacomError **error);
234 
239 
243 const char* libwacom_error_get_message(WacomError *error);
244 
252 
262 
269 
282 WacomDevice* libwacom_new_from_path(const WacomDeviceDatabase *db, const char *path, WacomFallbackFlags fallback, WacomError *error);
283 
296 WacomDevice* libwacom_new_from_usbid(const WacomDeviceDatabase *db, int vendor_id, int product_id, WacomError *error);
297 
309 WacomDevice* libwacom_new_from_name(const WacomDeviceDatabase *db, const char *name, WacomError *error);
310 
323 
330 void libwacom_print_device_description (int fd, const WacomDevice *device);
331 
332 
338 void libwacom_destroy(WacomDevice *device);
339 
349 int libwacom_compare(const WacomDevice *a, const WacomDevice *b, WacomCompareFlags flags);
350 
355 WacomClass libwacom_get_class(const WacomDevice *device);
356 
361 const char* libwacom_get_name(const WacomDevice *device);
362 
368 const char* libwacom_get_layout_filename(const WacomDevice *device);
369 
374 int libwacom_get_vendor_id(const WacomDevice *device);
375 
381 const char* libwacom_get_match(const WacomDevice *device);
382 
388 const WacomMatch** libwacom_get_matches(const WacomDevice *device);
389 
405 
410 int libwacom_get_product_id(const WacomDevice *device);
411 
420 int libwacom_get_width(const WacomDevice *device);
421 
430 int libwacom_get_height(const WacomDevice *device);
431 
436 int libwacom_has_stylus(const WacomDevice *device);
437 
442 int libwacom_has_touch(const WacomDevice *device);
443 
450 int libwacom_get_num_buttons(const WacomDevice *device);
451 
457 const int *libwacom_get_supported_styli(const WacomDevice *device, int *num_styli);
458 
463 int libwacom_has_ring(const WacomDevice *device);
464 
469 int libwacom_has_ring2(const WacomDevice *device);
470 
475 int libwacom_has_touchswitch(const WacomDevice *device);
476 
481 int libwacom_get_ring_num_modes(const WacomDevice *device);
482 
487 int libwacom_get_ring2_num_modes(const WacomDevice *device);
488 
494 int libwacom_get_num_strips(const WacomDevice *device);
495 
500 int libwacom_get_strips_num_modes(const WacomDevice *device);
501 
507 const WacomStatusLEDs *libwacom_get_status_leds(const WacomDevice *device, int *num_leds);
508 
515 int libwacom_get_button_led_group (const WacomDevice *device,
516  char button);
517 
525 
531 int libwacom_is_reversible(const WacomDevice *device);
532 
538 
544 
551  char button);
552 
560  char button);
561 
570 
575 int libwacom_stylus_get_id (const WacomStylus *stylus);
576 
581 const char *libwacom_stylus_get_name (const WacomStylus *stylus);
582 
587 int libwacom_stylus_get_num_buttons (const WacomStylus *stylus);
588 
593 int libwacom_stylus_has_eraser (const WacomStylus *stylus);
594 
599 int libwacom_stylus_is_eraser (const WacomStylus *stylus);
600 
605 int libwacom_stylus_has_lens (const WacomStylus *stylus);
606 
611 int libwacom_stylus_has_wheel (const WacomStylus *stylus);
612 
618 
623 WacomStylusType libwacom_stylus_get_type (const WacomStylus *stylus);
624 
631 void libwacom_print_stylus_description (int fd, const WacomStylus *stylus);
632 
633 const char *libwacom_match_get_name(const WacomMatch *match);
635 uint32_t libwacom_match_get_product_id(const WacomMatch *match);
636 uint32_t libwacom_match_get_vendor_id(const WacomMatch *match);
637 const char* libwacom_match_get_match_string(const WacomMatch *match);
638 
640 #endif /* _LIBWACOM_H_ */
641 
643 /* vim: set noexpandtab tabstop=8 shiftwidth=8: */
const WacomStatusLEDs * libwacom_get_status_leds(const WacomDevice *device, int *num_leds)
Definition: libwacom.h:177
Definition: libwacom.h:125
struct _WacomMatch WacomMatch
Definition: libwacom.h:87
Definition: libwacom.h:176
Tip pressure.
Definition: libwacom.h:195
WacomButtonFlags
Capabilities of the various tablet buttons.
Definition: libwacom.h:166
Definition: libwacom.h:212
const WacomStylus * libwacom_stylus_get_for_id(const WacomDeviceDatabase *db, int id)
Get the WacomStylus for the given tool ID.
Unknown/unsupported device class.
Definition: libwacom.h:134
Any Graphire device.
Definition: libwacom.h:140
Unsupported/unknown device.
Definition: libwacom.h:107
const char * libwacom_get_match(const WacomDevice *device)
compare all possible matches too
Definition: libwacom.h:207
Definition: libwacom.h:180
enum WacomErrorCode libwacom_error_get_code(WacomError *error)
WacomClass
Classes of devices.
Definition: libwacom.h:133
Any Intuos2 series.
Definition: libwacom.h:143
Definition: libwacom.h:201
int libwacom_has_touch(const WacomDevice *device)
struct _WacomError WacomError
Definition: libwacom.h:91
Serial tablet.
Definition: libwacom.h:116
No error has occured.
Definition: libwacom.h:102
Definition: libwacom.h:156
Definition: libwacom.h:171
Definition: libwacom.h:155
int libwacom_has_ring(const WacomDevice *device)
Definition: libwacom.h:214
void libwacom_error_free(WacomError **error)
Free the error and associated memory.
WacomAxisTypeFlags
Axis type for a stylus.
Definition: libwacom.h:186
WacomErrorCode
Possible error codes.
Definition: libwacom.h:101
Any Intuos4 series.
Definition: libwacom.h:136
Definition: libwacom.h:211
int libwacom_stylus_get_num_buttons(const WacomStylus *stylus)
int libwacom_stylus_is_eraser(const WacomStylus *stylus)
Any Wacom Remote.
Definition: libwacom.h:145
Definition: libwacom.h:179
const WacomMatch ** libwacom_get_matches(const WacomDevice *device)
int libwacom_get_ring2_num_modes(const WacomDevice *device)
WacomButtonFlags libwacom_get_button_flag(const WacomDevice *device, char button)
int libwacom_get_num_strips(const WacomDevice *device)
void libwacom_destroy(WacomDevice *device)
Remove the device and free all memory and references to it.
Definition: libwacom.h:174
int libwacom_has_stylus(const WacomDevice *device)
int libwacom_get_button_led_group(const WacomDevice *device, char button)
struct _WacomDevice WacomDevice
Definition: libwacom.h:85
WacomStylusType libwacom_stylus_get_type(const WacomStylus *stylus)
const WacomMatch * libwacom_get_paired_device(const WacomDevice *device)
Return the match string of the paired device for this device.
const char * libwacom_match_get_match_string(const WacomMatch *match)
WacomCompareFlags
Definition: libwacom.h:205
Definition: libwacom.h:187
Definition: libwacom.h:154
uint32_t libwacom_match_get_vendor_id(const WacomMatch *match)
WacomDeviceDatabase * libwacom_database_new(void)
Loads the Tablet and Stylus databases, to be used in libwacom_new_*() functions.
Definition: libwacom.h:169
Any Bamboo device.
Definition: libwacom.h:139
Definition: libwacom.h:172
Definition: libwacom.h:168
Definition: libwacom.h:126
Distance to surface.
Definition: libwacom.h:193
Unknown/unsupported bus type.
Definition: libwacom.h:114
const int * libwacom_get_supported_styli(const WacomDevice *device, int *num_styli)
struct _WacomStylus WacomStylus
Definition: libwacom.h:89
Tilt in x and y direction.
Definition: libwacom.h:189
Definition: libwacom.h:127
uint32_t libwacom_match_get_product_id(const WacomMatch *match)
Allocation error.
Definition: libwacom.h:103
const char * libwacom_stylus_get_name(const WacomStylus *stylus)
Definition: libwacom.h:160
const char * libwacom_match_get_name(const WacomMatch *match)
Any "interactive pen display".
Definition: libwacom.h:144
const char * libwacom_error_get_message(WacomError *error)
int libwacom_stylus_has_wheel(const WacomStylus *stylus)
Definition: libwacom.h:167
Definition: libwacom.h:202
int libwacom_get_button_evdev_code(const WacomDevice *device, char button)
int libwacom_has_touchswitch(const WacomDevice *device)
WacomClass libwacom_get_class(const WacomDevice *device)
int libwacom_get_ring_num_modes(const WacomDevice *device)
int libwacom_get_num_buttons(const WacomDevice *device)
Tablet buttons are numbered &#39;A&#39; through to &#39;A&#39; + number of buttons.
#define LIBWACOM_DEPRECATED
Definition: libwacom.h:39
WacomDevice ** libwacom_list_devices_from_database(const WacomDeviceDatabase *db, WacomError *error)
Returns the list of devices in the given database.
Any Intuos5 series.
Definition: libwacom.h:137
WacomAxisTypeFlags libwacom_stylus_get_axes(const WacomStylus *stylus)
Definition: libwacom.h:215
Definition: libwacom.h:159
WacomStatusLEDs
Definition: libwacom.h:210
A absolute-position slider like the wheel on the airbrush.
Definition: libwacom.h:197
void libwacom_print_stylus_description(int fd, const WacomStylus *stylus)
Print the description of this stylus to the given file.
WacomBusType libwacom_get_bustype(const WacomDevice *device)
void libwacom_database_destroy(WacomDeviceDatabase *db)
Free all memory used by the database.
WacomBusType
Bus types for tablets.
Definition: libwacom.h:113
Definition: libwacom.h:170
WacomError * libwacom_error_new(void)
Allocate a new structure for error reporting.
int libwacom_get_vendor_id(const WacomDevice *device)
Definition: libwacom.h:178
Any Intuos series.
Definition: libwacom.h:142
A path specified is invalid.
Definition: libwacom.h:104
Definition: libwacom.h:157
WacomIntegrationFlags
Tablet integration.
Definition: libwacom.h:124
Definition: libwacom.h:213
int libwacom_stylus_has_lens(const WacomStylus *stylus)
WacomStylusType
Class of stylus.
Definition: libwacom.h:151
int libwacom_get_strips_num_modes(const WacomDevice *device)
WacomDeviceDatabase * libwacom_database_new_for_path(const char *datadir)
Loads the Tablet and Stylus databases, to be used in libwacom_new_*() functions, from the prefix path...
Bluetooth tablet.
Definition: libwacom.h:117
Any Intuos3 series.
Definition: libwacom.h:135
int libwacom_is_reversible(const WacomDevice *device)
int libwacom_stylus_has_eraser(const WacomStylus *stylus)
int libwacom_is_builtin(const WacomDevice *device) LIBWACOM_DEPRECATED
Definition: libwacom.h:158
WacomDevice * libwacom_new_from_name(const WacomDeviceDatabase *db, const char *name, WacomError *error)
Create a new device reference from the given name.
const char * libwacom_get_layout_filename(const WacomDevice *device)
const char * libwacom_get_name(const WacomDevice *device)
WacomDevice * libwacom_new_from_usbid(const WacomDeviceDatabase *db, int vendor_id, int product_id, WacomError *error)
Create a new device reference from the given vendor/product IDs.
Definition: libwacom.h:175
int libwacom_get_width(const WacomDevice *device)
Retrieve the width of the device.
Any serial ISDV4 device.
Definition: libwacom.h:141
struct _WacomDeviceDatabase WacomDeviceDatabase
Definition: libwacom.h:93
Rotation in the z-axis.
Definition: libwacom.h:191
compare the device only
Definition: libwacom.h:206
The passed DB is invalid.
Definition: libwacom.h:105
WacomBusType libwacom_match_get_bustype(const WacomMatch *match)
void libwacom_print_device_description(int fd, const WacomDevice *device)
Print the description of this device to the given file.
Definition: libwacom.h:173
Invalid permissions to access the path.
Definition: libwacom.h:106
int libwacom_compare(const WacomDevice *a, const WacomDevice *b, WacomCompareFlags flags)
Compare the two devices for equal-ness.
int libwacom_get_product_id(const WacomDevice *device)
Definition: libwacom.h:152
WacomDevice * libwacom_new_from_path(const WacomDeviceDatabase *db, const char *path, WacomFallbackFlags fallback, WacomError *error)
Create a new device reference from the given device path.
USB tablet.
Definition: libwacom.h:115
WacomIntegrationFlags libwacom_get_integration_flags(const WacomDevice *device)
WacomFallbackFlags
Definition: libwacom.h:200
int libwacom_get_height(const WacomDevice *device)
Retrieve the height of the device.
int libwacom_stylus_get_id(const WacomStylus *stylus)
int libwacom_has_ring2(const WacomDevice *device)
I2C tablet.
Definition: libwacom.h:118
Definition: libwacom.h:153
Any Cintiq device.
Definition: libwacom.h:138