在 Linux C 控制台应用程序中模拟按键

2024-03-14

有没有办法用C语言在Linux中模拟按键?

在我的具体情况下,我使用的是 Ubuntu 9.04,需要一个简单的应用程序,在启动时调用“暂停”按钮。这将使 Firefox 中的 iframe 使用 Javascript 进行刷新。


我假设你的意思是“X11 应用程序” - 从你的描述中并不完全清楚你打算做什么。下面的代码片段将使用 XTest 扩展将“暂停”键代码发送到当前在 X11 下具有键盘输入焦点的应用程序 - 据我所知,这是“伪造”键盘事件的最兼容的方式。看看您是否可以将此应用到您的场景(没有错误检查 XOpenDisplay 是否成功,以使其更简单)。

#include <X11/Xlib.h>
#include <X11/keysym.h>
#include <X11/extensions/XTest.h>
...
Display *display;
unsigned int keycode;
display = XOpenDisplay(NULL);
...
keycode = XKeysymToKeycode(display, XK_Pause);
XTestFakeKeyEvent(display, keycode, True, 0);
XTestFakeKeyEvent(display, keycode, False, 0);
XFlush(display);

您需要使用 -lX11 -lXtst 进行链接。

显然此时 Firefox 需要获得焦点。

但是,我很想知道您想要完成的更大任务是什么 - 我怀疑应该有一个比欺骗按键事件更优雅的解决方案。

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

在 Linux C 控制台应用程序中模拟按键 的相关文章

  • nUnit Assert.That(method,Throws.Exception) 不捕获异常

    有人可以告诉我为什么这个检查异常的单元测试失败了 显然我真正的测试是检查其他代码 但我使用 Int32 Parse 来显示问题 Test public void MyTest Assert That Int32 Parse abc Thro
  • 如何修改道路网络的 L 系统?

    向大家问好 我目前正在研究道路网络的程序生成 并偶然发现了 L 系统算法 根据我从有关该主题的各种科学论文以及有关该主题的论文的进一步论文中了解到 算法更改为使用 全局目标和局部约束 其中修改所采取的路径以适应地形等输入值和人口密度 现在我
  • 使用 Xlib 捕获鼠标

    我想编写一个简单的 Xlib 程序来改变鼠标行为 举个例子 反转垂直移动 我在捕获事件时遇到问题 我想要代码 捕获控制器位置的变化 我向上移动鼠标 MotionEvent 计算新的光标位置 new x difference x 设置新的光标
  • Linux 中如何确定哪个进程正在使用某个端口

    我目前正在其默认端口上运行 RethinkDB 因为如果我将浏览器指向localhost 8080我看到 RethinkDB Web 界面 我想关闭 RethinkDB 并使用以下命令在另一个端口上重新打开它 port offset争论 然
  • 无法使用 process.ErrorDataReceived c# 获取进程错误输出

    我已经建立了Form我使用了一段时间的应用程序 现在我想捕捉StandardError我的流程及其standartOutput 我查看了答案SO and MSDN https msdn microsoft com en us library
  • 测试 WebApi 控制器时如何生成 Asp.net 用户身份

    我正在使用 Web API 2 在 web api 控制器中我使用过GetUserId使用 Asp net Identity 生成用户 ID 的方法 我必须为该控制器编写 MS 单元测试 如何从测试项目访问用户 ID 我在下面附上了示例代码
  • 如何在 Python 中将列表变量传递给 subprocess.call 命令

    我有一个清单 apps apps append wq35a5huqlja45jsyukrpmwuiayovrmh apps append q7mimvgduueernwvw4y22t5huemykntw apps append pmudbp
  • 接收UDP数据包

    假设我的程序通过网络 UDP 发送 1000 字节 它是否保证接收方将 一批 接收 1000 个字节 或者他可能需要执行多次 读取 直到收到完整的消息 如果后者为真 我如何确保同一消息的数据包顺序不会 混淆 按顺序 或者协议可能保证这一点
  • 不明确的元函数或未定义的类型

    我是元功能的新手 我想编写一个函数 将复合类型中某种类型的所有匹配项替换为其他类型 在示例中 replace
  • 不区分大小写“包含(字符串)”

    有没有办法让下面的返回为真 string title ASTRINGTOTEST title Contains string 似乎没有过载允许我设置区分大小写 目前我将它们都大写 但这很愚蠢 我指的是i18n http en wikiped
  • 包含不同类型的两个集合相交

    假设我有一个集合 称之为ids它是类型IEnumerable
  • 如何使用最小起订量模拟 Controller.User

    我有几个 ActionMethods 查询 Controller User 的角色 如下所示 bool isAdmin User IsInRole admin 在这种情况下可以方便地行事 我开始使用这样的代码对这些方法进行测试 TestMe
  • 使用 ASP.NET Core Identity 将令牌保存在 Cookie 中

    我想在我的 身份 生成的 cookie 中保存一些内容 我目前正在使用文档中的默认身份设置 启动 cs services Configure
  • C 错误:格式“%s”需要“char *”类型的参数,但参数 2 的类型为“char (*)[100]”

    过去几天我正在用 c 进行练习 并且收到此警告 如标题所示 我已经尝试了很多东西 但我真的不知道如何准确地解决这个问题 我不擅长编程 所以会有错误 以下是我正在使用的结构 无法更改 因为它们就是这样给出的 typedef struct bo
  • MVC Razor for 循环

    我有这段代码 嵌套在表单帖子内 但我不断收到错误 它缺少结束语 for int i 0 i lt itemsCount i
  • 将引用托管代码中分配的内存的指针传递给非托管代码

    我在 C 中分配了一个大的 char 缓冲区 并且希望将指向此数据的指针传递给 DLL 中的未管理的 c 函数 现在我认为要使其工作 必须修复字符缓冲区 以便 GC 在函数工作时无法移动它 如果是这样 我会声明缓冲区已固定并调用 UNSAF
  • 如何从与桌面交互的应用程序与 Windows 服务进行通信?

    使用 Net 与服务交互的最佳方式是什么 即大多数托盘应用程序如何与其服务器通信 如果这个方法也是跨平台的 那就更好了 在 Mono 中工作 所以我猜远程处理已经过时了 Edit 忘了说了 我们仍然需要在现场支持 Windows 2000
  • 如何在网格视图中突出显示文本的结果? [复制]

    这个问题在这里已经有答案了 可能的重复 如何突出显示某个单词 https stackoverflow com questions 9546761 how can i highlight a word 我有一个网格视图和一个文本框 用于从列中
  • 将 tiff 像素长宽比更改为正方形

    我正在尝试对多页 tiff 文件执行条形码识别 但是 tiff 文件是从传真服务器 我无法控制 发送给我的 该服务器以非方形像素长宽比保存 tiff 这导致图像由于纵横比而被严重挤压 我需要将 tiff 转换为方形像素长宽比 但不知道如何在
  • Phong 着色问题

    我正在根据以下内容编写着色器冯模型 http en wikipedia org wiki Phong reflection model 我正在尝试实现这个方程 其中 n 是法线 l 是光线方向 v 是相机方向 r 是光反射 维基百科文章中更

