首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NCurses over,altcharset

NCurses over,altcharset
EN

Unix & Linux用户
提问于 2018-01-16 23:38:28
回答 2查看 401关注 0票数 1

应该画一条水平线的最简单的程序:

代码语言:javascript
复制
int main()  
{ initscr(); for (int i=0;i<10;i++) addch(ACS_HLINE); getch(); endwin(); }

本地工作正常,但在MOSH连接上的结果是qqqqqqqqqq。

我用这种方式测试了其他著名的ncurses程序(通过MOSH连接),其中一些程序工作得很好,比如: alsamixer、vim、tmux.但是其他测试也显示了“丑陋的字符”,比如:俄罗斯方块游戏(bastet),对话框(显示shell脚本中的对话框)。

所以上面提到的我的程序,俄罗斯方块,对话框和其他程序的问题是:

  • 它在xterm和虚拟终端(term=linux)和tmux/screen中局部工作。
  • 它对SSH也有很好的效果。
  • 它显示q和x字符,而不是MOSH客户端上的行。

Mosh是一个非常有用的程序,它可以解决笔记本无线网络上ssh中断的问题。它创建自己的终端,并将TERM变量设置为xterm。在通过mosh启动程序之前,术语var是'xterm',locale命令显示LANG=en_US.UTF8,LC_ALL=“,字体看起来还可以(测试不同字体的结果也是一样)。

有人知道如何解决或进一步调试这个问题吗?

最简单的模拟:

代码语言:javascript
复制
sudo apt-get install mosh bastet    #<--install mosh and tetris
bastet                              #<--tetris works ok
mosh -- 127.0.0.1 bastet            #<--q and x chars instead of lines
EN

回答 2

Unix & Linux用户

发布于 2018-01-17 02:49:08

它在ncurses手册页面中:环境NCURSES_NO_UTF8_ACS可以设置为通知它终端不识别所使用的it 100风格的线条绘制代码。此外,终端描述中的U8功能(例如与TERM=tmux一起使用)告诉它同样的情况。

在ncurses终端数据库中有最新的mosh终端描述.在审查它时,有一些问题超出了画线的范围.

票数 2
EN

Unix & Linux用户

发布于 2018-01-17 05:40:38

在分析了alsamixer的源代码(运行良好)之后,发现这一行非常重要:

代码语言:javascript
复制
setlocale(LC_ALL, "");

C图书馆文件中所示。没有它,'C‘区域设置是默认的。

所以我的程序现在也在MOSH上运行得很好:

代码语言:javascript
复制
{ setlocale(LC_ALL, ""); initscr(); ... draw lines ... getch(); endwin(); }

但我会接受在程序之外解决这个问题的任何其他答案。比如如何在不改变源代码的情况下强迫俄罗斯方块这样做。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/417634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档