Android Touchscreen IDC

Jorge picture Jorge · Sep 24, 2014 · Viewed 7.6k times · Source

I'm struggling with calibration of a touchscreen on Android plataform.

It is an USB Single-Touch Touchscreen from vendor 0dfc and product 0001 as checked with dmesg:

<6>[ 4118.091541] input: USB Touchscreen 0dfc:0001 as /devices/platform/usb20_host/usb2/2-1/2-1.3/2-1.3:1.0/input/input23

I'm pushing the Vendor_0dfc_Product_0001.idc file /data/system/devices/idc/ (following the documentation from android source - IDC

I got the touch device with all requirements for single touch events:

root@android:/ # getevent -il /dev/input/event3                                
add device 1: /dev/input/event3
  bus:      0003
  vendor    0dfc
  product   0001
  version   0202
  name:     "USB Touchscreen 0dfc:0001"
  location: "usb-usb20_host-1.3/input0"
  id:       ""
  version:  1.0.1
  events:
    KEY (0001): BTN_TOUCH            
    ABS (0003): ABS_X                 : value 540, min 0, max 32767, fuzz 0, flat 0, resolution 0
                ABS_Y                 : value 289, min 0, max 32767, fuzz 0, flat 0, resolution 0
  input props:
    <none>

I also enabled the Pointer Location option from Developer options (Android settings) in order to debug this stage of calibration.

Setup 1

touch.deviceType = touchScreen

With this setup (1) all the gestures on the touchscreen take place at the up-left corner - just a few pixels left/right/up/down no matter the gesture (swipe). All the touchscreen get events. All the gestures are reversed - when swipe left the pointer goes right; when swipe up, the pointer goes down.

Setup 2

touch.deviceType = pointer
touch.gestureMode = pointer

With this setup (2), as expected, it shows a pointer, placed at the position from the last pointer device left (mouse). All the gestures on the touchscreen (no matter the swipe size) keep beaving like setup 1 - move only a few pixels with each swipe event, and with reversed axis.

Setup 3

touch.deviceType = pointer
touch.gestureMode = spots

With this setup (3) the result is the same as setup 2. I just did that to prove that the IDC file is being interpreted correctly.

At this stage, as you can check by now, I have a working IDC file (setup 1) requiring calibration for this touch device.

I tried a lot of combinations from other IDC files (internet samples) and from android source - IDC - ANY OTHER PROPERTY TOOK EFFECT (NOT A SINGLE ONE) - raw.*, output.*, touch.size.*

Does anyone knows how to calibrate properly a touch screen in Android that could guide me in this process?

Thank you

Answer

user3454585 picture user3454585 · Oct 16, 2015

Same here,

but my calibration app did't do anything.

After a while, reading /system/etc/init.sh i found the following: " mkdir -p /data/misc/tscal touch /data/misc/tscal/pointercal chown 1000.1000 /data/misc/tscal /data/misc/tscal/* chmod 775 /data/misc/tscal chmod 664 /data/misc/tscal/pointercal "

Just run those commands manually, reboot, and start the calibration app