Keyboard 如何不显示从键盘输入的字符

Keyboard 如何不显示从键盘输入的字符,keyboard,ada,Keyboard,Ada,作为一个学期课程计划的一部分,我们正在设计一个模型列车系统。其中一部分是用于查看当前状态的监视器界面,以及用于系统命令的键盘输入。当获取键盘输入时,我们不应该显示它们 有没有办法禁用屏幕显示输入,或者如何从键盘流中获取输入 目前正在使用Ada.Text_IO包,并已使用Get和Get_Immediate进行了测试 附加的 我们不是为linux系统开发的。我们正在为MaRTE_OS开发基本上可以称为独立终端的设备。这个系统连接了几十块硬件板,其中大部分我都没有见过,甚至可以告诉你它们的用途 至于显

作为一个学期课程计划的一部分,我们正在设计一个模型列车系统。其中一部分是用于查看当前状态的监视器界面,以及用于系统命令的键盘输入。当获取键盘输入时,我们不应该显示它们

有没有办法禁用屏幕显示输入,或者如何从键盘流中获取输入

目前正在使用Ada.Text_IO包,并已使用Get和Get_Immediate进行了测试

附加的

我们不是为linux系统开发的。我们正在为MaRTE_OS开发基本上可以称为独立终端的设备。这个系统连接了几十块硬件板,其中大部分我都没有见过,甚至可以告诉你它们的用途

至于显示器,屏幕将充满频繁更新的输出(系统的一部分,我有它刷新信息约0.05秒)。没有空间尝试不显示信息,然后将其移回一行(也没有任何东西会一次打印一行,display类将需要的内容直接打印到屏幕上的一列)


输入的用户无需查看输入,因为系统只需读取输入并生成一个要处理的命令(还有一个错误命令,用于错误输入,只需允许系统返回等待状态即可)。

首先,我要验证需求。我可以看出没有重复该命令,但取消echo似乎有点用户敌意。或者,如果您的控制台支持,您可以使用一个
清除行
代码。

首先,我要验证需求。我可以看出没有重复该命令,但取消echo似乎有点用户敌意。或者,如果您的控制台支持,您可以使用其中一个
清除行
代码。

建立在垃圾堆之上:

with Ada.Text_Io;
with Ada.Characters.Latin_1;

procedure Bsmain is
   Achar : Character := ' ';
   Escape: Character renames Ada.Characters.Latin_1.ESC;
begin
   Ada.Text_Io.Put (Escape & "[8m"); -- invisible text mode
   while Achar /= 'q' loop -- q=quit
      Ada.Text_Io.Get (Achar);
      Ada.Text_Io.Put (Escape & "[1A"); -- move cursor back up a line
   end loop;
   Ada.Text_Io.Put (Escape & "[m"); -- restore back to normal text mode
end Bsmain;

基于垃圾神的建议:

with Ada.Text_Io;
with Ada.Characters.Latin_1;

procedure Bsmain is
   Achar : Character := ' ';
   Escape: Character renames Ada.Characters.Latin_1.ESC;
begin
   Ada.Text_Io.Put (Escape & "[8m"); -- invisible text mode
   while Achar /= 'q' loop -- q=quit
      Ada.Text_Io.Get (Achar);
      Ada.Text_Io.Put (Escape & "[1A"); -- move cursor back up a line
   end loop;
   Ada.Text_Io.Put (Escape & "[m"); -- restore back to normal text mode
end Bsmain;

我不知道Ada,但您可以在unix系统上运行以下命令:
stty-echo
stty-noecho
。它们切换回显模式。我在许多不同的语言中使用它,而且它总是有效的。

我不知道Ada,但您可以在unix系统上运行以下命令:
stty-echo
stty-noecho
。它们切换回显模式。我在许多不同的语言中使用它,而且它总是有效的。

如果您需要访问权限,您可以设置键盘中断,然后您可以“在关口阻止他们”


如果您需要访问权限,您可以设置键盘中断,然后您可以“在通行证处阻止他们”