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

📄 sendevent.c

📁 Android 一些工具
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdint.h>#include <fcntl.h>#include <sys/ioctl.h>//#include <linux/input.h> // this does not compile#include <errno.h>// from <linux/input.h>struct input_event {	struct timeval time;	__u16 type;	__u16 code;	__s32 value;};#define EVIOCGVERSION		_IOR('E', 0x01, int)			/* get driver version */#define EVIOCGID		_IOR('E', 0x02, struct input_id)	/* get device ID */#define EVIOCGKEYCODE		_IOR('E', 0x04, int[2])			/* get keycode */#define EVIOCSKEYCODE		_IOW('E', 0x04, int[2])			/* set keycode */#define EVIOCGNAME(len)		_IOC(_IOC_READ, 'E', 0x06, len)		/* get device name */#define EVIOCGPHYS(len)		_IOC(_IOC_READ, 'E', 0x07, len)		/* get physical location */#define EVIOCGUNIQ(len)		_IOC(_IOC_READ, 'E', 0x08, len)		/* get unique identifier */#define EVIOCGKEY(len)		_IOC(_IOC_READ, 'E', 0x18, len)		/* get global keystate */#define EVIOCGLED(len)		_IOC(_IOC_READ, 'E', 0x19, len)		/* get all LEDs */#define EVIOCGSND(len)		_IOC(_IOC_READ, 'E', 0x1a, len)		/* get all sounds status */#define EVIOCGSW(len)		_IOC(_IOC_READ, 'E', 0x1b, len)		/* get all switch states */#define EVIOCGBIT(ev,len)	_IOC(_IOC_READ, 'E', 0x20 + ev, len)	/* get event bits */#define EVIOCGABS(abs)		_IOR('E', 0x40 + abs, struct input_absinfo)		/* get abs value/limits */#define EVIOCSABS(abs)		_IOW('E', 0xc0 + abs, struct input_absinfo)		/* set abs value/limits */#define EVIOCSFF		_IOC(_IOC_WRITE, 'E', 0x80, sizeof(struct ff_effect))	/* send a force effect to a force feedback device */#define EVIOCRMFF		_IOW('E', 0x81, int)			/* Erase a force effect */#define EVIOCGEFFECTS		_IOR('E', 0x84, int)			/* Report number of effects playable at the same time */#define EVIOCGRAB		_IOW('E', 0x90, int)			/* Grab/Release device */// end <linux/input.h>int sendevent_main(int argc, char *argv[]){    int i;    int fd;    int ret;    int version;    struct input_event event;    if(argc != 5) {        fprintf(stderr, "use: %s device type code value\n", argv[0]);        return 1;    }    fd = open(argv[1], O_RDWR);    if(fd < 0) {        fprintf(stderr, "could not open %s, %s\n", argv[optind], strerror(errno));        return 1;    }    if (ioctl(fd, EVIOCGVERSION, &version)) {        fprintf(stderr, "could not get driver version for %s, %s\n", argv[optind], strerror(errno));        return 1;    }    memset(&event, 0, sizeof(event));    event.type = atoi(argv[2]);    event.code = atoi(argv[3]);    event.value = atoi(argv[4]);    ret = write(fd, &event, sizeof(event));    if(ret < sizeof(event)) {        fprintf(stderr, "write event failed, %s\n", strerror(errno));        return -1;    }    return 0;}

⌨️ 快捷键说明

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