如何改造 Linux 虚拟终端显示文字

如何改造 Linux 虚拟终端显示文字,第1张

要解释图形模式控制台为何不能显示汉字,首先来了解一下虚拟终端是怎么管理屏幕上的文字显示的。虚拟终端的实现在 drivers/tty/vt/vt.c 。代表虚拟终端的数据是 struct vc。  

struct vc{  struct vc_data  struct work_struct  }  故而 struct vc_data 才是要的虚拟终端的定义。

先来看看 struct vc_data 到底定义了什么东西。  struct vc_data 的定义在 include/linux/console_struct.h, 定义摘录如下,为了不延长篇幅,有省略的部分:  struct vc_data {  struct tty_port port/* Upper level data */  unsigned short vc_num/* Console number */  unsigned int vc_cols/* [#] Console size */  unsigned int vc_rows  省略 ...  const struct consw *vc_sw  unsigned short *vc_screenbuf  /* In-memory character/attribute buffer */ unsigned int vc_screenbuf_size  省略 ...  }      

其中 vc_screenbuf 存储了虚拟终端要显示在屏幕上的文字。

const struct consw *vc_sw 指向控制台驱动提供的函数。虚拟终端利用里面的函数指针调用相应的 *** 作,比如重绘屏幕,绘制一个字符等等。这些 *** 作由 vgacon 和 fbcon 等控制台驱动实现。当你切换终端的时候,实际上就是把当前终端设置为你要切换过去的终端,并且重新绘制当前终端 vc_data->vc_screenbuf 存储的内容。

当从键盘输入命令或者程序运行过程中要输出内容的时候,虚拟终端首先将输出的字符进行编码转化,转化为对于字符的 GLYPH 代码,并且将 GLYPH 和当前字符属性结合,最后将合成结果写入当前光标所处的位置。

内核中实际的算法要复杂的多,还牵涉到中断,但是为了简单快递的把我们关心的部分的核心表达出来,使用一下伪代码表示不那么严谨的过程。希望了解全部的可以自行查看内核相关的代码,主要代码在 drivers/tty/vt.c 的 do_con_write() 中。

雨林木风的linux是山寨人家fedora和ubuntu的,ylmf很有眼光,XP不敢在弄了,就开始弄开源免费的linux,还选择了两个最棒的发行版本,真的是垃圾到极点了。

至于字符编辑器,一般linux平台常用的有openoffice,永中office,abiword,koffice,基本就这几种,至于有没有加密,看你office用的是什么了。

另外,linux加密文件没那么麻烦的,直接敲gpg -c ***.txt命令就可以了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7180468.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-02
下一篇2023-04-02

发表评论

登录后才能评论

评论列表(0条)

    保存