【问题标题】:How to ignore arrow keys in C reading from stdin?如何忽略从标准输入读取的 C 中的箭头键?
【发布时间】:2009-05-22 15:23:06
【问题描述】:

我正在使用 read() 系统调用从标准输入读取数据,但有一件小事困扰着我。我不能使用箭头键...我真正想做的是使用箭头键在键入的文本中来回移动,但我认为这并不容易...所以,我至少想做的, 就是忽略它们。

现在,按任何箭头键都会产生奇怪的输出,我想阻止任何东西被写入标准输出(随后在我的 read() 系统调用中从标准输入读取)。

这很容易实现还是没那么容易?

【问题讨论】:

    标签: c stdout stdin system-calls arrow-keys


    【解决方案1】:

    为了以理想的方式解释箭头键(即来回移动和编辑输入),您通常需要使用库。对于 Linux,标准是 GNU Readline。希望其他人能说出您通常用于 Windows CLI 应用程序的内容。

    【讨论】:

      【解决方案2】:

      答案最终取决于密钥的来源。我在 Cygwin 下运行这个程序:

      int main(void)
      {
          int c=0;
      
          while( c != 'X' ) {
              c = getchar();
              printf("\nc=%d", c);
          }
      }
      

      每次出现光标键时,我都会看到转义 (27)、括号和另一个字符。 所以,如果你得到这样的结果,你可以在每次看到 27 时跳过 3 个键。你也可以看看它们并利用它们!

      如前所述,YMMV,特别是对于操作系统,以及您调用的实际密钥获取函数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-07
        • 2020-09-01
        • 2020-03-14
        相关资源
        最近更新 更多