mapscrn 命令详解
一、命令概述
mapscrn
是 用于加载用户定义的屏幕输出字符映射表到控制台驱动 的工具,主要功能是自定义控制台字符的显示映射(如将特定字节值映射到字体中的位置或Unicode值)。需注意:该命令已过时,其功能已整合到 setfont
中,当前仅为向后兼容性保留。
二、语法格式
mapscrn [-V] [-v] [-o 旧映射文件] 映射文件
- 参数说明:
映射文件(mapfile)
:包含字符映射表的文件(路径或默认目录下的文件名,默认目录为/lib/kbd/consoletrans
)。- 选项:控制输出信息、保存旧映射等(详见下文)。
三、核心功能
mapscrn
的核心是向控制台驱动加载字符映射表,实现用户自定义的字符显示规则,具体包括:
- 加载映射表:将
映射文件
中定义的字符映射关系加载到控制台驱动,用于控制字符的输出显示。 - 启用映射:加载后,可通过特定转义序列启用映射:
<esc>(K
:启用G0字符集的用户定义映射;<esc>)K
:启用G1字符集的用户定义映射。
- 保存旧映射:通过
-o
选项将当前的旧映射表保存到指定文件,便于恢复。
四、选项详解
选项 | 说明 |
---|---|
-V | 输出版本号并退出。 |
-v | 详细模式:输出加载过程的详细信息。 |
-o 旧映射文件 | 将当前的旧映射表保存到 旧映射文件 中(如 map.orig )。 |
五、映射表类型与输入格式
mapscrn
支持两种字符映射表,输入格式分为二进制文件和文本文件,具体规则如下:
1. 映射表类型
- direct-to-font 映射:每个用户字节值直接对应字体中的位置(适用于简单字符映射),映射表大小为256字节。
- user-to-unicode 映射:每个用户字节值对应一个Unicode值(适用于多语言字符映射),映射表大小为512字节。
2. 输入文件格式
映射文件
支持两种格式:
格式 | 说明 |
---|---|
二进制文件 | 直接包含256字节(direct-to-font)或512字节(user-to-unicode)的映射数据,每个字节/双字节对应映射关系。 |
两列文本文件 | 每行包含两列,第一列为偏移量(用户字节值),第二列为映射值(字体位置或Unicode值)。未指定的偏移量将保持默认值。 |
3. 映射值的表示方式
文本文件中,映射值支持多种表示格式:
格式 | 示例 | 说明 |
---|---|---|
十进制 | 65 | 非0开头的十进制数字(如65对应字符’A’)。 |
八进制 | 0101 | 以0开头的八进制数字(0101对应十进制65)。 |
十六进制 | 0x41 | 以0x开头的十六进制数字(0x41对应十进制65)。 |
Unicode | U+0041 | 以U+开头的4位十六进制Unicode值(U+0041对应’A’)。 |
单个字符 | 'A' | 单引号包裹的单个字符(取其二进制值,如’A’对应65)。 |
UTF-8字符 | 'á' | 单引号包裹的UTF-8多字节字符(取其Unicode值)。 |
六、使用示例
-
加载简单的direct-to-font映射表
mapscrn trivial # 加载名为trivial的映射表(1:1映射,用户字节直接对应字体位置)
-
加载ISO 8859-2编码的unicode映射表
mapscrn -v 8859-2 # 详细模式加载8859-2映射表(用户字节映射到对应Unicode值)
-
加载映射并保存旧映射
mapscrn -o old_map 8859-1 # 加载8859-1映射表,同时将旧映射保存到old_map
七、文件与路径
- 默认映射文件目录:
/lib/kbd/consoletrans
,该目录下存放预定义的屏幕映射表(如8859-1
、trivial
等)。
八、注意事项
- 过时提示:
mapscrn
已被setfont
替代,建议使用setfont
实现字符映射功能(兼容性更好)。 - 控制字符限制:ASCII码小于32的控制字符(如换行、制表符)无法重新映射,因其对控制台驱动有特殊意义。
- 映射启用:加载映射表后,需通过转义序列
<esc>(K
或<esc>)K
手动启用,否则不生效。