【问题标题】:Different nCurses behaviours with different terminals不同终端的不同 nCurses 行为
【发布时间】: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


【解决方案1】:

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

这不是错误(至少在 ncurses 中)。

如果您有完整的终端数据库,将其设置为 vte 将起作用...

【讨论】:

    猜你喜欢
    • 2015-05-23
    • 2016-11-09
    • 1970-01-01
    • 2018-09-27
    • 2020-03-12
    • 2013-06-26
    • 2011-05-20
    • 2011-12-30
    • 1970-01-01
    相关资源
    最近更新 更多