我在我的 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颜色。
由于它无法执行所要求的操作,因此设置TERM
为xterm-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};
答案2
正如 M. Dickey 所说,FreeBSD 内核的内置终端仿真器根本没有索引或 24 位直接颜色支持。实际上,根本不应该将其视为 xterm,这是xterm
终端类型使用错误的另一种情况。它在这方面和其他方面与实际的 XTerm 有很大不同。
这terminfo 数据库记录它使用的名称teken
。我有一个teken
termcap 条目,我将其添加到 FreeBSD termcap 中。通过这些,TERM
可以将环境变量值设置为其正确值teken
、 notxterm
或xterm-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 仿真器)的兼容性(因此有类似增强的linux
termcap 条目)。
如果您想要超过 16 种颜色而不需要 X11,我的终端模拟器或其他几个全屏帧缓冲区终端模拟器之一是您必须采取的路线。
进一步阅读
- 乔纳森·德博因·波拉德 (2015)。 ”支持 256 色和 24 位真彩色”。快速浏览用户空间虚拟终端。诺什工具集。软件。
- 乔纳森·德博因·波拉德 (2018)。 nosh 用户空间虚拟终端中的日语输入法。诺什工具集。软件。
- 乔纳森·德博因·波拉德 (2018)。 ”
console-decode-ecma48
”。 小吃指南。软件。 - https://unix.stackexchange.com/a/177209/5132
- https://unix.stackexchange.com/a/303767/5132