繁体   English   中英

我如何理解用户按下了哪个关键字?

[英]How can I understand that the user pressed which keyword?

我正在使用Linux OS下的C编写类似于Linux终端的终端,并且当用户按下ctrl + D关键字时我需要退出程序。 但是我不知道如何理解用户按下了这些关键字。 感谢您的帮助。

我正在使用fgets()输入

Ctrl + D是文件结尾。 在这种情况下, fgets()将返回空指针。

因此,程序的主循环可能看起来像这样:

char buffer[2000];
const char* input = fgets(buffer, sizeof(buffer), stdin);
while (input) {
    do_something_with(input);
    input = fgets(buffer, sizeof(buffer), stdin);
}

请注意,这仅适用于简单的缓冲输入。 有关低级键盘处理的信息,请访问http://tldp.org/HOWTO/Keyboard-and-Console-HOWTO.html。

这是一个小示例,说明如何从终端键盘读取各个按键:

#include <stdio.h>
#include <termios.h> 
#include <unistd.h> 

int main(void){
  struct termios save,raw;
  tcgetattr(0,&save);
  cfmakeraw(&raw); tcsetattr(0,TCSANOW,&raw);
  unsigned char ch;
  do{
    read(0,&ch,1);
    if( ch<32 ) printf("read: Ctrl+%c (%i)\r\n",ch+'@',ch);
    else        printf("read: '%c' (%i)\r\n",ch,ch);
  }while(ch!='q');
  tcsetattr(0,TCSANOW,&save);
}

在开始使用ncurses处理终端I / O之前,最好了解终端如何发送击键。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM