9.触摸 =========== **9.1 I2C触摸** ----------- 以SC-3568HA为例,该板卡目前拥有一组I2C接口的触摸接口,目前该接口适配的触摸驱动为gt9xx,该驱动为HDF框架下的驱动,驱动文件位于该路径: + drivers/hdf_core/framework/model/input/driver/touchscreen/touch_gt911.c 想了解更多关于HDF驱动框架可以参考该文章: https://blog.csdn.net/wobuzai11/article/details/135959347 接口位置如图: |TOUCH_0| **9.2 USB触摸** ----------- 鸿蒙系统也支持USB触摸,当接入USB触摸时日志中会有以下打印: .. code-block:: bash :linenos: [ 1483.298817] usb 5-1: new full-speed USB device number 3 using xhci-hcd [ 1483.440164] usb 5-1: New USB device found, idVendor=10c4, idProduct=5e52, bcdDevice= 2.00 [ 1483.440199] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 1483.440207] usb 5-1: Product: TOUCH Devices [ 1483.440214] usb 5-1: Manufacturer: TOUCH FREE [ 1483.440220] usb 5-1: SerialNumber: MTD3210 [ 1483.458133] input: TOUCH FREE TOUCH Devices as /devices/platform/usbhost/fd000000.dwc3/xhci-hcd.4.auto/usb5/5-1/5-1:1.0/0003:10C4:5E52.0002/input/input8 [ 1483.461402] hid-multitouch 0003:10C4:5E52.0002: input,hiddev96,hidraw1: USB HID v1.10 Device [TOUCH FREE TOUCH Devices] on usb-xhci-hcd.4.auto-1/input0 **9.3 触摸调试** ----------- 触摸屏属于input输入子系统设备,input子系统是Linux对输入设备提供的统一驱动框架。 如按键、键盘、触摸屏和鼠标等输入设备的驱动方式是类似的, 使用input子系统驱动的输入设备可以通过统一的数据结构提交给内核, 该数据结构包括输入的时间、类型、代号以及具体的键值或坐标, 内核通过/dev/input目录下的文件接口传递给用户空间。 input输入子设备系统可以通过getevent命令来获取设备上报给系统的事件 板卡中内置了 **getevent**命令,可以用该命令来调试触摸屏是否正常工作 .. code-block:: bash :linenos: # getevent 获取所有input子设备,并监听所有设备上报事件 ~# getevent add device 1: /dev/input/event7 name: "TOUCH FREE TOUCH Devices" # USB触摸 add device 2: /dev/input/event6 name: "VSoC touchscreen" # I2C触摸 add device 3: /dev/input/event1 name: "fe6e0030.pwm" add device 4: /dev/input/event4 name: "Logitech USB Optical Mouse" add device 5: /dev/input/event3 name: "adc-keys" add device 6: /dev/input/event5 name: "rk-headset" add device 7: /dev/input/event0 name: "hdmi_cec_key" add device 8: /dev/input/event2 name: "rk805 pwrkey" # event6(触摸)上报 /dev/input/event6: 0003 0036 000003a8 /dev/input/event6: 0003 0039 00000000 /dev/input/event6: 0000 0002 00000000 /dev/input/event6: 0001 014a 00000001 ...... # getevent -l /dev/input/event* 监听子设备上报的事件类型 ~# getevent -l /dev/input/event6 EV_ABS ABS_MT_POSITION_X 0000014c EV_ABS ABS_MT_POSITION_Y 000002b8 EV_ABS ABS_MT_TRACKING_ID 00000000 EV_SYN SYN_MT_REPORT 00000000 EV_KEY BTN_TOUCH DOWN # 手指按下 EV_SYN SYN_MT_REPORT 00000000 EV_SYN SYN_REPORT 00000000 EV_ABS ABS_MT_POSITION_X 0000014c # X坐标 EV_ABS ABS_MT_POSITION_Y 000002b8 # Y坐标 EV_ABS ABS_MT_TRACKING_ID 00000000 EV_SYN SYN_MT_REPORT 00000000 EV_SYN SYN_MT_REPORT 00000000 EV_SYN SYN_REPORT 00000000 EV_ABS ABS_MT_POSITION_X 0000014c EV_ABS ABS_MT_POSITION_Y 000002b8 EV_ABS ABS_MT_TRACKING_ID 00000000 EV_SYN SYN_MT_REPORT 00000000 EV_SYN SYN_MT_REPORT 00000000 EV_SYN SYN_REPORT 00000000 EV_ABS ABS_MT_POSITION_X 0000014c EV_ABS ABS_MT_POSITION_Y 000002b8 EV_ABS ABS_MT_TRACKING_ID 00000000 EV_SYN SYN_MT_REPORT 00000000 EV_SYN SYN_MT_REPORT 00000000 EV_SYN SYN_REPORT 00000000 EV_KEY BTN_TOUCH UP # 手指抬起 EV_SYN SYN_MT_REPORT 00000000 EV_SYN SYN_REPORT 00000000 EV_SYN SYN_MT_REPORT 00000000 EV_SYN SYN_REPORT 00000000 EV_SYN SYN_MT_REPORT 00000000 EV_SYN SYN_REPORT 00000000 .. |TOUCH_0| image:: picture/TOUCH_0.png :width: 5in :height: 3in