linux - 如何模拟键盘按键(+ 'ALT'键的ASCII码)

标签 linux keyboard-events

我最近了解到,如果我在 /dev/tty 中写入字符,它将模拟键盘的按键操作。

我想知道是否可以模拟按住某个键或组合键。

我正在寻找的是模拟 Alt + Tab 在打开的应用程序之间切换。 我不是在寻找替代品。我正在练习学习如何模拟键盘上的物理按键。 是否可以模拟组合键(如 Alt + Tab)?

另外,如何按Enter键?

看起来不是“\n”或“\r”或“\r\n”或“\n\r”。 我寻找 Enter 键的原因是我想在终端中执行“sudo”命令,当它提示输入密码时,我使用 /dev/tty 来回答这个问题,但标准输入或标准输出(使用“-S”选项和 sudo)似乎不起作用。

我是不是做错了什么? 是否有一些我应该寻找的库(例如 Expect )?或者我想做的事情是不可能的?

我正在使用 C++。我想做的就是尝试模拟键盘上的物理按键。操作系统是Ubuntu 13.04 (饲养环尾)。 (只是作为练习)

但我有两个目标:

  1. 创建一个使用 Alt + Tab 在应用程序之间切换的程序。
  2. 与 Linux 终端交互。

我找到了两种解决方案:

  1. 将对应按键的字符/codeASCII写入/dev/tty
  2. 将相应按键的字符/codeASCII写入标准输出和/或标准输入

但是它们都不起作用。我所做的是否正确?

最佳答案

X 不从 /dev/tty 读取击键。如果你想在 X 中模拟击键,你需要以另一种方式发送它们。如果您正在编写 shell 脚本,xdotool是你的 friend ;不过,如果您正在编写 C 语言,您可能会想要使用 libxdo ,xdotool 的底层库。如果您正在寻找更底层的东西,您可能会对 XCB Test API 感兴趣。 ,xdotool 和 libxdo 都依赖它。

除非您能提供有关 sudo 体验的更多信息,否则我认为没有人能够回答您的第二个问题。 sudo -S 绝对是以编程方式向 sudo 提供密码的预期机制。

关于linux - 如何模拟键盘按键(+ 'ALT'键的ASCII码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22262777/

相关文章:

java - 在整个应用程序中全局捕获键盘组合以显示 Java 中隐藏的 JDialog

c# - .NET : How to get time for keypress as precisely as possible?

c++ - 为什么程序会在 WSL 中挂起?

linux - 如何在 yocto 中将下载文件夹存储在我们的私有(private)仓库中

python - 创建一个 python 脚本,将 ping 结果打印到旋转日志中

linux - rundeck:辅助 sudo 密码身份验证不起作用

google-apps-script - 谷歌文档 : dispatch a keyboard event with userscript (tampermonkey)

dart - Dart 中的简单命令行应用程序 I/O

c - 如何摆脱在处理 GLUT 中的键盘事件时按住某个键的等待时间?

c++ - C++ 中的运行时内存分析