除了关于向终端发送转义序列的下一小节之外,本节主要介绍通过坐在终端前并浏览菜单来手动设置终端的详细信息。如果您尚未这样做,您应该阅读终端设置(配置)概述。如果您有终端手册最好,但即使没有,这里也有关于您可能需要设置的许多选项的信息。
通信参数(例如波特率)必须始终在终端上设置,因为如果未完成此操作,则无法与终端进行通信。建立通信后,您有两种选择来完成终端配置的其余部分。您可以继续在终端上手动配置并将结果保存在终端的非易失性存储器中,或者您可以每次终端通电时(或类似情况下)通过从计算机向终端发送转义序列来完成此操作。
如果您知道如何在终端内部设置和保存良好的配置,这可能是最好的方法。如果您不知道,您可能只想每次使用终端时从 terminfo 向您的终端发送初始化字符串。也许什么都不做仍然会为您提供可用的终端。您(或应用程序)始终可以通过向终端发送某些转义序列来更改内容。
一旦建立通信接口,终端的其余配置有时可以通过从计算机向终端发送转义序列来完成。如果您有大量终端,则可能值得编写(或找到)一个 shell 脚本来自动执行此操作。可能(也可能不)有一个命令可以发送到终端,告诉它将其当前设置保存在其非易失性存储器中,以便下次终端通电时它将存在。
有一种简单的方法发送这些转义序列,也有一种复杂的方法。使用简单的方法,您永远不会查找转义序列,而是发出命令,这些命令会自动在 terminfo 数据库中找到适当的转义序列并发送它。不幸的是,您可能想要发送的并非所有转义序列都始终在 terminfo 数据库中。因此,更复杂(但可能更好)的方法是直接发送转义序列。
对于这种复杂的方法,您需要一本高级手册。旧的终端手册曾经包含详细的转义序列列表,但较新的手册通常不包含。要找到它们,您可能需要购买另一本名为“程序员手册”(或类似名称)的手册,该手册未随终端提供。一些终端的转义序列列表在互联网上,但它很简洁且可能不完整。
即使没有手册或类似的东西,您仍然可以使用程序 "tput" 和 "setterm" 发送命令来配置终端。请参阅更改终端设置。您可以仅从 terminfo 条目发送终端初始化字符串,如果初始化字符串以您想要的方式设置终端。请参阅初始化字符串。除非您计划每次终端通电时都从计算机向终端发送这些序列,否则您必须以某种方式将设置保存在终端的非易失性存储器中。
在旧式终端上,查看键盘上数字键顶行上方的标签。如果存在,这些标签可能是这些键在设置模式下的功能。一些旧式终端可能只有一个“设置”菜单。更旧的终端有物理开关。在某些情况下,并非所有开关都标记明确,但它们可能隐藏得很好。当然,如果您使用开关设置了某些内容,则它会被“保存”,并且无需将设置保存在非易失性存储器中。
要在终端上选择选项(配置),您必须首先进入“设置”模式,然后使用存储在终端内部并在屏幕上显示的菜单选择选项(即配置)。为此,终端甚至不需要连接到计算机。如何进入设置模式在终端手册中介绍,但这里有一些可能有用的提示
如果有“设置”键,请尝试按下它。也尝试按住 Shift 键再按它。
要在设置菜单中移动,请尝试使用方向键。使用 Return 键、空格键或特殊键(旧式终端上的“toggle”键)进行选择。要退出设置模式,请从菜单中选择退出(或在某些旧式终端上再次按下设置键)。
为了使终端完全工作,必须正确设置速度、奇偶校验、每字符位数和通信模式。不正确的流控制可能会导致屏幕上看到的数据丢失和/或损坏。另一个部分处理了基本的通信选项(终端和计算机):请参阅通信接口。以下列表提供了一些指向该部分的链接,以及仅在终端上设置的一些其他通信选项。
您的设置必须保存在终端的非易失性存储器中,以便下次打开终端时生效。如果您未能保存它,那么当您关闭终端时,新设置将丢失。在您费力设置终端之前,请确保您知道如何保存设置。对于现代终端,保存命令通过菜单完成。在一些旧式终端中,只有手册告诉如何保存。对于许多这些终端,您按 Ctrl-S 保存。
本节接下来描述许多终端的设置菜单中可用的一些选项。选项也称为参数或功能。许多选项可能称为“模式”。设置选项通常称为“配置”。许多这些选项也可以通过向终端发送某些转义序列来设置。不同型号和品牌的终端具有各种选项,并且相同的选项可能以不同的名称调用(并非此处给出所有名称)。Wyse 使用的简洁名称用 {...} 括起来。主要用于 VT 终端的名称用 {{...}} 括起来。
大多数现代终端可以仿真其他几个终端。如果终端设置为仿真自身(实际上没有仿真){原生个性},则终端可能会执行更多操作。有时,同一型号的终端有两种不同的仿真。例如,VT220-7 仿真具有 7 位/字节的 VT220,而 VT220-8 仿真具有 8 位/字节的 VT220(256 个可能的字符)。
旧型号的终端通常比新型号的终端功能少。假设有人想要仿真旧终端,但又想要他们正在使用的较新型号终端的一些高级功能。这有时是可能的(在某种程度上)。此功能有时称为 {增强}(或增强 ??)。
这是字符适合的单元格大小。它以像素(=微小点)为单位测量。点越多,分辨率越高。10x16 是 10 个点宽,16 个点高(16 行和 10 列)。请注意,与给出先行(高度)的矩阵尺寸表示法相比,该表示法是倒置的。此外,字符单元格包括为相邻字符之间的空间分配的像素行和列,因此定义实际字符边界的单元格大小可能更小。
通常为 80 列和 24 或 25 行。这意味着屏幕上的一行(行)中最多可能有 80 个字符。许多终端都有 132 列选项,但除非您有大屏幕,否则微小的字符可能难以阅读。{{设置 132 列模式}}。如果您设置 25 行,请确保这在 terminfo 中。您还应该将 "export LINES=25" 放入 /etc/profile 中,并使用:"stty -F /dev/ttySx rows 25"。如果您不这样做,可能会导致滚动问题(请参阅终端不滚动
光标可以设置为矩形(=块){Blk}。其他选项是下划线 {Line} 或闪烁。我更喜欢非闪烁 {Steady} 块,因为它足够大,可以快速找到,但没有分散注意力的闪烁。如果您将其设置为不可见(某些终端上的选项),它将消失,但当您在不可见光标处键入时,新字母将出现在屏幕上。
显示属性可以是魔术饼干,也可以是分配给每个字符的属性字节。对于魔术饼干,它们的范围有限制:它们是在行的末尾还是页面的末尾生效?最好使用属性字节(实际上可能是半字节 = 半字节)。
可能被称为各种名称,例如“显示控制”。当关闭(正常)时,它是“解释控制”。当设置为开启时,您会看到来自主机的转义序列(您通常永远不会在屏幕上看到)。为了可以在一行中按顺序查看这些序列,终端不会对它们进行操作(解释)。除非 CR LF 序列创建新行。请参阅控制代码。
一些终端可以使其字符具有双倍宽度和/或双倍高度。此功能很少需要。当将一行更改为双倍宽度 (DW) 时,右半部分 (RH) 会被推出屏幕,并且存在是否删除(擦除)它的问题。“保留”意味着保留 DW 行的 RH。在双倍高度模式下,可能需要将每行发送两次(第二次向下移动一行),以便在屏幕上获得双倍高度的行。
正常视频是浅色(白色、绿色、琥珀色)字母(前景)在深色(黑色)背景上。反相视频 {显示亮} 则相反:浅色背景上的黑色文本。这更适合眼睛(除非房间黑暗)。
状态行是屏幕顶部或底部的行,显示有关您正在运行的应用程序的信息。它通常以某种方式突出显示。启用状态行后,应用程序可以向终端发送特殊的转义序列,这意味着后面的文本用于状态行。但是,许多应用程序不使用此功能,而是通过直接光标定位来模拟真实的状态行。普通用户看到它并不知道其中的区别。
当将列数从 80 切换到 132(或相反)时,旧格式显示的数据应该被擦除(清除)还是保留?{80/132 清除} {{屏幕宽度更改}}。如何设置此选项应该没有区别,因为如果应用程序使用 132 列,它应该通过控制序列适当地设置此选项。
对于 Wyse 终端,要能够访问显示内存的多个页面,必须将 {多页} 设置为开启。
终端内存可以划分为多个页面。有关页面的说明,请参阅页面和页面(定义)。您可以将页面内存划分为多个选定长度的页面。Linux 应用程序目前似乎不使用页面,因此如何设置它应该没有太大区别。
终端内存可以划分为多个页面。有关页面的说明,请参阅页面和页面。当光标移动到当前未显示的视频内存中的位置(例如另一个页面,或在同一页面上但移动到屏幕上未显示的位置)时,显示是否应更改以让用户查看新的光标位置?如果是,则称为“耦合”。对于同一页面内的光标移动,有“垂直耦合”和“水平耦合”。对于移动到另一个页面,有“页面耦合”。
终端将识别自身及其状态,或发送预先录制的消息以响应某些转义序列。
您可以在设置期间编写一条简短消息,该消息可以选择在开机时发送到主机,或响应来自主机的请求(可能是 ENQ(查询)控制字符)发送到主机。
如果设置,则在开机时向主机发送应答消息,而无需主机请求。任何 "getty" 进程会查找这个吗?
如果设置,则永远不会让任何人看到应答消息(当然主机计算机除外)。如果需要更改它,请取消选择“应答隐藏”,以前隐藏的消息将被销毁,以便您可以输入新消息(但您看不到旧消息)。
终端发送此回复以响应身份请求。
设置后,按下任何键都会发出咔哒声(由键盘中的微型扬声器广播)。这些咔哒声使某些人感到烦恼,我认为最好关闭按键音。
当大写锁定键按下时,是否只有字母键应生成 Shift 字符?如果设置为 {Caps} 或仅限大写字母,则按住 Caps-Lock 键的数字键将键入数字。要获得数字上方的符号,必须手动按住 Shift 键。这是正常模式。如果设置为 {Shift},则当 Caps-Lock 键开启时,所有键都键入 Shift 字符(按 5 键应键入 %,而无需按住 Shift 键等)。
如果按住某个键,则该键会重复“键入”。这对于重复键入相同的字符以在页面上创建一条线很方便。
当光标距离显示器右侧 8 列时,会发出响铃声(就像旧式打字机一样)。几乎所有编辑器都会在需要时自动创建新行(无需按 Return 键),因此很少需要此功能。
按下键时发送到主机的代码通常是该键的 ASCII 代码(也取决于 Shift 和 Control 键)。在某些终端上,您可以使任何键发送您想要的任何代码。也就是说,您可以通过以这种方式设置终端来完全重新映射键盘。这对于某些外语和 Dvorak 键盘布局等可能很有用,这些布局允许用户更快地键入。即使对于没有此功能的终端,也有软件可以重新映射键盘(和屏幕)。它有点像使用伪终端的设备驱动程序。请参阅字符映射:mapchan
Wyse 终端在左下角附近有一个键,可以设置为执行各种操作。它可能标记为“Funct”、“Compose Character”、“Alt”、“Hold”或“Scroll Lock”。早期型号没有以下所有选项
数字小键盘(键盘主体的右侧主要是数字键的矩形区域)可以设置为发送特殊代码,这些代码将在某些应用程序中执行特殊操作。方向键也是如此。因此,存在一种“正常”模式,其中它们发送键帽上显示的内容(或方向键的正常代码序列),以及一种“应用程序”模式,其中发送特殊的转义序列。在某些情况下,存在“十六进制”数字模式,该模式几乎与正常数字模式相同,只是 6 个非数字键发送字母 A-F。因此,例如,用户可以在数字小键盘上键入“B36F”。
根据它们的设置方式,shifted-del 有时会发送控制字符 CAN,而 shifted backspace 有时会发送 DEL。
许多终端可以通过发送 PC 扫描码(请参阅 Keyboard-and-Console-HOWTO)而不是 ASCII 代码来仿真 PC 键盘。这主要用于特殊的 Multiuser DOS 操作系统。它不适用于普通的 MS DOS。请参阅非 Linux 操作系统 但是,几乎没有任何通过串行端口运行的 Linux 程序可以接受扫描码。如果这是本 HOWTO 的最新版本,请让我知道是否有任何程序这样做。我认为 Foxpro 可以做到。您需要在 terminfo 中定义 smsc 和 rmsc,或许还有 pctrm。
当使用扫描码时,最好使用硬件流控制,因为正常的软件流控制与某些代码冲突(??)。如果您确实使用软件流控制,则必须使用 XPC 类型的流控制。它使用 0x65 和 0x67 作为开启和关闭字符。必须在终端和 PC 的 stty 中都以这种方式设置它。
某些键上可能有备用字母。当键设置为“Typewriter”时,它们会发送它们通常在打字机上发送的内容。当键设置为其他内容时,将发送备用字符。
在这种情况下,“换行”表示从当前行下方的左边距开始的新行。在 Linux 和 C 中,“换行”(NL)可能具有不同的含义:换行控制字符 LF 也称为换行或 NL。这是因为在 Linux 文本文件中,LF 字符表示“新行从这里开始”,因此标记为 NL。通常,发送到终端的 LF (NL) 只会导致光标跳转到其下方的一行,而不会将光标移回此“新行”的开头。
如果设置了自动换行,则取消上述“正常”情况,并且在从主机接收到 LF 时,会在显示器上创建物理新行。这正是 Linux 中需要的。除非(当设置了自动换行时)Return(或 Enter)键向主机发送 CR LF 序列(对于 Wyse 和 VT100,但对于 VT420 ??)。由于 Linux 使用 LF 作为文件中的“换行”标记,因此 Linux 希望仅发送 LF(而不是 CR LF)。因此,“换行”选项很少使用。相反,默认情况下,串行端口设备驱动程序会进行所需的转换。就好像给出了命令 "stty onlcr icrnl" 一样。但您无需这样做,因为它是默认值。
这只是另一种类型的“自动换行”。当接收到 CR(回车符)字符时,会添加 LF(换行符)操作,从而显示新行。由于 Linux 使用 LF 标记行尾,因此不使用此选项。
如果关闭,终端接收到的 DEL 字符将被忽略。如果开启,DEL 执行破坏性退格。空字符通常在任何情况下都会被忽略。DEL 和 NULL 有时都用于填充。请参阅填充
也称为“自动换行”。当到达屏幕右边缘(第 80 列等)并且主机未发送回车符(或类似字符)时会发生什么?如果设置了自动换行,则该行的其余部分显示在下面的行中,依此类推。否则,该行的其余部分将丢失,并且不会在屏幕上看到。任何好的应用程序都应该正确处理这种情况(前提是 terminfo 知道自动换行是如何设置的)。因此,即使未设置自动换行,应用程序也应为长行换行屏幕,或提供另一种方法供您查看长行的截断尾部(通过使用方向键等)。但是原始复制命令(和其他情况)可能不会这样做,因此通常最好设置自动换行。
对于 80 列屏幕,大多数终端仅在来自主机的第 81 个字符是图形(可打印)字符时才换行。这允许来自主机的第 81 个字符可能是“回车”或“换行”(非图形字符)的情况,这意味着应用程序正在处理换行 OK,并且不需要终端干预。
滚动 {Scrl} 是屏幕上的所有行向上或向下移动的地方。它也称为“平移”,包括横向移动。在普通滚动中,行从屏幕底部或顶部滚出并消失,并且来自主机的新行出现在相对边缘(顶部或底部)。有 3 种类型:平滑、跳跃或突发。突发实际上不是滚动,因为它是用新屏幕瞬间替换旧屏幕(尽管新屏幕上的一些行可能来自旧屏幕)。跳跃是新行一次跳入视图的地方。平滑 {Smth} 是文本以稳定的速度向上或向下移动的地方。如果平滑滚动速率足够慢,则用户可以在新可见的行仍在滚动(运动中)时读取它们。
在慢速终端上,平滑滚动曾经很有用,因为用户可以在显示器滚动时继续阅读。但是,由于波特率较高,跳跃滚动速度非常快,因此新显示出现时几乎不会浪费时间。由于阅读滚动文本比固定文本花费的时间稍长,因此如果选择平滑滚动,实际上可能会浪费更多时间。
如果(自动)滚动 {Autoscrl} 被禁用,那么来自主机的新文本必须去某个地方,因此它被放在显示器的顶部。如果旧文本未被擦除,则新文本(无意义地)合并到旧文本中。如果旧文本被擦除,则新文本将脱离上下文。因此,请保持(自动)滚动启用。
有关页面的说明,请参阅页面和页面。当当前页面已满(最后一行已完成)时,页面应该滚动,还是应该创建新页面(将上一页存储在终端的显示内存中)。如果设置了 {自动分页},则会创建新页面。由于您可能没有使用页面,因此您可能应该将其设置为关闭。
这些是标记为 F1、F2 等的键。在旧式终端上,它们可能标记为 PF1、PF2 等,其中 P 代表可编程。有些键盘两者都有。用户可以编程(重新定义)这些键以发送用户定义的字节字符串。这不适用于旧式终端,例如 vt100 或 Linux 命令行界面(多么遗憾)。通常可以使用某个设置菜单 {FKey} 轻松地“编程”它们。在某些终端上,用户还可以指定在按下键时将此字符串发送到何处。“正常”模式下,按下键就像在键盘上键入字符串一样。“本地”模式下,按下键会将其发送到终端(就像终端处于本地模式一样)。这可以用于向终端发送转义序列,以便以特殊方式配置它。“远程”模式下,字符串始终通过串行端口发送到主机计算机(即使终端处于本地模式)。
某些选项仅适用于块模式的情况。此选项功能强大,因为它提供表单并通过突发传输来减轻主机计算机的负载。但是它更难设置,因此使用不太频繁。
在块模式下,屏幕的某些区域用于表单的文本,因此是写保护的“Prot”{WPRT}。选项可以将这些区域中的字符设置为显示为暗淡、反相视频 {WPRT Rev} 和/或下划线 {WPRT Undrln}。{WPRT Intensity} 可以设置为暗淡、正常甚至空白(不可见)
在传输块时,是否应将写保护文本(表单中的原始文本)发送到主机:{发送全部} 还是写保护文本也是读保护的:{发送可擦除}
应发送整个屏幕还是仅发送滚动区域?{发送区域}。当达到当前光标位置时,发送是否应停止?如果 {Xfer Term} 设置为光标,则仅发送屏幕上直到光标的数据。
要附加到数据块的终止符号是什么?{块结束} 或在页面末尾 {发送终止}。
有各种类型的锁定。一种是由于流控制而锁定的键盘。请参阅键盘锁定 另一种锁定 {功能锁定} 是禁止主机计算机通过向终端发送某些转义序列来更改终端设置的锁定。放置这样的锁定可能会导致意外行为,因为应用程序会向被忽略的终端发送转义序列。并非所有设置参数都会锁定。除非您有充分的理由这样做,否则您不应启用此类锁定。
功能键锁定将禁止计算机重新定义可编程功能键发送的内容。如果您在功能键中编程了一些重要的内容,您可能需要使用此功能。
也称为“CRT 保护程序”。这会在终端一段时间未使用后关闭(或调暗)屏幕。它可以延长屏幕的使用寿命并节省一些能源。按下任何键通常会恢复屏幕并可能“执行”该键,因此最好按下 Shift 键等。
对于 Wyse,如果没有 {连接打印机},请将其设置为关闭。这样做不是必需的,但如果您这样做,任何将文本发送到打印机(而不是终端)的转义序列都将被忽略。
设置打印机端口与设置主端口上的通信基本相同(通常更简单)。有一些特定于打印机的选项。打印机是串行打印机还是并行打印机?如果是并行打印机,则应在设置中将其指定为并行打印机,并连接到终端上的并行端口(如果有)。是否应在打印作业结束时向打印机发送 FF(换页)?如果 {打印终端} 设置为 FF,则会发生这种情况。