触摸
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
接口位置如图:

2. USB触摸
鸿蒙系统也支持USB触摸,当接入USB触摸时日志中会有以下打印:
[ 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
3. 触摸调试
触摸屏属于input输入子系统设备,input子系统是Linux对输入设备提供的统一驱动框架。 如按键、键盘、触摸屏和鼠标等输入设备的驱动方式是类似的, 使用input子系统驱动的输入设备可以通过统一的数据结构提交给内核, 该数据结构包括输入的时间、类型、代号以及具体的键值或坐标, 内核通过/dev/input目录下的文件接口传递给用户空间。
input输入子设备系统可以通过getevent命令来获取设备上报给系统的事件
板卡中内置了 getevent命令,可以用该命令来调试触摸屏是否正常工作
# 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