- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在通过创建虚拟键盘/鼠标来玩 uinput。我设置虚拟设备没问题。
int fd;
struct uinput_user_dev uidev;
struct input_event ev;
int dx, dy;
int i;
fd = open("/dev/uinput", O_WRONLY | O_NONBLOCK);
if(fd < 0)
die("error: open");
if(ioctl(fd, UI_SET_EVBIT, EV_KEY) < 0)
die("error: ioctl");
if(ioctl(fd, UI_SET_KEYBIT, BTN_LEFT) < 0)
die("error: ioctl");
if(ioctl(fd, UI_SET_EVBIT, EV_REL) < 0)
die("error: ioctl");
if(ioctl(fd, UI_SET_RELBIT, REL_X) < 0)
die("error: ioctl");
if(ioctl(fd, UI_SET_RELBIT, REL_Y) < 0)
die("error: ioctl");
memset(&uidev, 0, sizeof(uidev));
snprintf(uidev.name, UINPUT_MAX_NAME_SIZE, "test");
uidev.id.bustype = BUS_USB;
uidev.id.vendor = 0x1;
uidev.id.product = 0x1;
uidev.id.version = 1;
write(fd, &uidev, sizeof(uidev))
ioctl(fd, UI_DEV_CREATE)
而且我可以在/dev/uinput 中写入事件。它工作正常,鼠标在移动或键盘在工作。
但是我不知道在哪里可以读取输入的事件。我可以在/dev/input/mice 上读取鼠标并查看虚拟鼠标的数据。但是/dev/input/mice 适用于所有鼠标...
我应该阅读哪个/dev/input/eventX?我试图阅读所有这些内容,但什么也没有。
我为我的 usb 鼠标读取了 event0,为键盘读取了 event1...但是我在哪里可以读取有关我的虚拟设备的信息?
最佳答案
通常使用标准的 udev 规则根据名称生成符号链接(symbolic link);例如,在基于 Debian 的系统中,作为 /dev/input/by-id/*-event-*
到相应的输入事件设备。因为这些是基于设备属性的,所以它们是稳定的:您可以只使用其中的符号链接(symbolic link)来访问您的虚拟设备。
如果找不到符号链接(symbolic link),可以搜索输入事件设备。
每个 Linux 输入事件设备都由伪目录 /sys/class/input/event*
描述,即 /sys/class/input/event0
,对应于 /dev/input/event0
或 /dev/input/event/0
(以存在者为准)。
伪文件 /sys/class/input/event*/device/name
包含设备名称。产品、供应商、版本和总线类型在伪文件 /sys/class/input/event*/device/id/product
、/sys/class 中以四字符的十六进制字符串形式提供/input/event*/device/id/vendor
、/sys/class/input/event*/device/id/version
和 /sys/class/input/event*/device/id/bustype
,分别。您可以正常读取这些文件,除非您使用 stat()
或 fstat()
它们,它们的大小为零。相反,将这些文件的内容读取到一个小缓冲区(长度为 128,或最多 126 个字符 + "\n\0"
,应该足以作为名称;8 (4 + "\n\0"
) 应满足id/
)下的文件,并与所需的设备名称进行比较,或解析十六进制数。
关于c - 虚拟鼠标和 eventX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33275495/
我正在通过创建虚拟键盘/鼠标来玩 uinput。我设置虚拟设备没问题。 int fd; struct uinput_user_dev uidev; struct
我想从/dev/input/eventX-Files 读取输入数据(键盘输入)。我想,我在以下位置找到了信息: lrwxrwxrwx 1 root root 9 19. Feb 07:45 usb-_
我正在尝试从/dev/input/event2 读取原始键盘缓冲区 ls -l /dev/input/by-id/ lrwxrwxrwx 1 root root 9 Mar 14 21:08 usb-
这些文件是否代表设备中的所有传感器?我在我的 android 设备上有 rot 访问权限,但是当我尝试打开这些文件时,我发现它们是空的,我的文件管理器浏览器告诉我这些文件在我浏览此目录前几秒钟已被修改
我有一个程序正在监听某个事件文件句柄。是否有我可以阅读的文件以获取有关我正在收听的特定事件的设备的详细信息? 最佳答案 假设 (a) 您在 Linux 上并且 (b) 您安装了 sysfs(通常在 /
我正在开发一个需要将触摸事件发送到/dev/input/eventX 的 android 应用程序。我知道执行此类操作的 C 代码结构如下: struct input_event { stru
我正在从事一个项目,该项目要求我在 Scientific Linux 6.4(Linux 内核 2.6.32)上运行触摸屏。虽然内核不完全支持触摸屏,但当我触摸屏幕时,我能够看到在触摸屏的 /dev/
我有一个自制的键盘,我想用 bash 脚本读出。键盘位置是/dev/input/event1 我正在尝试通过 在 bash 中读取此输入 read input
我需要检测某种类型的设备(例如鼠标)并使用守护进程在 Linux 中捕获它的事件。 Xlib 的使用似乎没有用,因为Xlib 只能捕获应用程序创建的窗口事件,而不是所有系统事件(但如果我错了,请纠正我
我正在开发一些需要在程序中向手机注入(inject)触摸屏事件的程序,我正在使用开源库 https://code.google.com/p/android-event-injector/通过在 dev
我正在尝试编写一个需要从类键盘 (HID) 设备获取输入的 Linux 守护程序 - 它不是控制台键盘,而是第二个设备(如果有任何区别,它实际上是一维条形码扫描仪) .守护进程将处理它接收到的数据(来
我正在 try catch linux 键盘/鼠标输入,并且正在读取来自 /dev/input/event2 之类的事件。但似乎输入有时会定向到 /dev/input/event2,有时会定向到 /d
所以我的守护进程会坐在那里听 udev,等待连接/断开事件,这样它就可以通知其他线程连接或停止读取/dev/input/eventX 文件。 本质上,它正在监听连接到本地系统(模拟 HID 键盘)的
我是一名优秀的程序员,十分优秀!