Userspace daemon for Intel Precise Touch & Stylus
Find a file
Kasper Seweryn 9c3e4c7b85
Some checks failed
CI / Check code quality (push) Has been cancelled
CI / Build Arch Linux Package (push) Has been cancelled
CI / Build Debian Package (push) Has been cancelled
CI / Build Fedora 39 package (push) Has been cancelled
CI / Build Fedora 40 package (push) Has been cancelled
CI / Build Fedora 41 package (push) Has been cancelled
CI / Publish release (push) Has been cancelled
CI / Update Arch Linux package repository (push) Has been cancelled
CI / Update Debian package repository (push) Has been cancelled
CI / Update Fedora 39 package repository (push) Has been cancelled
CI / Update Fedora 40 package repository (push) Has been cancelled
CI / Update Fedora 41 package repository (push) Has been cancelled
feat: add config option for stylus lift timeout
2024-10-03 16:16:51 +02:00
.github ci: Fix the CI 2024-09-14 23:16:05 +02:00
debian iptsd v3 2024-09-14 23:26:35 +02:00
etc feat: add config option for stylus lift timeout 2024-10-03 16:16:51 +02:00
scripts scripts: Add script that uses muon to lint the meson files 2024-02-06 16:04:09 +01:00
src feat: add config option for stylus lift timeout 2024-10-03 16:16:51 +02:00
subprojects build: Update wrapped dependencies 2024-02-06 16:04:04 +01:00
.clang-format clang-format: Drop custom options for operator placement on line breaks 2024-02-06 16:04:10 +01:00
.clang-tidy clang-tidy: Fix new warnings from clang / LLVM 18 2024-04-03 11:39:19 +02:00
.editorconfig editorconfig: Drop special rules for meson files 2024-02-06 00:04:31 +01:00
.gitignore Ignore all hidden files, except some 2021-03-13 16:28:15 +01:00
.muon.ini scripts: Add script that can automatically format all meson files 2024-02-06 15:56:56 +01:00
.style.yapf scripts: Add a script to reformat the newly added python scripts 2024-02-06 15:58:05 +01:00
iptsd.spec iptsd v3 2024-09-14 23:26:35 +02:00
LICENSE Initial commit 2020-05-06 21:26:17 +02:00
meson.build iptsd v3 2024-09-14 23:26:35 +02:00
meson_options.txt build: Reformat meson files 2024-02-06 15:57:02 +01:00
PKGBUILD iptsd v3 2024-09-14 23:26:35 +02:00
README.md Update README and fix typo 2024-02-08 21:14:03 +01:00
rpkg.conf pkg: Fix Fedora build 2022-07-17 13:01:07 +02:00
rpkg.macros pkg: Run shellcheck on the rpkg macros, and other improvements 2024-02-06 15:57:02 +01:00

IPTSD

This is the userspace touch processing daemon for Microsoft Surface devices using Intel Precise Touch technology.

The daemon will read incoming HID reports containing raw capacitive touch data, stylus coordinates and DFT pen measurements, and create standard input events from it using uinput devices.

Installing

IPTSD is included in the linux-surface repository. This is the recommended way of installing it.

Important: Support on Debian based distributions only goes back to Debian 11 / Ubuntu 22.04.

If you want to try out changes that are not yet released, GitHub Actions builds Arch Linux, Debian and Fedora packages for every commit. You'll need to be signed in to GitHub, then go to https://github.com/linux-surface/iptsd/actions, select the latest successful workflow and download the artifact named <your distro>-latest.

Building

To build IPTSD from source, you need to install the following dependencies:

  • A C++ compiler
  • meson
  • ninja
  • CLI11
  • Eigen3
  • fmt
  • inih / INIReader
  • gsl
  • spdlog
  • cmake, because some of our dependencies don't ship pkgconfig files

To build the plotting tools for visualizing data, you need to install a few more dependencies.

  • cairomm
  • SDL2

Most of the dependencies can be downloaded and included automatically by meson, should your distribution not include them.

$ git clone https://github.com/linux-surface/iptsd
$ cd iptsd
$ meson setup build
$ ninja -C build

To run iptsd, you need to determine the ID of the hidraw device of your touchscreen:

$ sudo ./etc/iptsd-find-hidraw

You can then run iptsd with the device path as a launch argument:

$ sudo ./build/src/iptsd /dev/hidrawN

Alternatively, you can install the files you just built to the system. After a reboot, iptsd will get started by udev automatically:

$ sudo ninja -C build install

On Fedora (or any other SELinux enabled distribution) you also need to fix the SELinux contexts:

$ sudo semanage fcontext -a -t systemd_unit_file_t -s system_u /usr/lib/systemd/system/iptsd@.service
$ sudo semanage fcontext -a -t usr_t -s system_u '/usr/local/bin/ipts.*'

$ sudo restorecon -vF /usr/lib/systemd/system/iptsd@.service
$ sudo restorecon -vF /usr/local/bin/ipts*

This is only necessary when using ninja install. When you install one of the packages from GitHub Actions, or build your own package, everything will just work.