使用curses运行以下代码以确定 Ctrl + Down 的正确密钥代码,这给了我两个不同的输出(两个服务器都在运行Debian 6)。
ssh server1
(输出错误):
Press a Key 27
Press a Key 91
Press a Key 66
ssh server2
(正确输出):
Press a Key 519
我在代码或终端中遗漏了什么?可能是什么问题?
#include <stdlib.h>
#include <ctype.h>
#include <curses.h>
int main(void)
{
WINDOW *_window = initscr();
int _rows;
int _cols;
cbreak();
/* Accept all keys */
keypad(_window, true);
/* Don't echo things that are typed */
noecho();
/* Get the screen dimensions */
getmaxyx(_window, _rows, _cols);
/* Don't display cursor */
curs_set(0);
for (;;)
{
printw("Press a Key ");
refresh();
int key = wgetch(_window);
printw("%d \n", key);
}
endwin();
return 0;
}
答案 0 :(得分:0)
由于您正在使用screen
命令并且TERM
变量设置为screen-256color,因此无效。
我认为使用更多termcaps的screen -a
可能会有效,但事实并非如此。
我找到的唯一方法是将TERM
设置为xterm
,这样您就可以在xterm或程序中设置此项。
setenv("TERM","xterm",1);
这不是一个理想的解决方案,它只适用于像xterm这样的终端,但它可以解决您的特定问题。