10月 032015
 

安卓的触摸屏,目前主要有2个方式驱动:一种是以hid设备的形式,另一种是作为touchscreen注册。对于2者区别,时间关系我没有仔细研究,不过我估计touchscreen可以支持的动作更多,多点支持更好吧。
我这次买了一个hid的设备,驱动的路径就是lichee/drviers/hid/。如果是touchscreen的话,就是lichee/drviers/input/touchscreen/

驱动添加步骤如下:

  1. 在hid-ids.h中加入设备的vid pid,如:
    #define
    USB_VENDOR_ID_WF 0xFFF0
    #define
    USB_DEVICE_ID_WF_SCREEN 0x5D01
  2. 在hid-multitouch.c->mt_devices[] 中加入厂家和设备,如:
    {
    .driver_data = MT_CLS_DEFAULT,
    HID_USB_DEVICE(USB_VENDOR_ID_WF,
    USB_DEVICE_ID_WF_SCREEN)
    }
  3. 在hid-core.c->hid_have_special_driver[]中加入HID_USB_DEVICE(VID,PID),如:
    {HID_USB_DEVICE(USB_VENDOR_ID_WF,USB_DEVICE_ID_WF_SCREEN)}
  4. 在内核的menuconfig中开启HID Multitouch panels
  5. 编译内核
  6. 修改android/device/softwinner/kylin-cubieoard4.mk 把驱动文件加入system/usr/idc
    打开文件之后,找到有其他设备配置,比如蓝牙或者wifi配置的位置,增加配置:
    PRODUCT_COPY_FILES +=\
    【idc文件路径】:system/usr/idc/idc文件名
    红外触摸屏hid的驱动文件是通用的,只需要把下面的内容复制一份,以Vendor_vid_Product_pid.idc的形式保存即可。

    
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # Filename:Vendor_FFF0_Product_05D1.idc
    # My TouchScreen Device configuration file.

    touch.deviceType = touchScreen
    touch.orientationAware = 1

    device.internal = 1

    keyboard.layout = qwerty
    keyboard.characterMap = qwerty2
    keyboard.orientationAware = 1
    keyboard.builtIn = 1

    cursor.mode = navigation
    cursor.orientationAware = 1

    如果用的是电容或者电阻屏的,可以参考:http://m.blog.csdn.net/blog/houyizi337825770/8481899

  7. 编译android源码,pack之后就可以用触摸屏啦!

插曲:
当初买触摸屏,想在电视机上也能够使用。结果淘宝上问了半天,大家都说不可以。可是触摸屏买回来发现是hid驱动的,让我心里又燃起了火焰,想要试一下电视机到底是否支持。毕竟hid就是个鼠标嘛~结果是喜忧参半。
喜:插上去可以用
忧:有鼠标光标,且单击无反映,放大是单击动作
后来看到一个博客,这位大哥就是要给TV做触摸屏,其中提到了一句:

目前的kernel中都是自带了usbtouchscreen驱动的,我的版本3.1.10
源码位于:/kernel/drivers/input/touchscreen/usbtouchscreen.c
从这个路径可以看出所属驱动分支,我这边平台本身是没放开的,并没有编译进kernel,谁会想到触摸电视呢~

和我预期中类似,androidTV并没有把这个代码编译进kernel。看来还是要给电视机配个开发板才行啦~

 

 

  2 Responses to “[CC-A80]在android源码中增加红外触摸屏驱动”

  1. 楼主您好 我是新手 想问如果要在CB4上使用10寸的触摸屏 有好推荐的吗? 驱动只需要根据你写的就可以了?

    • 不知道你想用红外的还是电容的,我目前用红外的比较多。现在电容屏的接口有好几种,如果是usb的一般都是可以直接用,没有驱动的话可以根据我说的加。其他形式的估计会复杂点,我没弄过

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)