【问题标题】:Detect keypress in console application?在控制台应用程序中检测按键?
【发布时间】:2012-08-28 00:38:41
【问题描述】:

我需要在控制台应用程序中检测按键,而不提示用户。基本上,我的应用程序通常是一个监听特殊输入设备的守护进程,但我需要在开发盒上使用键盘以交互模式模拟它。我怎样才能做到这一点? - 我在 Linux 系统上。

【问题讨论】:

标签: c++ c linux keyboard keypress


【解决方案1】:

本文解释了如何做这样的事情。 http://thc.org/papers/writing-linux-kernel-keylogger.txt

【讨论】:

    【解决方案2】:

    如果您在等待输入时无法阻止,那么您可以使用例如select 检查STDIN_FILENO 文件描述符是否准备好读取,如果是,则可以使用普通输入函数(scanffgetsstd::getline 等)。

    【讨论】:

    • 这真的有效吗?在我的测试中(使用 select 手册页中的示例),select 在看到 CR 之前不会报告 stdin 已准备好读取。
    • @JoeStrout 您可能还需要更新终端标志,使用tcsetattr
    • 是的,至少在我的测试机器上似乎是这样(一台 OS X,一台 Ubuntu)。
    【解决方案3】:

    您查看此answer,它解释了如何从输入事件中读取(通常为/dev/input/event0

    或者直接查看答案出处:

    学分不归我所有,此代码取自 Ventriloctrl hack 以获取击键。 http://public.callutheran.edu/~abarker/ventriloctrl-0.4.tar.gz

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-29
      • 2013-12-07
      • 2018-04-06
      • 2020-10-16
      • 2023-03-14
      相关资源
      最近更新 更多