在linux中生成鼠标、按键...等事件

2023-12-24

我在一个项目中,需要编写一个简单的驱动程序,该驱动程序接受来自 USB 设备的输入,并根据收到的消息在 GUI 上执行操作(就像编写 USB 鼠标驱动程序,但使用我自己的协议)。 我正在寻找这种可能性,我发现像 LDTP 这样的软件测试自动化工具已经可以生成鼠标点击和键盘点击等操作。 还有其他API可以使用吗?如果我的团队对 C 语言有很好的了解,但没有 Linux 经验,那么需要多长时间?


我能想到的基本上有两种选择:

  • X11:使用 XTest 扩展(XTestFakeDeviceKeyEvent, XTestFakeRelativeMotionEvent, etc.)
  • 模块u输入。

第一个利用fake输入设备(尝试运行xinput list在 shell 中)存在于大多数(所有?)X 服务器中。每次调用其中一个XTestFake*函数生成 X 输入消息。

第二个是内核模块,允许用户应用程序创建输入设备并发送输入事件。您只需打开/dev/uinput设备,发送一些ioctls来配置它,然后write直接输入事件。

当然,您可以编写输入内核驱动程序!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在linux中生成鼠标、按键...等事件 的相关文章

  • 静态构造函数和 BeforeFieldInit?

    如果类型没有静态构造函数 则将执行字段初始值设定项 就在使用该类型之前 或者在某个时间点突发奇想 运行时 为什么这段代码 void Main start Dump Test EchoAndReturn Hello end Dump clas
  • 如何使用 openSSL 函数验证 PEM 证书的密钥长度

    如何验证以这种方式生成的 PEM 证书的密钥长度 openssl genrsa des3 out server key 1024 openssl req new key server key out server csr cp server
  • 为什么 C 程序使用 Scanf 给出奇怪的输出?

    我目前正在学习 C 编程 并且遇到了这个奇怪的输出 Program will try functionalities of the scanf function include
  • 在 C 语言中,为什么数组的地址等于它的值?

    在下面的代码中 指针值和指针地址与预期不同 但数组值和地址则不然 怎么会这样 Output my array 0022FF00 my array 0022FF00 pointer to array 0022FF00 pointer to a
  • 无法继承形状

    为什么我不能使用继承 a 的类Shapes class http msdn microsoft com en us library ms604615 28v vs 90 29 我需要延长Rectangle具有一些方法的类 但我想以与使用相同
  • 在 C++ 代码中转换字符串

    我正在学习 C 并开发一个项目来练习 但现在我想在代码中转换一个变量 字符串 就像这样 用户有一个包含 C 代码的文件 但我希望我的程序读取该文件并插入将其写入代码中 如下所示 include
  • 如何在 C# 中将 Json 转换为对象

    我想将 Json 转换为 C 中的对象 这里的 Json 是 值 e920ce0f e3f5 4c6f 8e3d d2fbc51990e4 如何使用 Object 问题看似愚蠢 但其实并不那么愚蠢 我没有简单的 Json 我有 IEnume
  • Android NDK 代码中的 SIGILL

    我在市场上有一个 NDK 应用程序 并获得了有关以下内容的本机崩溃报告 SIGILL信号 我使用 Google Breakpad 生成本机崩溃报告 以下是详细信息 我的应用程序是为armeabi v7a with霓虹灯支持 它在 NVIDI
  • MVC 5 中具有 ASP.NET Identity 的 Autofac 不会验证 OWIN 管道中的安全标记

    我在 MVC 5 中设置了 AutoFac 来与 ASP NET Identity 一起使用 表面上一切似乎都工作正常 即用户可以创建帐户并登录 但后来我发现 当安全标记更改时 用户不会注销 通过在 AspNetUsers 表中进行暴力破解
  • C# 根据当前日期传递日期时间值

    我正在尝试根据 sql server 中的两个日期获取记录 Select from table where CreatedDate between StartDate and EndDate我通过了5 12 2010 and 5 12 20
  • Libev,如何将参数传递给相关回调

    我陷入了 libev 中争论的境地 通常 libev 在类似的函数中接收包 接收回调 没关系 但是实际操作中 我们需要派遣一个亲戚 写回调 根据收到的包裹处理具体工作 例如 S RECV MSG pstRecvMsg S RECV MSG
  • 测量进程消耗的 CPU 时钟

    我用 C 语言编写了一个程序 它是作为研究结果创建的程序 我想计算程序消耗的确切 CPU 周期 精确的循环次数 知道我怎样才能找到它吗 The valgrind tool cachegrind valgrind tool cachegrin
  • C# 获取数据表中所有重复行的计数

    我通过运行存储过程来填充数据集 并且从数据集中填充数据表 DataSet RawDataSet DataAccessHelper RunProcedure storedprocedureName this will just return
  • wordexp 失败时我们需要调用 wordfree 吗?

    wordexp 失败时我们需要调用 wordfree 吗 在某些情况下 调用 wordfree 似乎会出现段错误 例如 当 wordfree 返回字符串为 foo bar 的错误代码时 这在手册页中并不清楚 我已经看到在某些错误情况下使用了
  • MySQL 连接器 C++ 64 位在 Visual Studio 2012 中从源代码构建

    我正在尝试建立mySQL 连接器 C 从源头在视觉工作室2012为了64 bit建筑学 我知道这取决于一些boost头文件和C 连接器 跑步CMake生成一个项目文件 但该项目文件无法编译 因为有一大堆非常令人困惑的错误 这些错误可能与包含
  • 使用 gcc 时在头文件中查找定义的好方法是什么?

    在使用 gcc 时 有人有推荐的方法在头文件中查找定义吗 使用 MSVC 时 我只需右键单击并选择 转到定义 这非常好 我使用过 netbeans gcc 它确实有代码帮助 包括到定义的超链接 所以这是一种选择 但是 我想知道是否有任何其他
  • C++ 指针引用混淆

    struct leaf int data leaf l leaf r struct leaf p void tree findparent int n int found leaf parent 这是 BST 的一段代码 我想问一下 为什么
  • .Net Reactive Extensions Framework (Rx) 是否考虑拓扑顺序?

    Net 反应式扩展框架是否按拓扑顺序传播通知以最大限度地减少更新量 就像 Scala Rx 所做的那样 Net 反应式扩展 Rx 是否可以 https github com lihaoyi scala rx wiki How it Work
  • 如何在 C# 中获取 CMD/控制台编码

    我需要指定正确的代码页来使用 zip 库打包文件 正如我所见 我需要指定控制台编码 在我的例子中为 866 C Users User gt mode Status for device CON Lines 300 Columns 130 K
  • 嵌入式linux编写AT命令

    我在向 GSM 模块写入 AT 命令时遇到问题 当我使用 minicom b 115200 D dev ttySP0 term vt100 时它工作完美 但我不知道如何在 C 代码中做同样的事情 我没有收到任何错误 但模块对命令没有反应 有

随机推荐

  • “AspNetUser”类型上的“Claims”属性不是导航属性

    我正在使用 ASP NET Identity 2 2 我正在将 ASP NET 旧成员资格迁移到新的身份系统 我正在按照中提到的步骤进行操作本文 http www asp net identity overview migrations m
  • 如何使用 Google Relyparty 禁用用户 Firebase?

    我想从我的应用程序中禁用 Firebase 用户 但 Firebase 文档只提供了删除用户的选项 我认为解决方案就像创建用户一样 https www googleapis com identitytoolkit v3 relyingpar
  • 用于 bash 补全的“have”关键字

    Is havebash 中的关键字 或者 bash 补全脚本使用非 bash 的语言吗 have gcc gcc 是很常见 看 grep have etc bash completion d 我找不到有关我见过的 bash 完成教程的任何信
  • 如何在 R 中为数据框着色

    我有以下类型的数据框 gt df V1 V2 V3 V4 V5 1 10 603 3 100 2 1 5 1 2 10 603 3 101 3 2 4 5 3 10 603 3 102 1 3 3 2 4 10 603 1 103 4 4
  • .NET 中是否存在与 UI 无关的 Point 结构?

    我认识几个Point NET 中的结构 System Drawing Point System Windows Point Sys UI Point 但它们都位于高级 UI 库 GDI WPF AJAX 中 我需要一个Point我不想将其与
  • CUDA/OpenCL 中的现实死锁示例

    对于我正在编写的教程 我正在寻找一个 现实 且简单的示例 说明由于不了解 SIMT SIMD 而导致的死锁 我想出了这个片段 这似乎是一个很好的例子 任何意见将不胜感激 int x threadID 2 if threadID gt x v
  • Python 中是否有已经制作好的字母表? [复制]

    这个问题在这里已经有答案了 我需要创建随机单词 名称random choice alphabet 对于我在 repl 中的许多游戏来说 但输入它并制作大写版本 仅辅音 元音等是很痛苦的 有没有一种内置的或可导入的方法来获取 python 中
  • 让 Bootstrap datetimepicker 在 ajax 加载后工作

    我有这个简单的脚本 可以正常形式工作 但是 如果我通过 ajax 将表单加载到 Bootstrap 3 模式中 时间和日期选择器不起作用 我知道问题是因为我通过 ajax 加载表单 那么如何为新加载的a
  • 简单的 Java 扫描器代码不起作用[重复]

    这个问题已经存在了 这是我为制作一个简单游戏而编写的一些基本代码的框架 Scanner in new Scanner System in String name String playing int age do System out pr
  • 如何从 iPhone 中的资源文件夹中获取文件夹和文件列表?

    我正在资源文件夹中执行文件夹结构 例如 Resource gt MyData gt S1 然后在S1 gt Name png data ppt 现在我想获取所有文件夹列表和文件名 这里 MyData 名称只是静态的 其他名称可能会更改 就像
  • 如何使用baseadapter将获取的json数据显示到listview中

    我是 android 和 java 的新手 最近我在使用 baseadapter 将获取的 json 数据显示到 listview 时遇到问题 起初我用过这段代码 Override protected void onCreate Bundl
  • 干净地绑定/取消绑定到应用程序中的服务

    我有一个绑定到持久服务的 Android 应用程序 一旦启动startService 该服务是应用程序的一个组成部分 因此几乎在每个 Activity 中都会使用该服务 因此 我只想绑定到服务一次 而不是在每个活动中绑定 取消绑定 并在应用
  • jQuery 中有没有类似 except 的东西?

    这怎么可能 以下构建不起作用 multibutton click function event some stuff before this next menu slideDown slow hide all other menus exc
  • Java Server Faces 2.0 的主要缺点是什么?

    昨天 我看到了有关 Java Server Faces 2 0 的演示 尽管我目前是一名快乐的 ASP NET MVC jQuery 开发人员 但它看起来确实令人印象深刻 我最喜欢 JSF 的是大量支持 AJAX 的 UI 组件 这似乎使开
  • 使用Jquery ajax json响应?

    有一个 ajax 请求 如下所示 ajax url users action type POST data myData context this error function success function this removeCla
  • 在多台计算机中同步 VirtualEnv

    我最近购买了一台新笔记本电脑 因此我不仅可以在工作站上工作 我有一个 Django REST 应用程序 对于这个项目 我使用 VirtualEnv 我的问题是 如何 同步 virtualenv 来安装新的依赖包 在我的工作站中 我安装了 D
  • HLS 元数据 ID3 标记不起作用

    我在 TableView 中有一个音频 URL 列表 所以每次我点击每个单元格时didSelectRowAt这个方法将被调用 func tableView tableView UITableView didSelectRowAt index
  • p:keyFilter 在 Firefox 中未按预期工作

    我可以为 p 输入文本输入数字和特殊字符 如何限制只能接受数字的字段 在所有浏览器中
  • 哪种方式更好?将媒体文件作为字节数组还是字符串保存到 MongoDB?

    我将媒体文件 图片 PDF 等 作为字节数组保存在 MongoDB 中 我看到人们通过将字节数组编码和解码为字符串来保存它的示例 有什么不同 也许性能上有区别 那么哪种方式更好呢 我注意到 当文件保存为字节数组时 Mongo Managem
  • 在linux中生成鼠标、按键...等事件

    我在一个项目中 需要编写一个简单的驱动程序 该驱动程序接受来自 USB 设备的输入 并根据收到的消息在 GUI 上执行操作 就像编写 USB 鼠标驱动程序 但使用我自己的协议 我正在寻找这种可能性 我发现像 LDTP 这样的软件测试自动化工