⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 input-events.c

📁 主要是对Linux输入子系统的一些简单操作 比如lsinput是看有多少输入设备 比如input-events是看输入设备的键值 用来调试输入子系统很好
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>#include <unistd.h>#include <errno.h>#include <fcntl.h>#include <sys/select.h>#include "input.h"/* ------------------------------------------------------------------ */static void show_events(int nr, int timeout, int grab){	struct input_event event;	struct timeval tv;	int fd, quit;	fd_set set;	fd = device_open(nr,1);	if (-1 == fd)		return;	device_info(fd);	if (grab) {		if (-1 == ioctl(fd,EVIOCGRAB,1)) {			perror("ioctl EVIOCGRAB(1)");			close(fd);			return;		}		fprintf(stderr,"grabbed input device\n");	}		fprintf(stderr,"waiting for events\n");	quit = 0;	for (;;) {		/* wait for input */		FD_ZERO(&set);		FD_SET(fd,&set);		tv.tv_sec  = timeout;		tv.tv_usec = 0;		switch (select(fd+1,&set,NULL,NULL,&tv)) {		case -1:			perror("select");			quit = 1;			break;		case 0:			fprintf(stderr,"timeout, quitting\n");			quit = 1;			break;		}		if (quit)			break;		/* read input */		if (FD_ISSET(fd,&set)) {			switch (read(fd,&event,sizeof(event))) {			case -1:				perror("read");				quit = 1;				break;			case 0:				fprintf(stderr,"EOF\n");				quit = 1;				break;			default:				print_event(&event);				break;			}		}		if (quit)			break;	}	if (grab) {		if (-1 == ioctl(fd,EVIOCGRAB,0)) {			perror("ioctl EVIOCGRAB(0)");			close(fd);			return;		}		fprintf(stderr,"released input device\n");	}	close(fd);}static int usage(char *prog, int error){	fprintf(error ? stderr : stdout,		"usage: %s"		" [ -g ] [ -t <sec> ]"		" devnr\n",		prog);	exit(error);}int main(int argc, char *argv[]){	int timeout  = 10;	int grab     =  0;	int c,devnr;	for (;;) {		if (-1 == (c = getopt(argc, argv, "hgt:")))			break;		switch (c) {		case 't':			timeout = atoi(optarg);			break;		case 'g':			grab = 1;			break;		case 'h':			usage(argv[0],0);		default:			usage(argv[0],1);		}	}	if (optind == argc)		usage(argv[0],1);	devnr = atoi(argv[optind]);	show_events(devnr,timeout,grab);	return 0;}/* --------------------------------------------------------------------- * Local variables: * c-basic-offset: 8 * End: */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -