LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Slackware (https://www.linuxquestions.org/questions/slackware-14/)
-   -   Touchscreen on Fujitsu Lifebook B series Can't be Calibrated (https://www.linuxquestions.org/questions/slackware-14/touchscreen-on-fujitsu-lifebook-b-series-cant-be-calibrated-794856/)

mradtke 03-11-2010 09:14 PM

Touchscreen on Fujitsu Lifebook B series Can't be Calibrated
 
Hello,

I am trying to use this old notebook as a poor man's netbook. I installed Slackware 13 on it and find that the touchscreen uses the Xorg evdev driver. It starts up with both acceleration and incorrect calibration. Xinput can be used to successfully remove the acceleration. However, using xinput to set the calibration does nothing to the behavior, although the settings do seem to get registered.

After bringing up X:

fujitsu:/home/mradtke xinput list 2
"LBPS/2 Fujitsu Lifebook TouchScreen" id=2 [XExtensionPointer]
Type is TOUCHPAD
Num_buttons is 5
Num_axes is 2
Mode is Absolute
Motion_buffer is 256
Axis 0 :
Min_value is 0
Max_value is 1024
Resolution is 10000
Axis 1 :
Min_value is 0
Max_value is 1024
Resolution is 10000

fujitsu:/home/mradtke xinput list-props 2
Device 'LBPS/2 Fujitsu Lifebook TouchScreen':
Device Enabled (98): 1
Evdev Reopen Attempts (231): 10
Evdev Axis Inversion (232): 0, 0
Evdev Axis Calibration (233):
Evdev Axes Swap (234): 0
Evdev Middle Button Emulation (235): 2
Evdev Middle Button Timeout (236): 50
Evdev Wheel Emulation (237): 0
Evdev Wheel Emulation Axes (238): 0, 0, 4, 5
Evdev Wheel Emulation Inertia (239): 10
Evdev Wheel Emulation Timeout (240): 200
Evdev Wheel Emulation Button (241): 4
Evdev Drag Lock Buttons (242): 0

I can set the calibration:

fujitsu:/home/mradtke xinput set-int-prop 2 233 32 10 100 10 100

Nothing changes in the way the touchscreen works. However, xinput shows the changed settings:

fujitsu:/home/mradtke xinput list-props 2
Device 'LBPS/2 Fujitsu Lifebook TouchScreen':
Device Enabled (98): 1
Evdev Reopen Attempts (231): 10
Evdev Axis Inversion (232): 0, 0
Evdev Axis Calibration (233): 10, 100, 10, 100
Evdev Axes Swap (234): 0
Evdev Middle Button Emulation (235): 2
Evdev Middle Button Timeout (236): 50
Evdev Wheel Emulation (237): 0
Evdev Wheel Emulation Axes (238): 0, 0, 4, 5
Evdev Wheel Emulation Inertia (239): 10
Evdev Wheel Emulation Timeout (240): 200
Evdev Wheel Emulation Button (241): 4
Evdev Drag Lock Buttons (242): 0

In addition to the calibration not working, no button events seem to be generated or reported by xinput.

I did a lot of searching for a solution and see that many people use evtouch (http://www.conan.de/touchscreen/lifebook-2.6.html) for their Lifebooks. However, none of the binaries seem to work with the Xorg build that Slackware uses (ABI version mismatch) and I have no idea of how to fix that. I am open to recompiling Xorg to use evtouch, but I don't know if that will work and I'll need some help locating and installing the Xorg sources that were used in building Slackware 13. They don't seem to be part of the distribution.

Any suggestion?

Thanks,
Mike

mradtke 05-18-2010 10:18 PM

Hello,

I have finally figured it out for myself.

I determined that, at least with Slackware 13, the evdev driver just wasn't going to work. The only driver folks seem to have success with is evtouch, which you can see from my earlier post, I couldn't get to work because of the version of Xorg shipped with Slackware 13.

The Xorg server is version 1.6.3. I found a version of evtouch patched for this level. The source can be found at:

https://launchpad.net/ubuntu/lucid/+.../0.8.8-2build1

The files to get are:

xf86-input-evtouch_0.8.8.orig.tar.gz Source
xf86-input-evtouch_0.8.8-2build1.debian.tar.gz Patches etc.

As a normal user untar the source and patch structure. Move the patches to the source directory and apply patches 01,02,03, and 05. That should result in a source compatible with Xorg 1.6.3.

Run ./configure with options of your choice including --enable-evcalibrate.

Then run make. I chose not to use make install, but as root I copied .libs/evtouch_drv.so just built into /usr/lib/xorg/modules/input. I changed the ownership an permissions to match the other drivers found there.

Slackware uses hal to build dynamic entries in the Xorg.conf file. As root, I built the /etc/hal/fdi/policy/10-x11-input.fdi file:


<?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- -->
<!--
Pointer inputs for the LBPS/2 Fujitsu Lifebook Touchscreen.
Modify this file for other touchscreens or different calibration
values.
-->
<deviceinfo version="0.2">
<device>
<match key="info.product" contains="LBPS/2 Fujitsu Lifebook TouchScreen">
<merge key="input.x11_driver" type="string">evtouch</merge>
<merge key="input.x11_options.ReportingMode" type="string">Raw</merge>
<merge key="input.x11_options.MinX" type="string">80</merge>
<merge key="input.x11_options.MinY" type="string">88</merge>
<merge key="input.x11_options.MaxX" type="string">945</merge>
<merge key="input.x11_options.MaxY" type="string">980</merge>
<merge key="input.x11_options.MoveLimit" type="string">5</merge>
<merge key="input.x11_options.SendCoreEvents" type="string">true</merge>
</match>
</device>
</deviceinfo>


Reboot and bring up X. The touchscreen should now work, but will need calibration.

I found that the simplest way to calibrate the touchscreen was with the supplied calibration program. As root in the directory where the evtouch source was compiled run ./calibrate.sh.

I had two failures doing this. First, I was missing a font. I located the font and installed it.

Second, it failed with an error on the path to empty_cursor.xbm. The easiest solution is to build a symbolic link from where empty_cursor.xbm is expected to be found to where it actually is in the current directory.

Run /calibrate.sh again and X should come up. The stylus location is displayed on the screen. Run the stylus along each screen edge and record an appropriate value for X max and min and Y max and min. There should be no need to run the calibration program again.

Enter the recorded values in the /etc/hal/fdi/policy/10-x11-input.fdi file, reboot and verify the calibration.

Thanks,
Mike


All times are GMT -5. The time now is 10:35 AM.