Skip to content

reinderien/xcalibrate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

What this?

This is an alternative to xinput_calibrator (as seen on github, FreeDesktop, Ubuntu, etc.).

Similarities:

  • For Unix-like OS
  • Calibrates touchscreens

Differences:

Thing xinput_calibrator xcalibrate
Language C++ Python3
LOC 2,289 348
Interface Command-line args with some GUI Walkthrough-based with some GUI
GUI toolkit X tk
Cal points 4 Selectable
Math Manual Numpy least-squares
Outputs Xorg.conf, hal, xinput xinput
Popularity High Zero so far
Tested Pretty well Not very well
OS distribution Available in most major repos AUR
Dependencies libstdc++, libx11, libxi python3, tkinter, numpy

xinput_calibrator features precalibration, timeouts, misclick detection, fake driver testing, and a resizable window. xcalibrate features none of those things, but offers some other features not present in xinput_calibrator, including pre-save cal test, cal quality indicator, arbitrary cal point count, and a slightly more informative GUI. Also, the source is quite simpler.

Why this?

After I couldn't figure out why xinput_calibrator wasn't doing anything on my system (an old CF-29), I read and followed this excellent walkthrough on the Arch wiki. It was too hacky for my comfort, so I wrote this tool inspired by Zootboy's procedure but with some key differences - this is a stand-alone tool that does not require running xinput_calibrator; and it uses Numpy to do some real matrix math instead of hacking around with element-by-element calculations and a fixed calibration dataset size.

How this?

./xcalibrate

Example output

./xcalibrate 
Pointer devices:
  ID                                Name
   4          Virtual core XTEST pointer
  10                   USB Optical Mouse
  11              Elo Serial TouchScreen

Device to calibrate [11]: 

Old calibration (Coordinate Transformation Matrix):
[[ 1.277742  0.       -0.120407]
 [ 0.       -1.417391  1.235114]
 [ 0.        0.        1.      ]]

Calibrate? [y]: 
Point count (min 3) [4]: 9
Disable rotation? [y]: n

New calibration:
[[ 1.29356314 -0.00499606 -0.12657437]
 [ 0.03126622 -1.42132634  1.22818551]
 [ 0.          0.          1.        ]]
Quality (should be at least 3): 2.9

Test? [y]: y
Point count (min 3) [4]: 9
Use calibration? [y]: y
The new calibration has been activated.
To persist, create e.g.
/usr/share/X11/xorg.conf.d/99-libinput-ts-calib.conf
and add the following:

Section "InputClass"
    Identifier      "calibration"
    MatchProduct    "Elo Serial TouchScreen"
    Option          "Coordinate Transformation Matrix"  "1.29356314337069 -0.00499606097246703 -0.126574373908785 0.0312662187568204 -1.42132633629107 1.22818550687634 0 0 1"
EndSection

To do

  • Review some of the forks and issues logged
  • Be more interactive in device selection

Discuss

Check out the Discussions page. Github Discussions has superceded the Gitter instance.

About

X.org touchscreen calibrator

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages