libwacom
Wacom model identification library
libwacom.h File Reference
#include <stdint.h>
#include <stdio.h>
Include dependency graph for libwacom.h:

Go to the source code of this file.

Macros

#define LIBWACOM_DEPRECATED
 
#define WACOM_STYLUS_FALLBACK_ID   0xfffff
 
#define WACOM_ERASER_FALLBACK_ID   0xffffe
 

Typedefs

typedef struct _WacomDevice WacomDevice
 
typedef struct _WacomBuilder WacomBuilder
 
typedef struct _WacomMatch WacomMatch
 
typedef struct _WacomStylus WacomStylus
 
typedef struct _WacomError WacomError
 
typedef struct _WacomDeviceDatabase WacomDeviceDatabase
 

Enumerations

enum  WacomErrorCode {
  WERROR_NONE , WERROR_BAD_ALLOC , WERROR_INVALID_PATH , WERROR_INVALID_DB ,
  WERROR_BAD_ACCESS , WERROR_UNKNOWN_MODEL , WERROR_BUG_CALLER
}
 Possible error codes. More...
 
enum  WacomBusType {
  WBUSTYPE_UNKNOWN , WBUSTYPE_USB , WBUSTYPE_SERIAL , WBUSTYPE_BLUETOOTH ,
  WBUSTYPE_I2C
}
 Bus types for tablets. More...
 
enum  WacomIntegrationFlags { WACOM_DEVICE_INTEGRATED_NONE = 0 , WACOM_DEVICE_INTEGRATED_DISPLAY = (1 << 0) , WACOM_DEVICE_INTEGRATED_SYSTEM = (1 << 1) }
 Tablet integration. More...
 
enum  WacomClass {
  WCLASS_UNKNOWN , WCLASS_INTUOS3 , WCLASS_INTUOS4 , WCLASS_INTUOS5 ,
  WCLASS_CINTIQ , WCLASS_BAMBOO , WCLASS_GRAPHIRE , WCLASS_ISDV4 ,
  WCLASS_INTUOS , WCLASS_INTUOS2 , WCLASS_PEN_DISPLAYS , WCLASS_REMOTE
}
 Classes of devices. More...
 
enum  WacomStylusType {
  WSTYLUS_UNKNOWN , WSTYLUS_GENERAL , WSTYLUS_INKING , WSTYLUS_AIRBRUSH ,
  WSTYLUS_CLASSIC , WSTYLUS_MARKER , WSTYLUS_STROKE , WSTYLUS_PUCK ,
  WSTYLUS_3D , WSTYLUS_MOBILE
}
 Class of stylus. More...
 
enum  WacomEraserType { WACOM_ERASER_UNKNOWN , WACOM_ERASER_NONE , WACOM_ERASER_INVERT , WACOM_ERASER_BUTTON }
 Type of eraser on a stylus. More...
 
