不同的nCurses行为与不同的终端

时间:2017-09-11 19:07:59

标签: linux terminal scheme ncurses chicken-scheme

我使用不同的终端获得两种不同的行为,这是我的代码:

(use ncurses)

(initscr)
(curs_set 0)
(noecho)
(start_color)

(define win (newwin 20 50 1 1))

(wclear win)

(box win 0 0) 
(for-each (lambda (y) 
    (for-each (lambda (x) 
        (mvwaddch win y x #\. ))
    (iota 49)))
(iota 19))

(wrefresh win)

(wgetch win)

(endwin)

代码是用Chicken Scheme编写的,但任何知道nCurses的人都可以轻松阅读。我认为我的问题并不关心库,因为它是一个调用C函数的简单包装器。

但是,如果我使用xterm,uxterm或你可以用CTRL-ALT-F1输入的linux终端,我会得到正确的行为(盒装窗口)。

.................................................┐
.................................................│
.................................................│
.................................................│
.................................................│
.................................................│
.................................................│
.................................................│
.................................................│
.................................................│
.................................................│
.................................................│
.................................................│
.................................................│
.................................................│
.................................................│
.................................................│
.................................................│
.................................................│
└────────────────────────────────────────────────┘

但如果我使用任何其他终端,如gnome-terminal,terminator或sakura,我会得到这个:

 .┐
 .│
 .│
 .│
 .│
 .│
 .│
 .│
 .│
 .│
 .│
 .│
 .│
 .│
 .│
 .│
 .│
 .│
 .│
 └─┘

我不认为这是一个库错误,但我可以尝试用C重写这个例子(我的C有点生锈)。

1 个答案:

答案 0 :(得分:4)

听起来好像您的TERM变量设置为 xterm ,这有时会给基于VTE的终端(gnome-terminal等)带来问题。这是一个常见问题解答( Why not just use TERM set to "xterm"? )。

这不是一个错误(无论如何都是ncurses)。

如果您拥有完整的终端数据库,则将其设置为 vte 将有效...