进一步阅读

进一步阅读

我在我的 DELL Latitude E7470 上使用 UEFI 安装了 FreeBSD 11.2(可能很重要)。默认情况下,它不安装 GUI,这对我来说没问题(目前)。使用<Alt>+<Fn>键我可以在不同的虚拟终端之间切换。

我无法使用 vt 更改颜色

我尝试了以下内容/boot/loader.conf但这没有效果:

i915kms_load="YES"
kern.vt.color.1.rgb="#cc241d"
# definitions for all other colors follow but omitted in this example

另外,我改变了/etc/ttysxterm-256color在第三列中设置,而不是xterm,但这不会启用 256 色支持。

我想强调的是,我想在文本模式下通过自己的键盘和显示器本地访问计算机时更改颜色数量(没有 gnome、Xorg、KDE...)。通过 SSH 访问计算机是完全不同的事情。

答案1

FreeBSD 控制台模仿 xterm 使用特肯(看之前的讨论在这里, 和邮件列表)。这不是一个完整的实现; FreeBSD 开发人员从终端描述中删除了一些项目(使真正的xterm在该平台上不太有用)。

FreeBSD 控制台 (teken) 实际上并不实施256 种颜色。请参阅源代码:

第499章
500 * xterm-256 颜色图的步长为 0x28(范围为 0-0xff),除了
501 * 表示第一步,即 0x5f。通过除以缩放到 0-6 范围
502 * 按 0x28 并向下舍入。 0-5的范围不能代表
503 * 更大的第一步。
第504章*
第505章 505
[第 506 章] 第 506 章
507 * (2, 2, 2),否则为白色;否则:
[第 508 章]
[第 509 章] 第 509 章
[第 510 章] 第 510 章
第511章
512 * - 否则有 2 个非零分量。颜色是小号的
513 * 这些成分的等量混合物(青色、黄色或洋红色)。例如,
514 * (0, 5, 6) (Turquoise2) 是比 (0, 2, 3) 更纯的青色
第515章
516 * 蓝色或青色和蓝色的微妙色调会更糟。
517 * 这里重要的是 1 的组成部分永远不会出现。蓝色会
518 * 是 (0, 1, 2) 中绿色的两倍大。
第519章

那些脚步地图应用程序的尝试使用256控制台上的颜色16颜色。

由于它无法执行所要求的操作,因此设置TERMxterm-256color不会非常有效。

RGB代码支持在不同的部分内核的,它允许设置 (16-) 调色板中的值:

41静态结构{
42 无符号字符 r; /* 红色百分比值。 */
43 无符号字符g; /* 绿色百分比值。 */
44 无符号字符b; /* 蓝色百分比值。 */
45 } color_def[NCOLORS] = {
46 {0, 0, 0}, /* 黑色 */
47 {50, 0, 0}, /* 深红色 */
48 {0, 50, 0}, /* 深绿色 */
49 {77, 63, 0}, /* 深黄色 */
50 {20, 40, 64}, /* 深蓝色 */
51 {50, 0, 50}, /* 深洋红色 */
52 {0, 50, 50}, /* 深青色 */
53 {75, 75, 75}, /* 浅灰色 */
54  
55 {18, 20, 21}, /* 深灰色 */
56 {100, 0, 0}, /* 浅红色 */
57 {0, 100, 0}, /* 浅绿色 */
58 {100, 100, 0}, /* 浅黄色 */
59 {45, 62, 81}, /* 浅蓝色 */
60 {100, 0, 100}, /* 浅洋红色 */
61 {0, 100, 100}, /* 浅青色 */
62 {100, 100, 100}, /* 白色 */
63};

在邮件列表中,我提到了这些屏幕截图: 特肯 - 88colors 特肯 - 256 色

答案2

正如 M. Dickey 所说,FreeBSD 内核的内置终端仿真器根本没有索引或 24 位直接颜色支持。实际上,根本不应该将其视为 xterm,这是xterm终端类型使用错误的另一种情况。它在这方面和其他方面与实际的 XTerm 有很大不同。

terminfo 数据库记录它使用的名称teken。我有一个tekentermcap 条目,我将其添加到 FreeBSD termcap 中。通过这些,TERM可以将环境变量值设置为其正确值teken、 notxtermxterm-256color

我发送我的 termcap 条目诺什工具集,在 nosh-bundles 二进制包中。它由外部配置导入子系统设置,该子系统用于在 中cap_mkdb创建组合 termcap 数据库(还包括interix和 的附加内容linux/etc/system-control/convert/termcap/termcap.db,可以从 进行符号链接/etc/termcap.db。或者,您可以使用其中的原始成分/etc/system-control/convert/termcap/亲自制作一个 termcap 数据库。

它还有一个teken-256color条目。这不适用于 FreeBSD 终端模拟器。它适用于我的终端仿真器,它提供了一个超集,teken其中包括索引和 24 位直接颜色功能等。它的设计teken在很大程度上忠实于这一点,甚至扩展到使用 FreeBSD 终端仿真器实际生成的相同未记录的 DECFNK 和 Xenix Console 功能键序列的混合。

JdeBP % 控制台解码-ecma48                          
^[OP^[OQ^[或^[操作系统^[OT^[[17~^[[18~^[[19~^[[20~^[[21~^[[23~^[[24~
十进制KEY_PAD_F1
十进制KEY_PAD_F2
十进制KEY_PAD_F3
十进制KEY_PAD_F4
十进制KEY_PAD_F5
十二月F6
十二月F7
十二月F8
十二月F9
十二月F10
十二月F11
十二月F12
如果
^[[Y^[[Z^[[a^[[b^[[o^[[p^[[q^[[r^[[^^[[_^[[`^[[{
SCO 2级+F1
SCO Level2+F2
SCO 2级+F3
SCO 2级+F4
SCO控制+F5
SCO控制+F6
SCO控制+F7
SCO控制+F8
SCO 控制+Level2+F9
SCO控制+Level2+F10
SCO 控制+Level2+F11
SCO控制+Level2+F12
如果
平均血压 %

它的用途之一是作为 FreeBSD 内核终端仿真器的用户空间替代品(不需要 X11)、渲染到帧缓冲区并从键盘和鼠标 HID 读取输入。与 M. Dickey 的答案中相同的颜色立方体看起来有些不同:

用户空间虚拟终端
(来源:jdebp.eu

因为它是用户空间,而不是内置于内核中,所以它可以包含多种字体 Unicode 支持、CIN 文件驱动的 CJKV 输入法,以及与其他内置内核终端仿真器(包括 Linux 仿真器)的兼容性(因此有类似增强的linuxtermcap 条目)。

如果您想要超过 16 种颜色而不需要 X11,我的终端模拟器或其他几个全屏帧缓冲区终端模拟器之一是您必须采取的路线。

进一步阅读

相关内容