enum  WacomButtonFlags {
  WACOM_BUTTON_NONE = 0 , WACOM_BUTTON_POSITION_LEFT = (1 << 1) , WACOM_BUTTON_POSITION_RIGHT = (1 << 2) , WACOM_BUTTON_POSITION_TOP = (1 << 3) ,
  WACOM_BUTTON_POSITION_BOTTOM = (1 << 4) , WACOM_BUTTON_RING_MODESWITCH = (1 << 5) , WACOM_BUTTON_RING2_MODESWITCH = (1 << 6) , WACOM_BUTTON_TOUCHSTRIP_MODESWITCH = (1 << 7) ,
  WACOM_BUTTON_TOUCHSTRIP2_MODESWITCH = (1 << 8) , WACOM_BUTTON_OLED = (1 << 9) , WACOM_BUTTON_DIAL_MODESWITCH = (1 << 10) , WACOM_BUTTON_DIAL2_MODESWITCH = (1 << 11) ,
  WACOM_BUTTON_MODESWITCH = (WACOM_BUTTON_RING_MODESWITCH | WACOM_BUTTON_RING2_MODESWITCH | WACOM_BUTTON_TOUCHSTRIP_MODESWITCH | WACOM_BUTTON_TOUCHSTRIP2_MODESWITCH | WACOM_BUTTON_DIAL_MODESWITCH | WACOM_BUTTON_DIAL2_MODESWITCH) , WACOM_BUTTON_DIRECTION = (WACOM_BUTTON_POSITION_LEFT | WACOM_BUTTON_POSITION_RIGHT | WACOM_BUTTON_POSITION_TOP | WACOM_BUTTON_POSITION_BOTTOM) , WACOM_BUTTON_RINGS_MODESWITCH = (WACOM_BUTTON_RING_MODESWITCH | WACOM_BUTTON_RING2_MODESWITCH) , WACOM_BUTTON_TOUCHSTRIPS_MODESWITCH = (WACOM_BUTTON_TOUCHSTRIP_MODESWITCH | WACOM_BUTTON_TOUCHSTRIP2_MODESWITCH) ,
  WACOM_BUTTON_DIALS_MODESWITCH = (WACOM_BUTTON_DIAL_MODESWITCH | WACOM_BUTTON_DIAL2_MODESWITCH)
}
 Capabilities of the various tablet buttons. More...
 
enum  WacomAxisTypeFlags {
  WACOM_AXIS_TYPE_NONE = 0 , WACOM_AXIS_TYPE_TILT = (1 << 1) , WACOM_AXIS_TYPE_ROTATION_Z = (1 << 2) , WACOM_AXIS_TYPE_DISTANCE = (1 << 3) ,
  WACOM_AXIS_TYPE_PRESSURE = (1 << 4) , WACOM_AXIS_TYPE_SLIDER = (1 << 5)
}
 Axis type for a stylus. More...
 
enum  WacomFallbackFlags { WFALLBACK_NONE = 0 , WFALLBACK_GENERIC = 1 }
 
enum  WacomCompareFlags { WCOMPARE_NORMAL = 0 , WCOMPARE_MATCHES = (1 << 1) }
 
enum  WacomStatusLEDs {
  WACOM_STATUS_LED_UNAVAILABLE = -1 , WACOM_STATUS_LED_RING = 0 , WACOM_STATUS_LED_RING2 = 1 , WACOM_STATUS_LED_TOUCHSTRIP = 2 ,
  WACOM_STATUS_LED_TOUCHSTRIP2 = 3
}
 

Functions

WacomErrorlibwacom_error_new (void)
 Allocate a new structure for error reporting. More...
 
void libwacom_error_free (WacomError **error)
 Free the error and associated memory. More...
 
enum WacomErrorCode libwacom_error_get_code (WacomError *error)
 
const char * libwacom_error_get_message (WacomError *error)
 
WacomDeviceDatabaselibwacom_database_new (void)
 Loads the Tablet and Stylus databases, to be used in libwacom_new_*() functions. More...
 
WacomDeviceDatabaselibwacom_database_new_for_path (const char *datadir)
 Loads the Tablet and Stylus databases, to be used in libwacom_new_*() functions, from the prefix path passes. More...
 
void libwacom_database_destroy (WacomDeviceDatabase *db)
 Free all memory used by the database. More...
 
WacomDevicelibwacom_new_from_builder (const WacomDeviceDatabase *db, const WacomBuilder *builder, WacomFallbackFlags fallback, WacomError *error)
 Create a new device reference for the given builder. More...
 
WacomDevicelibwacom_new_from_path (const WacomDeviceDatabase *db, const char *path, WacomFallbackFlags fallback, WacomError *error)
 Create a new device reference from the given device path. More...
 
WacomDevicelibwacom_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. More...
 
WacomDevicelibwacom_new_from_name (const WacomDeviceDatabase *db, const char *name, WacomError *error)
 Create a new device reference from the given name. More...
 
WacomDevice ** libwacom_list_devices_from_database (const WacomDeviceDatabase *db, WacomError *error)
 Returns the list of devices in the given database. More...
 
void libwacom_print_device_description (int fd, const WacomDevice *device)
 Print the description of this device to the given file. More...
 
void libwacom_destroy (WacomDevice *device)
 Remove the device and free all memory and references to it. More...
 
int libwacom_compare (const WacomDevice *a, const WacomDevice *b, WacomCompareFlags flags)
 Compare the two devices for equal-ness. More...
 
LIBWACOM_DEPRECATED WacomClass libwacom_get_class (const WacomDevice *device)
 
const char * libwacom_get_name (const WacomDevice *device)
 
const char * libwacom_get_model_name (const WacomDevice *device)
 
const char * libwacom_get_layout_filename (const WacomDevice *device)
 
int libwacom_get_vendor_id (const WacomDevice *device)
 
const char * libwacom_get_match (const WacomDevice *device)
 
const WacomMatch ** libwacom_get_matches (const WacomDevice *device)
 
const WacomMatchlibwacom_get_paired_device (const WacomDevice *device)
 Return the match string of the paired device for this device. More...
 
int libwacom_get_product_id (const WacomDevice *device)
 
int libwacom_get_width (const WacomDevice *device)
 Retrieve the width of the device. More...
 
int libwacom_get_height (const WacomDevice *device)
 Retrieve the height of the device. More...
 
int libwacom_has_stylus (const WacomDevice *device)
 
int libwacom_has_touch (const WacomDevice *device)
 
int libwacom_get_num_buttons (const WacomDevice *device)
 Tablet buttons are numbered 'A' through to 'A' + number of buttons. More...
 
int libwacom_get_num_keys (const WacomDevice *device)
 Tablet keys indices are numbered from zero. More...
 
const int * libwacom_get_supported_styli (const WacomDevice *device, int *num_styli)
 
int libwacom_has_ring (const WacomDevice *device) LIBWACOM_DEPRECATED
 
int libwacom_has_ring2 (const WacomDevice *device) LIBWACOM_DEPRECATED
 
int libwacom_get_num_rings (const WacomDevice *device)
 
int libwacom_has_touchswitch (const WacomDevice *device)
 
int libwacom_get_ring_num_modes (const WacomDevice *device)
 
int libwacom_get_ring2_num_modes (const WacomDevice *device)
 
int libwacom_get_num_strips (const WacomDevice *device)
 
int libwacom_get_strips_num_modes (const WacomDevice *device)
 
int libwacom_get_num_dials (const WacomDevice *device)
 
int libwacom_get_dial_num_modes (const WacomDevice *device)
 
int libwacom_get_dial2_num_modes (const WacomDevice *device)
 
const WacomStatusLEDslibwacom_get_status_leds (const WacomDevice *device, int *num_leds)
 
int libwacom_get_button_led_group (const WacomDevice *device, char button)
 
int libwacom_is_builtin (const WacomDevice *device) LIBWACOM_DEPRECATED
 
int libwacom_is_reversible (const WacomDevice *device)
 
WacomIntegrationFlags libwacom_get_integration_flags (const WacomDevice *device)
 
WacomBusType libwacom_get_bustype (const WacomDevice *device)
 
WacomButtonFlags libwacom_get_button_flag (const WacomDevice *device, char button)
 
int libwacom_get_button_evdev_code (const WacomDevice *device, char button)
 
const WacomStyluslibwacom_stylus_get_for_id (const WacomDeviceDatabase *db, int id)
 Get the WacomStylus for the given tool ID. More...
 
int libwacom_stylus_get_id (const WacomStylus *stylus)
 
const char * libwacom_stylus_get_name (const WacomStylus *stylus)
 
const int * libwacom_stylus_get_paired_ids (const WacomStylus *stylus, int *num_paired_ids)
 
int libwacom_stylus_get_num_buttons (const WacomStylus *stylus)
 
int libwacom_stylus_has_eraser (const WacomStylus *stylus)
 Check if the given stylus is paired with a separate eraser. More...
 
