linux - 如何使用 Linux 系统调用检测何时按下某个键

标签 linux system-calls

我正在尝试编写一个 C 程序,它使用 Linux 系统调用来模拟 more 的行为。 Linux 终端中的命令。由于用户可能会输入诸如 q 之类的命令为了完成执行,我试图找到一种方法,在不使用 read(...) 的情况下从标准输入输出中读取击键。 ,因为我不希望按下的键出现在标准输出上。

换句话说,我希望能够在不写入的情况下检测到按下的键。

我读过 ioctl()termios struct 可以以某种方式用于此目的,但我不确定它们是如何使用的(我发现手册页有些神秘)。

我已经找到了一些使用这些函数的答案,但它们似乎都太复杂了。一定有更简单的方法来检测简单的击键,不是吗?

最佳答案

man 3 termiostcsetattr,在标准输入上禁用 ECHO

有关详细说明,请参阅:Hide password input on terminal

或者,您可以通过下面的 termios 抽象,使用输入层 /dev/input/*,但我认为您需要禁用从输入设备到上层的转发事件.

关于linux - 如何使用 Linux 系统调用检测何时按下某个键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49190492/

相关文章:

x86 - NASM x86 : send system call interpreting payload to send as NULL

c - 在我的 C 代码中执行程序

mysql - 高 5 分钟平均负载的奇怪案例

linux - 用于检查创建的 AMI 是否可用的脚本,

linux - 更新 zenity 窗口的内容

c - 你如何在 C 中进行系统调用中断?

c - 为什么终端 session 结束时所有进程都被杀死?

c - malloc 返回内存或虚拟地址空间

linux - osm2pgsql 与 PostgreSQL 9.0

c++ - 如何在 C++ 中输出到没有 iostream 的控制台窗口?