我正在使用 Linux 上的 ncurses 库用 C 语言编写一个小程序。
我决定使用getch()函数检查我收到的输入,更具体地说,是退格键。
退格ASCII十进制值为127,链接:这里 我决定打印我按下的键的十进制数值,例如:
一个-> 97
一个 -> 65
] -> 93 ...
后者是正确的。
但是,以下值不正确:
退格 -> 7(即 BELL)
Supr -> 74(即“J”)
这是测试代码:
#include <curses.h>
int main(int argc, char **argv)
{
char ch;
int column,line;
int s_column,s_line;
initscr();
clear();
noecho();
raw();
keypad(stdscr,TRUE);
printw("Type: \n> ");
refresh();
getyx(stdscr,s_line,s_column);
while((ch=getch())!='\n')
{
printw("%d",ch);
addch(ch);
refresh();
}
endwin();
return 0;
}
注意:将raw()更改为cbreak()会生成相同的输出
输出测试:(注意:我输入:'a','A',(Backspace),(Supr),'J')
Type:
> 97a65A7^G74J74J
我不明白为什么会这样,有人可以解释为什么 Backspace 键输出 7 而不是 127,而 Supr 输出 74,这与 sa 'J' 相同吗?