int libwacom_stylus_is_eraser (const WacomStylus *stylus)
 Check if the given stylus may act like an eraser. More...
 
int libwacom_stylus_has_lens (const WacomStylus *stylus)
 
int libwacom_stylus_has_wheel (const WacomStylus *stylus)
 
WacomAxisTypeFlags libwacom_stylus_get_axes (const WacomStylus *stylus)
 
WacomStylusType libwacom_stylus_get_type (const WacomStylus *stylus)
 
WacomEraserType libwacom_stylus_get_eraser_type (const WacomStylus *stylus)
 
void libwacom_print_stylus_description (int fd, const WacomStylus *stylus)
 Print the description of this stylus to the given file. More...
 
const char * libwacom_match_get_name (const WacomMatch *match)
 
const char * libwacom_match_get_uniq (const WacomMatch *match)
 
WacomBusType libwacom_match_get_bustype (const WacomMatch *match)
 
uint32_t libwacom_match_get_product_id (const WacomMatch *match)
 
uint32_t libwacom_match_get_vendor_id (const WacomMatch *match)
 
const char * libwacom_match_get_match_string (const WacomMatch *match)
 
WacomBuilderlibwacom_builder_new (void)
 Create a new builder to be used into libwacom_new_from_builder(). More...
 
void libwacom_builder_destroy (WacomBuilder *builder)
 
void libwacom_builder_set_bustype (WacomBuilder *builder, WacomBusType bustype)
 Change the bustype to the given bustype, overriding the currently set one (if any). More...
 
void libwacom_builder_set_usbid (WacomBuilder *builder, int vendor_id, int product_id)
 Change the vendor and product id to the given ids, overriding the currently set ones (if any). More...
 
void libwacom_builder_set_device_name (WacomBuilder *builder, const char *name)
 Change the device name to the given name, overriding the currently set one (if any). More...
 
void libwacom_builder_set_match_name (WacomBuilder *builder, const char *name)
 Change the match name to the given name, overriding the currently set one (if any). More...
 
void libwacom_builder_set_uniq (WacomBuilder *builder, const char *uniq)
 Change the uniq to the given uniq, overriding the currently set one (if any). More...
 

Macro Definition Documentation

◆ LIBWACOM_DEPRECATED

#define LIBWACOM_DEPRECATED

Function Documentation

◆ libwacom_builder_destroy()

void libwacom_builder_destroy ( WacomBuilder builder)

◆ libwacom_builder_new()

WacomBuilder* libwacom_builder_new ( void  )

Create a new builder to be used into libwacom_new_from_builder().

The returned builder must be freed with libwacom_builder_destroy().

◆ libwacom_builder_set_bustype()

void libwacom_builder_set_bustype ( WacomBuilder builder,
WacomBusType  bustype 
)

Change the bustype to the given bustype, overriding the currently set one (if any).

◆ libwacom_builder_set_device_name()

void libwacom_builder_set_device_name ( WacomBuilder builder,
const char *  name 
)

Change the device name to the given name, overriding the currently set one (if any).

The device name is the name set in the libwacom database and may not match the kernel name for this device. See libwacom_builder_set_match_name() to set the kernel name.

◆ libwacom_builder_set_match_name()

void libwacom_builder_set_match_name ( WacomBuilder builder,
const char *  name 
)

Change the match name to the given name, overriding the currently set one (if any).

The match name is the device name advertised by the kernel and may be different to the device name, the human-readable name as set in the libwacom database.

◆ libwacom_builder_set_uniq()

void libwacom_builder_set_uniq ( WacomBuilder builder,
const char *  uniq 
)

Change the uniq to the given uniq, overriding the currently set one (if any).

◆ libwacom_builder_set_usbid()

void libwacom_builder_set_usbid ( WacomBuilder builder,
int  vendor_id,
int  product_id 
)

Change the vendor and product id to the given ids, overriding the currently set ones (if any).