Linux系统之mapscrn 命令详解

mapscrn 命令详解

一、命令概述

mapscrn用于加载用户定义的屏幕输出字符映射表到控制台驱动 的工具,主要功能是自定义控制台字符的显示映射(如将特定字节值映射到字体中的位置或Unicode值)。需注意:该命令已过时,其功能已整合到 setfont 中,当前仅为向后兼容性保留。

二、语法格式

mapscrn [-V] [-v] [-o 旧映射文件] 映射文件
  • 参数说明
    • 映射文件(mapfile):包含字符映射表的文件(路径或默认目录下的文件名,默认目录为 /lib/kbd/consoletrans)。
    • 选项:控制输出信息、保存旧映射等(详见下文)。

三、核心功能

mapscrn 的核心是向控制台驱动加载字符映射表,实现用户自定义的字符显示规则,具体包括:

  1. 加载映射表:将 映射文件 中定义的字符映射关系加载到控制台驱动,用于控制字符的输出显示。
  2. 启用映射:加载后,可通过特定转义序列启用映射:
    • <esc>(K:启用G0字符集的用户定义映射;
    • <esc>)K:启用G1字符集的用户定义映射。
  3. 保存旧映射:通过 -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)。
UnicodeU+0041以U+开头的4位十六进制Unicode值(U+0041对应’A’)。
单个字符'A'单引号包裹的单个字符(取其二进制值,如’A’对应65)。
UTF-8字符'á'单引号包裹的UTF-8多字节字符(取其Unicode值)。

六、使用示例

  1. 加载简单的direct-to-font映射表

    mapscrn trivial  # 加载名为trivial的映射表(1:1映射,用户字节直接对应字体位置)
    
  2. 加载ISO 8859-2编码的unicode映射表

    mapscrn -v 8859-2  # 详细模式加载8859-2映射表(用户字节映射到对应Unicode值)
    
  3. 加载映射并保存旧映射

    mapscrn -o old_map 8859-1  # 加载8859-1映射表,同时将旧映射保存到old_map
    

七、文件与路径

  • 默认映射文件目录/lib/kbd/consoletrans,该目录下存放预定义的屏幕映射表(如 8859-1trivial 等)。

八、注意事项

  1. 过时提示mapscrn 已被 setfont 替代,建议使用 setfont 实现字符映射功能(兼容性更好)。
  2. 控制字符限制:ASCII码小于32的控制字符(如换行、制表符)无法重新映射,因其对控制台驱动有特殊意义。
  3. 映射启用:加载映射表后,需通过转义序列 <esc>(K<esc>)K 手动启用,否则不生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值