0

运行以下代码来确定Ctrl+ Downusing curses 的正确键代码给了我两个不同的输出(两台服务器都运行 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;
}
4

1 回答 1

0

它不起作用,因为您正在使用该screen命令并且TERM变量设置为 screen-256color。

我想screen -a,它使用更多的 termcaps,可能有效,但它没有。

我发现的唯一方法是设置TERM为,xterm这样你就可以在你的 xterm 或像这样的程序中设置它。

 setenv("TERM","xterm",1);

这不是一个理想的解决方案,它只适用于 xterm 之类的终端,但它是针对您的特定问题的解决方法。

于 2013-04-25T14:16:13.943 回答