当前位置: 首页 > news >正文

jsp网站制作短剧个人主页简介模板

jsp网站制作,短剧个人主页简介模板,dw软件下载官方网站,优秀个人网站主页文章目录🔧 使用场景举例📂 uinput 的工作机制📌 核心数据结构:struct input_event✅ 示例流程代码🔍 注意事项📊 uinput 与 input 子系统的关系🧠 总结一句话uinput(User Input Sub…

文章目录

    • 🔧 使用场景举例
    • 📂 uinput 的工作机制
    • 📌 核心数据结构:`struct input_event`
    • ✅ 示例流程代码
    • 🔍 注意事项
    • 📊 uinput 与 input 子系统的关系
    • 🧠 总结一句话


uinputUser Input Subsystem)是 Linux 内核提供的一个字符设备接口,它允许用户空间程序创建虚拟输入设备,并向内核上报各种输入事件(键盘、鼠标、触摸、游戏手柄等),从而模拟真实的输入设备行为。

换句话说,uinput 让用户空间也能**“伪装”出一个输入设备**,对系统来说,它和真正的物理键盘/鼠标没有区别。


🔧 使用场景举例

  • 虚拟键盘/鼠标:例如模拟自动输入操作
  • 触摸屏模拟:测试 UI 时模拟触控行为
  • 游戏控制器仿真
  • 输入录制与重放工具
  • 远程桌面控制(输入事件重定向)
  • 手势识别程序:识别后转为标准输入事件

📂 uinput 的工作机制

  1. 用户态打开 /dev/uinput
  2. 设置设备信息(如名称、支持的事件类型)
  3. 发送 UI_DEV_CREATE ioctl 创建设备
  4. 通过 write() 写入 input_event 结构体,发送事件
  5. 发送 UI_DEV_DESTROY ioctl 注销设备

📌 核心数据结构:struct input_event

struct input_event {struct timeval time;__u16 type;   // 事件类型,比如 EV_KEY、EV_REL、EV_ABS 等__u16 code;   // 键值,如 KEY_A、REL_X 等__s32 value;  // 键值的状态:按下(1)、释放(0)、保持(2)
};

✅ 示例流程代码

下面是一个模拟按下和释放 “A” 键的 uinput 简例:

#include <linux/uinput.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <sys/ioctl.h>int main() {int fd = open("/dev/uinput", O_WRONLY | O_NONBLOCK);// 设置支持的事件类型ioctl(fd, UI_SET_EVBIT, EV_KEY);ioctl(fd, UI_SET_KEYBIT, KEY_A);  // 支持键盘A键struct uinput_user_dev uidev = {};snprintf(uidev.name, UINPUT_MAX_NAME_SIZE, "virtual-keyboard");uidev.id.bustype = BUS_USB;uidev.id.vendor  = 0x1234;uidev.id.product = 0xfedc;uidev.id.version = 1;write(fd, &uidev, sizeof(uidev));ioctl(fd, UI_DEV_CREATE);  // 创建虚拟设备sleep(1); // 等待设备被系统识别// 模拟按下A键struct input_event ev = {};ev.type = EV_KEY;ev.code = KEY_A;ev.value = 1; // 按下write(fd, &ev, sizeof(ev));// 同步事件ev.type = EV_SYN;ev.code = SYN_REPORT;ev.value = 0;write(fd, &ev, sizeof(ev));// 模拟释放A键ev.type = EV_KEY;ev.code = KEY_A;ev.value = 0; // 释放write(fd, &ev, sizeof(ev));// 再次同步ev.type = EV_SYN;ev.code = SYN_REPORT;ev.value = 0;write(fd, &ev, sizeof(ev));sleep(1);ioctl(fd, UI_DEV_DESTROY); // 销毁设备close(fd);return 0;
}

🔍 注意事项

  1. uinput模块必须加载:
modprobe uinput
  1. 确保 /dev/uinput 存在并有权限访问:
ls -l /dev/uinput
  1. 需要 root 权限 或使用 udev 设置非 root 访问权限

  2. SYN_REPORT 必不可少:通知内核“这一批输入事件”已完成


📊 uinput 与 input 子系统的关系

模块作用
input_dev真实或虚拟输入设备结构体
evdevinput_dev 转换成 /dev/input/eventX 供用户读取
uinput用户空间模拟 input_dev 的工具
用户态程序写入 uinput,驱动事件注入系统

🧠 总结一句话

uinput 是 Linux 提供的一种机制,让你在用户态就能模拟一个输入设备,并“骗过”操作系统和上层应用。

在自动化测试、输入仿真、手势识别、远程控制等场景中,uinput 是一个非常强大的工具。


http://www.dtcms.com/a/522650.html

相关文章:

  • 为何网站需改版初中毕业如何提升学历
  • 网页标准化对网站开发维护者的好处网页设计心得体会800字
  • 海口建站网站模板WordPress禁止上传php
  • 杭州哪家公司可以做网站网络设计方案的组成部分
  • wordpress做网站手机wordpress管理界面更名
  • 怎么做水果网站做暖暖在线获取网站
  • 手机wap网站模板emlog轻松转wordpress
  • 简述网站建设的主要内容互联网公司可通过数据分析人们的哪些方面
  • 企业网站定制设计公司来自网站的临时会话
  • 鞍山网站建设找金航网站建设文化报价
  • 常用的网站开发工具wordpress给博客主题添加自定义主题设置页面
  • 有哪些做包装设计网站好些网站文章怎么做才能被收录
  • 园区网站建设服务公司都安网站建设
  • 成都网站建设scyiyou二维码怎么制作
  • 长春南关网站建设济南 域名注册 网站建设
  • 重庆有效的网站推广wordpress 电影解析
  • 网站维护一般要几天二手网站怎么做
  • 企业seo自助建站系统博客网站素材
  • 电子商务网站开发形式做网站编程的待遇
  • 做的好的音乐网站wordpress 图片库预览页面
  • 营销型网站的三元素企业网站的综合要求
  • 网站建设优化服务特色商城网站建设报
  • 周口网站制作成都公司注册流程及需要的材料
  • 宜宾网站建设工作室成都网站建设小程序
  • 如何用文档创建一个网站怎么下载html中的视频
  • 网站的公共头部怎么做wordpress神马提交
  • txt电子书下载网站推荐企业如何数字化转型
  • 网站建设客户沟通模块做网站公司找哪家公司
  • 平价建网站格翻译国外网站做原创
  • 做传销网站违法的吗北京网站设计公司兴田德润信任高