当前位置: 首页 > 面试题库 >

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

何兴学
2023-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需要重点关注。

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



 类似资料:
  • 要在控制台应用程序中开始使用Hangfire,您需要首先将Hangfire包安装到控制台应用程序。因此,使用您的软件包管理器控制台窗口进行安装: PM> Install-Package Hangfire.Core 然后添加任务存储安装所需的软件包。例如,使用SQL Server: PM> Install-Package Hangfire.SqlServer 仅需 Hangfire.Core 软件包

  • sh wget progressbar colorama Gooey——把 CLI 程序变成 GUI

  • 任何帮助都将不胜感激。 注意:要查看屏幕快照:https://softwarerecs.stackexchange.com/questions/6943/problem-with-creating-a-console-application-in-visual-studio-2010-Ultimate

  • 问题内容: 我一直在尝试从Java应用程序中检索“ unicode用户输入”,以获得一个小的实用程序片段。问题是,它似乎在“开箱即用”的Ubuntu上运行,我猜它在UTF-8上具有操作系统范围的编码,但是从“ cmd”运行时在Windows上不起作用。考虑的代码如下: 在Ubuntu上的输出(不对配置进行任何更改): 在Windows CMD提示符下输出(绝不受JAVA_TOOL_OPTIONS影

  • 问题内容: 现在,我正在开发类似于bash的命令行应用程序。为了实现自动完成功能,我必须知道用户已经按下Tab键。但是我不知道如何在控制台应用程序中监听键盘事件。 有任何想法吗?提前致谢。 问题答案: 这比看起来要复杂一些。 也许您应该看一下为您处理所有事情的jline项目。

  • progressbar 提供了一个控制台进度条工具,示例代码: from progressbar import ProgressBar import time pbar = ProgressBar(maxval=10) for i in range(1, 11): pbar.update(i) time.sleep(1) pbar.finish() # 60% |#########