# Overview

libwacom is a library to identify Wacom tablets and their model-specific
features. It provides easy access to information such as "is this a built-in
on-screen tablet", "what is the size of this model", etc.

This functionality is currently used by e.g. GNOME to map built-in tablets to
the correct screen.

# Adding tablet descriptions to libwacom

A common indicator that a device is not supported by libwacom is that it works
normally in a GNOME session, but the device is not correctly mapped to the
screen.

Use the `libwacom-list-local-devices` tool to list all local devices recognized
by libwacom. If your device is not listed, but it is available as an event
device in the kernel (see `/proc/bus/input/devices`) and in the X session (see
`xinput list`), the device is missing from libwacom's database.
Use the `libwacom-list-devices` tool to list all known devices and verify
the tablet is not in that list.

## To add support for a new tablet to libwacom git:

1. Create a new tablet definition file. See `data/wacom.example` in the source
   for a guideline on how to add a new tablet. For an installed version of
   libwacom, see the existing data files (e.g.
   `/usr/share/libwacom/cintiq-13hd.tablet`)
2. A new tablet description is enabled by adding and installing a new file with
   a `.tablet` suffix. Once installed the tablet is part of libwacom's
   database, no rebuild is neccessary
3. The tablet is then available through `libwacom-list-local-devices`

You must update udev after installing the file, see below.

## To add support for a tablet to an installed libwacom

If the system-provided libwacom does not include a `.tablet` file, it is
possible to "backport" that `.tablet` file to the system-provided libwacom.

### libwacom 1.10 and newer

Copy the `.tablet` file into `/etc/libwacom` and run the
`libwacom-update-db` tool:

```
$ cp my-tablet-file-from-upstream.tablet /etc/libwacom/
$ libwacom-update-db /etc/libwacom
```

The tool will take care of updating udev, the hwdb, etc.

### libwacom 1.9 and earlier

For versions of libwacom <= 1.9, the file must be copied to
`/usr/share/libwacom`. It may be overwritten on updates.

You must update udev after installing the file. The simplest (and broadest)
way to do this is outlined below:

```
# create the hwdb file
$ cat <EOF > /etc/udev/hwdb.d/66-libwacom.hwdb
# WARNING: change "Your Device Name" to the actual name of your device
libwacom:name:Your Device Name*:input:*
 ID_INPUT=1
 ID_INPUT_TABLET=1
 ID_INPUT_JOYSTICK=0

libwacom:name:Your Device Name Pad:input:*
 ID_INPUT_TABLET_PAD=1

# Use this if the device is an external tablet
libwacom:name:Your Device Name Finger:input:*
 ID_INPUT_TOUCHPAD=1

# Use this if the device is a screen tablet
libwacom:name:Your Device Name Finger:input:*
 ID_INPUT_TOUCHSCREEN=1

EOF
$ systemd-hwdb --update
```
Now disconnect and reconnect the device and it should be detected by libwacom.

# API Documentation

The API documentation is available at https://linuxwacom.github.io/libwacom/
