|
运行ts_test时,打印如下信息:
selected device is not a touchscreen I understand
找到tslib源码如下:
static int check_fd(struct tslib_input *i)
{
struct tsdev *ts = i->module.dev;
int version;
u_int32_t bit;
u_int64_t absbit;
if (! ((ioctl(ts->fd, EVIOCGVERSION, &version) >= 0) &&
(version == EV_VERSION) &&
(ioctl(ts->fd, EVIOCGBIT(0, sizeof(bit) * 8), &bit) >= 0) &&
(bit & (1 << EV_ABS)) &&
(ioctl(ts->fd, EVIOCGBIT(EV_ABS, sizeof(absbit) * 8), &absbit) >= 0) &&
(absbit & (1 << ABS_X)) &&
(absbit & (1 << ABS_Y)) && (absbit & (1 << ABS_PRESSURE)))) {
fprintf(stderr, "selected device is not a touchscreen I understand\n");
return -1;
}
if (bit & (1 << EV_SYN))
i->using_syn = 1;
return 0;
}
原来tslib会比较版本号,内核中/include/linux/input.h中有如下语句:
#define EV_VERSION 0x010000
编译内核和编译tslib时这个版本号必须一致!
否则出现上面的错误。
在/dev/input目录下通常会生成event0,event1两个节点,一个为触摸屏,一个为键盘驱动,如果这两个
驱动启动顺序变了,event0和event1也会根着变。如果tslib的节点声明出错,也会提示上面的错误信息。
|
|