小编nic*_*ack的帖子

如何获取原始终端调色板,最好使用ncurses例程?

我正在开发一个Ncurses应用程序,它使用自己的调色板init_color()(假设can_change_colors()返回非零).如果COLORS小于256,我只修改前8种颜色(假设COLORS至少为8).否则,我修改到前256.

ncurses文件称,呼吁endwin()stdscr将重置调色板.然而,在Gnome-terminal中,我没有看到Ncurses恢复的调色板.相反,我上次使用的任何调色板都超出了我的应用范围.那么,我的第一个问题是为什么调色板没有被正确恢复(其他一切 - 光标位置,屏幕文本等).

通过在启动时获取调色板并手动恢复,我可以解决这个问题(我知道这已经有问题了).我试图color_content()通过成功调用后的循环来执行此操作start_color().不幸的是,这似乎返回默认的ncurses调色板,而不是实际使用的调色板(使用Gnome-terminal的默认调色板和配置的Solarized调色板进行测试).我通过检查ncurses/base/lib_color.c来自Debian的ncurses-5.9来源的值来验证这一点.

所以:

  • 为什么通过成功调用恢复调色板endwin(stdscr)

  • 如何在启动时获得"真正的"调色板?Ncurses是首选,但Unix或甚至Linux特定的ioctl()s等现在就足够了.

相关代码可以在Github上找到.目前的情况可能与我上面描述的完全不符,因为我一直在尝试各种技术而没有成功.

unix user-interface ncurses

8
推荐指数
1
解决办法
523
查看次数

标签 统计

ncurses ×1

unix ×1

user-interface ×1