看代码时候发现keychords这个文件
用户空间的代码在: system/core/init/keychords.c
内核驱动的代码在: drivers/input/misc/keychord.c
chords意思是和弦,钢琴和吉他都有和弦,意思就是多个键一起按,顾名思义,keychords应该就是处理多点触摸的接口。看看初始化代码:
主要是通过/dev/keychord文件节点和底层驱动进行交互。
void keychord_init()
{
int fd, ret;
service_for_each(add_service_keycodes);
/* nothing to do if no services require keychords */
if (!keychords)
return;
fd = open("/dev/keychord", O_RDWR);
if (fd < 0) {
ERROR("could not open /dev/keychord\n");
return;
}
fcntl(fd, F_SETFD, FD_CLOEXEC);
ret = write(fd, keychords, keychords_length);
if (ret != keychords_length) {
ERROR("could not configure /dev/keychord %d (%d)\n", ret, errno);
close(fd);
fd = -1;
}
free(keychords);
keychords = 0;
keychord_fd = fd;
}