我正在做一個C程序與Linux上的ncurses庫。奇怪的鍵值由ncurses打印
我決定檢查我與的getch()函數,更具體地,退格鍵接收到的輸入。
的退格 ASCII十進制值爲,鏈接:here 我決定打印我按下的鍵的數字的十進制值,例如:
一個 - > 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;
}
注:改變原始()到CBREAK()產生相同的輸出
輸出測試:(注:I型: 'A', 'A',(退格鍵),(SUPR), 'J')
Type:
> 97a65A7^G74J74J
我不明白爲什麼會發生這種情況,有人可以解釋爲什麼Backspace鍵輸出7而不是127,Supr輸出74,這是相同的SA'J'?
74'j'和BELL –
我覺得我們需要看代碼...並且可以通過termios中的設置將退格映射爲「刪除」(127)。 –
值得注意的是,你可能需要做'鍵盤(stdscr,TRUE);'以允許「特殊」鍵通過。不知道這是什麼問題在這裏。 「常規」以外的鍵也在範圍之外或「字符」,這可能會影響事物。 –