
要解释图形模式控制台为何不能显示汉字,首先来了解一下虚拟终端是怎么管理屏幕上的文字显示的。虚拟终端的实现在 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命令就可以了。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)