= General = Gen7 and gen8 Archos devices with resistive touchscreen use [http://www.ti.com/product/ads7846 TI ADS784x controller]. Stock Gingerbread doesn't support touchscreen calibration, TS range is simply scaled to screen resolution. To add calibration capabilities we use a [https://gitorious.org/openaos-cyanogenmod/device_archos/blobs/master/common/patches/frameworks/base/touchscreen_calibration.patch patch]. Calibration values are read from `/system/usr/idc/ADS784x Touchscreen.idc`, that defines 6 properties {{{ touch.5pointcalib.xscale = 0.207832898 touch.5pointcalib.xymix = 0 touch.5pointcalib.xoffset = -24.934986945 touch.5pointcalib.yxmix = 0 touch.5pointcalib.yscale = 0.132637076 touch.5pointcalib.yoffset = -30.497127937 }}} Screen coordinates are calculated as {{{ Xscreen = xscale * Xtouch + xymix * Ytouch + xoffset Yscreen = yxmix * Xtouch + yscale * Ytouch + yoffset }}} If the calibration file doesn't exist or any of the values is badly formatted, the system will scale TS range to screen resolution. = Calibration Application = Since static calibration values [http://dev.openaos.org/ticket/215 don't work for some devices], the app to define these values was made. == Building == Sources are hosted on gitorious [https://gitorious.org/touchscreen-calibrator] {{{ cd device/archos/common git clone git://gitorious.org/touchscreen-calibrator/touchscreen-calibrator.git }}} To build the app (assuming you are familiar with building openaos cyanogenmod) Edit `device/archos/gen7/gen7.mk` (replace gen7 with gen8 if needed) and add `TSCalibrator` to `PRODUCT_PACKAGES` list. When you build the platform, the app would be built too and placed to `out/target/product/gen7/system/app/TSCalibrator.apk`. Alternative way is {{{ . build/envsetup.sh lunch gen7-userdebug make TSCalibrator }}} == Requirements == Since I (illifant) haven't found a way to get raw values from input device, the app uses existing calibration values, calculates correction and writes result to `/data/data/org.openaos.tscalibrator/files/ADS784x Touchscreen.idc`. For doing this, the system calibration file `/system/usr/idc/ADS784x Touchscreen.idc` must be world-readable. If the file doesn't exist, calibration will start right after boot. To apply new values you have to reboot. The script [https://gitorious.org/openaos-cyanogenmod/vendor_archos/blobs/master/common/rootfs/system/xbin/apply_calibration.sh /system/xbin/apply_calibration.sh] will move newly written .idc file to the location in /system/usr/idc and make sure it's world-readable.