gpt4 book ai didi

c - 当窗口超过 8 列时,边框无法正确绘制

转载 作者:行者123 更新时间:2023-12-05 03:03:25 25 4
gpt4 key购买 nike

当窗口的宽度大于 8 时,边框绘制函数似乎无法正确绘制顶部和底部边框。作为免责声明,我正在使用 KiTTY 通过 SSH 连接到 Arch Linux 服务器。

我是 ncurses 的新手,所以很有可能我做错了什么,但从我读过的内容来看,这应该是正确的......

#include <ncurses.h>
int main() {
initscr(); cbreak();
WINDOW *win = newwin(1,1, 1,1);
for(int i=1; i < 16; ++i) {
wresize(win, i, i);
wclear(win);
box(win, 0,0); // I've also tested wborder()
wrefresh(win);
mvprintw(0,0, "size: %i", i);
getch(); //pause
}
endwin();
return 0;
}

运行这段代码,这是我看到的:

size: 8
+------+
¦ ¦ Displays like this (normally)
¦ ¦ for both top and bottom borders
¦ ¦
¦ ¦
¦ ¦
¦ ¦
+------+

size: 9
+-+
¦ ¦ Each size up it will continue
¦ ¦ to look like this, with the
¦ ¦ top and bottom borders looking
¦ ¦ like `+-+`
¦ ¦
¦ ¦
¦ ¦
+-+

最佳答案

ncurses 使用终端能力数据库来获取有关终端支持的终端控制序列的信息。它使用 TERM 环境变量的值来查找此信息。 PuTTY 或 KiTTY 将所需的 TERM 环境变量值传递给 SSH 服务器。它通常默认设置为“xterm”,但可以在Connection -> Data -> Terminal-type string .

PuTTY 和 KiTTY 曾经很好地支持终端功能数据库中“xterm”的控制序列,但最近(2017 年中开始)的数据库版本优化了为“xterm”定义的序列以使用当前不支持的序列通过 PuTTY 或 KitTY。具体来说,它现在使用 PuTTY 不支持的 ECMA-48 REP(重复字符)控制序列。为了使线图在具有最新终端功能数据库的系统上正常工作,需要为 PuTTY 或 KiTTY 更改 TERM 环境变量。 (它可以在上面讨论的 session 设置中更改。)终端功能数据库最新版本的合适值包括“putty”或“putty-256color”。值“xterm-old”也可能有效。

检查主机系统上的“/usr/share/terminfo”目录,查看系统实际定义了哪些终端类型。终端类型的第一个字母被拆分为一个子目录,例如,“putty”终端类型的终端功能由“/usr/share/terminfo/p/putty”文件定义。

请注意,此问题不仅会影响线条绘制,还会影响同一字符的水平重复超过六次。它由 ncurses FAQ 解决:

That only covers the features which are in the terminal description, and does not address differences between terminal emulators. For example, in mid-2017, an update to the xterm terminal description added the ECMA-48 REP (repeat character) control. It was part of xterm since January 1997, but a terminal description using the feature was part of xterm only (not ncurses). After adding it to ncurses, it was observed that:

  • rxvt is unaffected, since it does not use TERM=xterm.
  • mlterm and OSX Terminal supported REP, using TERM=xterm.
  • VTE, konsole, PuTTY, iTerm2 did not support this standard, longstanding feature, of xterm although they set TERM to xterm or xterm-256color.
  • screen and tmux use a different TERM setting, and seemed to work (although tmux had some other issue with the test).

跟进 2020-09-07

PuTTY 0.71 版(2019 年 3 月 16 日发布)添加了对 REP 转义序列的支持。 (参见 change log 。)

关于c - 当窗口超过 8 列时,边框无法正确绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54114075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com