Panasonic CF-19 Toughbook | Touch Panel Calibration

panasonic-cf-19-toughbook

I don’t have loads of experience with using a touch screen interfaces on Linux but every setup to date has not required any fiddling around in any of the configuration files for proper operation. Thankfully, the folks at Panasonic made the CF-19 with some one-off technology to offer me that experience of understanding how to tweak and configure the touch panel interface.

The Problem

Everything about this machine configured perfectly from the openSUSE installer. Not a single component required extra prodding to use. Even the touch panel was recognized and somewhat usable, however the further away from the center of the screen you would touch, the further off the pointer was from where you touched.

Calibration Attempt One

Doing some searching on the webs, I came upon this tool called xinput_calibrator that creates a set of rules in xorg.conf.d folder (/etc/X11/xorg.conf.d/). It was a such a straight forward approach that I was sure it would work. Running it displays a screen with 4 cross-hair points of which you use the stylus to touch each of them. When it completes, you have a nice little configuration file to drop into xorg.conf.d. Unfortunately, it didn’t work at all.

Calibration Attempt Two

This method was not as easily understood or accomplished and brought with it a good share of trial and error.

First, I needed to find the input name of the touch panel. This was accomplished in my favorite terminal, Konsole:

> xinput list

⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Fujitsu Component USB Touch Panel id=9 [slave pointer (2)]
⎜ ↳ ImPS/2 Generic Wheel Mouse id=11 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=10 [slave keyboard (3)]
↳ Panasonic Laptop Support id=12 [slave keyboard (3)]

Now that I identified that the touch panel was identified, I needed to find further information about the touch panel itself

> xinput list-props “Fujitsu Component USB Touch Panel”

Device ‘Fujitsu Component USB Touch Panel’:
Device Enabled (143): 1
Coordinate Transformation Matrix (145): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Natural Scrolling Enabled (280): 0
libinput Natural Scrolling Enabled Default (281): 0
libinput Calibration Matrix (282): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Calibration Matrix Default (283): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Left Handed Enabled (284): 0
libinput Left Handed Enabled Default (285): 0
libinput Middle Emulation Enabled (286): 0
libinput Middle Emulation Enabled Default (287): 0
libinput Send Events Modes Available (263): 1, 0
libinput Send Events Mode Enabled (264): 0, 0
libinput Send Events Mode Enabled Default (265): 0, 0
Device Node (266): “/dev/input/event6”
Device Product ID (267): 1072, 1282
libinput Drag Lock Buttons (288): <no items>
libinput Horizontal Scroll Enabled (289): 1

I had to modify the line containing the Coordinate Transformation Matrix:

Coordinate Transformation Matrix (145): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000

Some of those comma separated values corresponded to specific properties of the panel matrix. What I learned about those nine numbers that seem to matter:

Touch_area_width, 0, touch_x_offset, 0, touch_area_height, touch_y_offset, 0, 0, 1

I used some trial and error to get this to line up correctly. The best way I knew how to accomplish it was to concentrate on one axis at a time. First adjust the offset and then the width or height.

This is what I ended up with:

1.115, 0, -0.073, 0, 1.14, -0.04, 0, 0, 1

Using nano, I created a little script and called it fujitsu_touch_panel.sh

#!/bin/sh

# Coordinate touch panel to screen

xinput set-prop “Fujitsu Component USB Touch Panel” –type=float “Coordinate Transformation Matrix” 1.115 0 -0.073 0 1.14 -0.04 0 0 1

Saved it and made it executable:

chmod +x ~/bin/fujitsu_touch_panel.sh

Then I moved it to the root directory in a location that seems to make sense… to me:

sudo cp ~/bin/fujitsu_touch_panel.sh /usr/local/bin

I tried several things to get this script to start as soon as the login screen manager, SDDM, started but that was without success. I was advised to try this location: /usr/share/sddm/scripts/. I tired several things, all didn’t work. Perhaps it just may work for someone else and if they are successful, I would be more than happy to edit this post with a better way. Feel free to comment below or contact me.

What I ended up doing was to add a script on startup of KDE Plasma.

System Settings > Startup and Shutdown > Autostart

Select Add Script… and entered the location of the script:

/usr/local/bin/fujitsu_touch_panel.sh

Screenshot_20180422_093443Next, I needed an onscreen keyboard to use. Not that I am a fan of those, as I think they are all terrible, I needed one just to be functional.

sudo zypper in kvkbd

I had to change the color scheme to Dark, because the default was not to my liking, nor was it usable.

Screenshot_20180422_093912.png

It is kind of fun putting this computer into tablet mode and poking around on it with the stylus and also makes me think about how nice KDE Plasma works with a touch interface. It certainly would have been much more fun to play with this if it were a multi-touch interface instead but still, fun and very usable. I certainly prefer a real keyboard but I see the value of this setup.

Final Thoughts

This is a fine little machine that is great for taking to less hospitable (to electronics) type of environments. The keyboard is just a bit cramped for my liking and the touchpad is a bit on the small side. The touch screen, once properly calibrated works wonderfully and even better with a stylus. I will find out this year how well they hold up in a “field” type environment and perhaps blather about that experience.

This is yet another fine case of where openSUSE just works on hardware with very little fussing about. Aside from the touch panel calibration, everything else about this machine works perfectly.

External Links

https://wiki.archlinux.org/index.php/Calibrating_Touchscreen

https://wiki.archlinux.org/index.php/Touchscreen

https://forums.opensuse.org/showthread.php/429517-Can-t-calibrate-touchscreen