随机推荐

  • iOS 上的 Mobile Safari 在大页面上崩溃

    我遇到一个问题 当页面变得太大时 使用 jQuery 加载和操作 DOM 时 Mobile Safari 会崩溃 我在 iPhone 和 iPad 上都遇到同样的问题 排除移动页面故障以查找错误的最佳方法是什么 是否存在可能导致 Mobil
  • 每次运行后,Xcode 6 都会在 iOS8 模拟器中不断重命名我的应用程序目录。

    我正在运行 Xcode 6 Beta 5 但自从第一个 Beta 版以来这种情况就一直发生 每次运行后 我的应用程序在模拟器中的目录都会被重命名 我花了一段时间才弄清楚这一点 我用它来获取文档的目录引用 NSString folder NS
  • 当我尝试卸载包含 NSSM 服务的软件时,失败

    对于以下安装程序包 我有服务XXXService当我安装我的包时 成功安装并运行 但卸载失败并出现错误并恢复 我怀疑该服务仍在运行 阻止删除main exe file 请帮助完成卸载工作 重现此错误的完整最小源是可用的 https gith
  • 将 R 与 php 连接

    我正在尝试以 php localhost 方式运行 R 代码 所以我按照这个例子 https www r bloggers com integrating php and r https www r bloggers com integra
  • GGPlot2 中的 NLS 回归,绘制 y=Ax^b 趋势线误差

    我正在尝试在一组 3 个数据点上拟合基本幂趋势线 就像您在 Excel 中模拟 y Ax b 函数一样 我有一个非常简单的数据集加载到 LCurve data 中 如下所示 MDPT 4 10 9 51 6 曲线下面积 287069 4 2
  • Matlab 中的分组箱线图:通用函数

    在看到 SO 中这篇很棒的文章后 matlab绘制分组箱线图最有效的方法 https stackoverflow com questions 15971478 most efficient way of drawing grouped bo
  • 更改 bootstrap vue 选项卡标题的标题颜色

    I m using bootstrap vue js to create a tab The result is like this 我只想更改选项卡标题颜色 因为它使用我项目中的默认颜色 并来自 bootstrap vue js 官方链接
  • 提交时避免 PHP 中的竞争条件:请不要多次单击“提交”!

    不久前 在线应用程序曾经说过 不要多次点击提交 现在已经消失了 对吧 例如 在 PHP 中如何防范这种情况 我使用的一个解决方案是在会话中放置一个变量 这样您就不能每 10 秒多次提交到一个页面 这样数据库工作就完成了 因此可以进行正常检查
  • Automapper 地图自定义集合

    Hello 我有一个看起来像这样的列表 public class PagedList
  • 在 PHP 和 JavaScript 之间共享常量 [重复]

    这个问题在这里已经有答案了 可能的重复 将 PHP 字符串传递给 Javascript 变量 并转义换行符 https stackoverflow com questions 168214 pass a php string to a ja
  • 确保立即选择 iframe

    这可能是一个愚蠢的问题 但是当我使用 iframe 时 如果您单击该框架 则可以使用特定方面 由 iframe 使用的 html 文件中的事件侦听器控制 如果您在 iframe 外部单击 则会失去对这些控件和事件侦听器的访问权限 有没有办法
  • PHP 重写 url 并保留发布的数据

    我有一个 php 服务器 我想重写传入的 url 由于传入请求是发布请求 我还希望发布的数据在新的网址上传输 我已经成功地使用以下重写规则重定向网址 RewriteRule test http localhost index php dat
  • Android:将 RGB888 转换为 Y800

    我正在从 vuforia 获取作为 RGB888 bytes 捕获的图像 我想将其传递给 zbar 它期望格式为 Y800 我怎样才能做到这一点 i tried Image barcode new Image width height RG
  • useReducer 的initialState 类型为never?

    初始状态有错误 类型为 email string 的参数密码 字符串 有效 布尔值 不可分配给 never 类型的参数 ts 2345 function reducer state IState action IFluxAction con
  • 将 Selenium WebDriver 与 Tor 结合使用

    因为 Tor Browser Bundle 只是 Firefox 的补丁版本 所以似乎应该可以使用FirefoxDriver使用 Tor 浏览器 这是我到目前为止所尝试过的 String torPath C Users My User De
  • 类路径中的 Groovy 资源未加载

    今天是个好日子 我正在使用 spock 框架在我的 groovy 项目 IDE Intellij Idea 12 6 中进行测试 我的 spock 规范类将文件名传递给 groovy 对象进行处理 该文件肯定位于类路径中 但是当我尝试以这种
  • 如何用Java编写全屏模式?

    我希望我的应用程序具有全屏模式 最简单的方法是什么 我是否需要第三方库来实现此目的 或者 JDK 中是否已经提供了此功能 Try the 全屏独占模式API http java sun com docs books tutorial ext
  • 即使我在组件中添加了提供程序,角度 2 中也没有响应提供程序?

    错误 这是我收到的错误 即使我已将提供程序添加到我的组件中 我无法获取我的错误是什么 这是我的所有文件 应用程序组件 ts 应用程序组件 html carservice ts 我无法解决 EXCEPTION Error in 0 0 ORI
  • 在批次之间传递 LSTM 状态的最佳方式

    我正在尝试找到在批次之间传递 LSTM 状态的最佳方法 我已经搜索了所有内容 但找不到当前实施的解决方案 想象一下我有类似的东西 cells rnn LSTMCell size for size in 256 256 cells rnn M
  • 在 Linux C 控制台应用程序中模拟按键

    有没有办法用C语言在Linux中模拟按键 在我的具体情况下 我使用的是 Ubuntu 9 04 需要一个简单的应用程序 在启动时调用 暂停 按钮 这将使 Firefox 中的 iframe 使用 Javascript 进行刷新 我假设你的意