【发布时间】:2017-09-11 19:07:59
【问题描述】:
我使用不同的终端获得了两种不同的行为,这是我的代码:
(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 有点生锈)。
【问题讨论】:
-
我认为这是我正在使用的库版本的错误,我已经在带有 2016-06-25 ncurses 包的 Xubuntu 17.04 机器上尝试了此代码,它运行良好。我在我的电脑上尝试了其他终端,ArchLinux,最后一个包 ncurses 6.0+20170902-1 问题仍然存在。
-
如果您的终端窗口小于 20x50,这将失败:
(define win (newwin 20 50 1 1)) -
@ThomasDickey 我的终端不是那么小,除了程序执行和结束没有任何错误。
-
我确认在ArchLinux上降级包没有出现问题,不知道是bug还是什么
标签: linux terminal scheme ncurses chicken-scheme