【问题标题】:How to simulate keyboard key press (+Code ASCII of 'ALT' key)如何模拟键盘按键('ALT'键的+Code ASCII)
【发布时间】:2014-03-07 23:35:26
【问题描述】:

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

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

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

另外,如何按Enter键?

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

我做错了什么吗? 是否有一些我应该寻找的库(如Expect)?还是我试图做的事情是不可能的?

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

但我有两个目标:

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

我找到了两个解决方案:

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

但它们都不起作用。我做的对吗?

【问题讨论】:

  • 你不是在说你想要什么……是给 Xorg 的吗?看起来就像您希望“alt-tab”工作一样……您想使用哪种编程语言?到目前为止你尝试了什么?在我看来,它就像XY problem:你遇到了问题,你认为你得到了解决方案,你询问了解决方案,而你的解决方案完全错误地隐藏了可能是有效的问题。这篇文章将被关闭为“太宽泛”,请准备一个新的、更好的问题,这次是你的真正问题。我不会因为您是该网站的新手而投反对票。
  • @zmo 谢谢!我提供了更多细节

标签: linux keyboard-events


【解决方案1】:

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

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

【讨论】:

  • 谢谢@Benjamin!我试图做的是告诉终端在两个小时后(当我睡着的时候)执行这个命令:“sudo apt-get install gobjc”但是你知道它要求输入密码。我想在 XTerm 中以交互方式给它密码和 键。
  • 你可以做sudo /bin/sh -c 'sleep 2h; apt-get -y install gobjc'
  • 天哪,我多年来一直在寻找这样的“libxdo”,发现rubydoc.info/gems/xdo/0.0.4github.com/rshk/python-libxdo 都可以正常工作。比,@BenjaminBarenblat
猜你喜欢
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 2016-05-12
  • 2011-09-20
  • 1970-01-01
  • 2011-09-18
  • 2020-01-23
  • 1970-01-01
相关资源
最近更新 更多