Linux的 - 放弃键盘输入(Linux - Discard keyboard input)

2019-09-22 01:06发布

首先,一点背景:我运行Crunchbang Linux的一个VirtualBox的虚拟机中最新的稳定版本。 我设计一个基于文本的自定义用户界面上的bash上运行。 这是正在使用C的组合++和bash脚本来完成。

我需要在时间,完全彻底的删除,为用户提供系统的任何类型的标准键盘输入的能力。 这是因为,当我运行该系统的一部分,用户被迫等待一定的时间量。
不幸的是,用户还可以键入虽然这是怎么回事,不管他们键入放在屏幕上。 这发生在我运行一个C ++程序,以及一个bash脚本。 究其原因,这是一个问题是,有哪个用户阅读屏幕上的文字,如果他们可以输入,它取代了文字。 将有此之后其他用途,也一样使系统看起来像它已经冻结了。

因此,问题 - 如何

  1. 禁用键盘,或
  2. 防止在屏幕上显示了在键盘上按下什么?

Answer 1:

关闭回波模式stty -echo或等效C代码(这将使用tcgetattrtcsetattr )。 当您准备再次接受输入,打开它。 您也不妨放弃,而你没有预料到到达的输入。 这将与完成tcflush但要注意,一些用户(比如我)就认为一个烦恼。 提前键入是一种功能,而不是一个错误!



Answer 2:

要了解用户输入某个处理或TTY可以截获,的手册页和源代码interceptty可以有所启发。 (与它没有经验)

然而,你很难(完全)防止用户输入。 用户可能总是能够切换到不同的虚拟终端(如果有的话)或至少以重新启动使用Alt +打印+ B(系统魔术SysRq_key如果不是禁用)。 这是两个不同的东西忽略在给定的tty输入和禁用键盘输入干脆。



文章来源: Linux - Discard keyboard input