![](https://csdnimg.cn/release/download_crawler_static/86329289/bg4.jpg)
obj-$(CONIDG_ TOUCHSCREEN_GOODIX_GT818) += goodix_touch.o
3. 进入内核源码目录,执行 make xconfig,查看 driver 项中是否增加了 GOODIX_TOUCHSCREEN 条
目。
6. 如果只需要支持一款触摸屏,在内核设置中需要我们设定只编译一个触摸屏的驱动,此时与之前触摸屏
的关联设置需要屏蔽。以 S3C 开发板提供的电阻屏驱动为例:
自带电阻屏的驱动配置选项为 TOUCHSCREEN_S3C 或 TOUCHSCREEN_S3C_ANDROID,而
s3c_ts_set_platdata、s3c_device_ts 是在 arch/arm/plat-s3c/dev-ts.c 文件中定义的,而这个源文件必须在
CONFIG_TOUCHSCREEN_S3C 或者 CONFIG_TOUCHSCREEN_S3C_ANDROID有定义的情况下才会被编译,
因此对这这个源文件中的函数或者变量的引用相应地应该加上诸如下面的这个编译控制宏:
#if defined(CONFIG_TOUCHSCREEN_S3C) || defined(CONFIG_TOUCHSCREEN_S3C_ANDROID)
……
#endif
这样能够避免修改了内核编译配置而造成的编译错误,并方便地通过 make config 设置来调整我们对触摸
屏的支持。
7. 多指驱动支持
要支持多点触摸,首先需要 linux 内核的支持,也就是 input 子系统需要提供多点触摸的接口,其次是
GUI 库要能处理多点触摸的事件,后者在 Android2.0 及以上版本已经支持。内核方面,自 2.6.30 以后的内
核的 input 子系统开始增加了多点触摸的支持,而比这更早的版本我们可以通过修改 input 子系统源文件来
完成支持。
以内核 2.6.28 为例,主要修改的部分为:(红色部分为添加部分)
在文件(内核源文件目录)/include/input.h
#define SYN_REPORT 0
#define SYN_CONFIG 1
#define SYN_MT_REPORT 2
//-------------------------------------------
#define ABS_MT_TOUCH_MAJOR 0x30 /* Major axis of touching ellipse */
#define ABS_MT_TOUCH_MINOR 0x31 /* Minor axis (omit if circular) */
#define ABS_MT_WIDTH_MAJOR 0x32 /* Major axis of approaching ellipse */
#define ABS_MT_WIDTH_MINOR 0x33 /* Minor axis (omit if circular) */
#define ABS_MT_ORIENTATION 0x34 /* Ellipse orientation */
#define ABS_MT_POSITION_X 0x35 /* Center X ellipse position */
#define ABS_MT_POSITION_Y 0x36 /* Center Y ellipse position */
#define ABS_MT_TOOL_TYPE 0x37 /* Type of touching device */
#define ABS_MT_BLOB_ID 0x38 /* Group a set of packets as a blob */
#define ABS_MT_TRACKING_ID 0x39 /* Unique ID of initiated contact */