linux字符终端 linux去掉最后一个字符
这篇文章给大家聊聊关于linux字符终端,以及linux去掉最后一个字符对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
如何改造 Linux 虚拟终端显示文字
必须使用 UTF-8模式(默认 vc->utf=1即可)
虚拟控制台的 vc_screenbuf必须修改以为 glyph提供至少 16bit的空间。
图形控制台需要 vc_font包含更多的字符,不只是 255个,并提供代码绘制双倍宽度的中文字形,字体中的字符按照 UNICODE
排列,这样 glyph就是字符的 UNICODE编码。
修改虚拟控制台
一开始,我的打算是 vc_screenbuf修改为 unsigned long long*类型,32bit给字符属性,分别表示 16bit
终端前景色和背景色。glyph则拥有 31bit的空间,因为汉字的宽度为双倍的英文字母,其中 1 bit用来表示双字符宽度。比如'我'会表达为
两个'我',第二个'我'的最高位为 1:绘制任何字形的时候,只绘制字形的左半部分;如果发现最高位为 1
则绘制字体位图中的右半部分。这样同样的绘制代码可以适应英文字母和汉字。写入 vc_screenbuf的时候,
如果是双倍宽度的字符,需要同时写入两份,第二份的最高位置 1就可以。但是 vc_screenbuf
的格式已经被到处假定为每字符两个字节。如此修改导致牵一发动全身。许多艰涩难懂的代码都依赖 vc_screenbuf是
每字符两个字节的设定,直接修改定义后,光是编译器能直接检测出来的就有百余个地方需要修改,还有更多的逻辑并不能被编译器检测出来。如此修改的后果就是会出现许多隐晦的错误,非常难于调式。挣扎后,为最终选择了另一条道路
:
为汉字重新分配一块 vc_unicode_screenbuf
vc_unicode_screenbuf紧挨着 vc_screenbuf,事实上 vc_screenbuf
在分配空间的时候,多分配了一倍的空间,多分配的空间充作 vc_unicode_screenbuf,因此 struct vc_data里并没有添加
vc_unicode_screenbuf成员。 vc_unicode_screenbuf同样为每字符 2个字节,并不包含字符属性,所以 2
个字节如数用来保存 glyph。vc_screenbuf格式未变,所以 vgacon不需要修改,这就减少了大量的工作量。向 vc_screenbuf
写入字符的时候,同时写入一份到 vc_unicode_screenbuf。如果是汉字,由于其 glyph大于 254,所以 vc_screenbuf
的那两个字符(汉字双倍宽度)实际写入的是 0xff和 0xfe(故而上文提到是 glyph大于 254的字符,0xfe被保留它用了
)。0xff表示该字符的 glyph要到 vc_unicode_screenbuf提取,然后绘制左半部分;0xfe表示该字符的 glyph要到
vc_unicode_screenbuf提取,然后绘制右半部分。对于 glyph大于 254但是又不是双倍宽度的字符,就不需要 0xfe
作陪了。比如屏幕上显示的文字是黑底白字的“牛 B”, vc_screenbuf的内容就是“0x00ff, 0x0ffe, 0x0f42”,
vc_unicode_screenbuf的内容则是“牛,牛,b”
。这是因为一个汉字为两倍的英文字母宽度。在屏幕文字缓冲区上也必须占用两个字符的位置。并且必须有一种机制能知道应该绘制左半部分和右半部分,我使用的就是 0xff
和 0xfe。
修改图形控制台绘制代码
要修改的地方只有 3个。
struct console_font添加 charcount成员。将主线内核的字体设置为 charcount= 255。主线内核带的字体都是
255个 glyph的,所以没有添加字符个数的必要。不过我们即将要添加的字体会有数万字符。
添加一个新的字体,复盖 UNICODE BMP基本区域的所有符号。
修改字符绘制代码,添加 vc_unicode_screenbuf的支持。
字符绘制代码的修改比较繁琐,代码分布在 drivers/video/console/下的多个文件中。fbcon_putc(s)由由
vc->vc_sw->con_putc(s)调用, fbcon_putc(s)转而调用分散于 drivers/video/console/
的多个 puts实现。因为终端要支持 console_rotate, decoration, timing,故而每种模式下的绘制实现都是不同的。我拿
drivers/video/console/bitblt.c最常用的不倾斜、不加装饰等的终端模式为例来讲解绘图部分的修改。由于中文字体为 16x16
点阵,是对齐的字体,故而其绘制代码为 bit_putcs_aligned()原先的代码以 glyph为下标到 vc->vc_font->data
获得字体数据,然后调用 fb_pad_aligned_buffer执行块拷贝操作。我的修改很简单,原来获得字体数据的代码修改后放入 font_bits()
辅助函数。在 font_bits里,要判断 glyph是否为 0xff或者 0xfe,如果不是,使用 glyph为下标获得字体的左半部分后并返回。
如果是,则从 vc_unicode_screenbuf获得真正的 glyph数值,然后再依据现有的 glyph是 0xff还是 0xfe
去获得字体的右半部分还是左半部分返回。font_bits获得字体数据后执行 fb_pad_aligned_buffer块拷贝。需要修改的地方还有
drivers/video/console/fbcon_ccw.c fbcon_cw.c fbcon_ub.c。依原理进行修改即可。
虚拟终端的不足之处
虽然费尽心机添加了中文支持,那只是一个 workaround,
并不能算真正的支持。要真正的支持必须彻底重写虚拟终端和控制台。而要支持中文,就需要更进一步,全面支持 UNICODE,
包括支持从右向左的书写习惯。在内核里实现一个全面支持 UNICODE
的控制台并不是一件容易的事情,何况内核的政策也不允许将如此庞大的字库装入内核。于是乎,这里出现了死胡同。KMS和 Wayland
的出现让这死胡同似乎有了个完美的解。
System Compositor?
System Compositor是一个 wayland compositor,只是运行于系统全局范围。
为了懒人我这里稍微讲解一下 wayland compositor吧。 Wayland不同于 X,在 wayland的世界里,只有
compositor和 client。Client利用各种 API(wayland给出的示例使用的是 OpenGL ES,但其实 wayland
并不限制使用的绘图 API类型)进行窗口绘图,然后将窗口的绘制结果直接提交给 compositor合成到屏幕上。这样 wayland本身就不包含绘图
API而大大简化了 wayland的设计。Wayland compositor可以同 X一样操作显卡向屏幕输出合成后的结果,也可以作为另一个
wayland compositor的 client。
对于多账户同时登录的实现,固然可以让每一个本地 GUI会话开启一个 wayland compositor,但是存在更好的办法就是固定开启一个
system compositor。而让所有用户会话的 wayland compositor再作为 system compositor的 client.
藉由 system compositor的合成效果,进行快速用户切换也可以进行一些视觉效果。而且 Xorg本身也已经支持作为 wayland client
运行,这样可以使用传统的 X提供桌面,而让 wayland system compositor实现终端切换。这还有一个好处,只有 wayland
system compositor是以 root运行的,而用户会话的 compositor或 X就不必以 root权限运行。因为 Wayland
非常轻量,所以 system compositor可以作为系统级服务常驻内存运行。而因为有了 system compositor,
内核也不再需要实现虚拟终端了:只需要实现终端模拟器作为 system compositor的 client
。由于是在用户空间实现的,所有可以加入 UNICODE,矢量字体,国际化的书写习惯等等的支持,再也不用受限于内核啦。 Wayland
还是一个非常年轻的项目,Wayland system compositor目前还只是设想中的概念,需要更多的人关注参与。笔者相信不久的将来 wayland
linux打开终端的快捷键(linux快速打开终端快捷键)
linux快速打开终端快捷键
1、方法一:直接运行终端的可执行文件。
单击ubuntu桌面左侧启动器内部的主文件夹,然后单击文件系统,进入文件系统内部usr文件夹下的bin目录。单击“搜索”标识,在搜索框内输入“gnome-terminal”然后按回车键。在搜索结果中会出现“gnome-terminal”的可执行文件,双击即可打开终端。操作过程如下图所示。
2、方法二:通过命令行打开终端。
在ubuntu系统中按Alt+F2快捷键打开命令输入框,输入“gnome-terminal”命令,然后按回车键即可打开终端。
3、方法三:使用快捷键:Ctrl+Alt+T打开终端。
在ubuntu系统中按:Ctrl+Alt+T即可打开终端,此方法是五种方法中最简便快捷的方法。
4、方法四:Dash主页打开终端。
单击Ubuntu桌面左上边的Dash主页图标,在搜索框内输入“ter”,然后在搜索结果内会出现终端的图标,然后单击终端图标即可打开终端。操作过程如下图所示。
5、方法五:将终端图标锁定在右侧启动器,直接打开终端。
可以将终端通过拖拽的方式固定在桌面右侧的启动器上,通过单击启动器上的终端图标即可方便的打开终端。
linux终端快捷键怎么打开
按ctrl+shift+esc组合键即可打开任务管理器。如果不行,可能是系统有问题了,直接换个验证过的系统盘重装系统就行了,这样就可以全程自动、顺利解决 win7系统不能打开任务管理器的问题了。用u盘或者硬盘这些都是可以的,且安装速度非常快。具体安装方法如下:
1、U盘安装:用ultraiso软件,打开下载好的系统安装盘文件(ISO文件),执行“写入映像文件”把U盘插到电脑上,点击“确定”,等待程序执行完毕后,这样就做好了启动及安装系统用的u盘,用这个做好的系统u盘引导启动机器后,即可顺利重装系统了;
2、硬盘安装:前提是,需要有一个可以正常运行的Windows系统,提取下载的ISO文件中的“*.GHO”和“安装系统.EXE”到电脑的非系统分区,然后运行“安装系统.EXE”,直接回车确认还原操作,再次确认执行自动安装操作(执行前注意备份C盘重要资料);
linux怎么快捷键打开终端
linux不同系统版本打开终端的快捷键如下:
1、RH系列的要自己定。在system下面的preference下的keyboard shortcuts之后找Run a terminal,添加快捷启动按键。
2、debian系列的是Ctrl+alt+t。
3、ubuntu系列的是ctrl+Alt+T。
linux设置打开终端快捷键
你用虚拟终端不就行了?终端窗口里面就是字符界面,同时还支持很多附加的 X界面支持的一些功能。
要比纯字符里面好用很多。如果非要去上某些落伍教材的当,你可以把 virtualbox的 Ctrl+ Alt改为别的就行了。至于设置在哪里,我没注意过,你找找吧。------------------------哦没注意看,以为是你遇到 virtualbox因为按 Ctrl+ Alt不能切换终端,而是退出 VirualBox的虚拟机控制。这个比较难办,因为这个快捷键是很底层的一个设置。需要修改系统设置的。印象里 X的设置文件里面可以关掉 Ctrl+ Alt+ Fx的功能。你可以把实体机器的 Ctrl+ Alt反应关掉。至于怎么关,没有过关注……仅仅是在网上闲逛的时候无意中见到的这么一个设置。不过似乎 VirtualBox的 Crtl+ Alt的设置还是要改的。你为什么非要切换到控制台?图形界面的终端不行么?linux打开终端的快捷方式
1、在Linux的首页使用Ctrl+alt+T,打开终端。
2、Linux支持多终端,可以再使用Ctrl+alt+T命令打开多个终端。
3、通过“search your computer”功能搜索,terminal。
4、输入“ter”,可以看到,terminal终端出现了,单击打开。
5、可以鼠标左键terminal,把他拖到到“search your computer”的下面,然后右键固定到“启动栏”中,就类似Windows的“锁定到任务栏”这样就方便下次直接使用。
Linux打开终端快捷键
方法一:WinX菜单
右键单击任务栏上的Windows图标,打开WinX菜单(快捷键:Win+X)
如果你想要提升权限,请单击Windows终端(管理员)
方法二:使用搜索打开Windows终端
单击任务栏上的搜索图标。
键入Windows Terminal并单击打开。
方法三:开始菜单
单击任务栏上的Windows图标或使用键盘上的Windows键打开开始菜单。
单击“所有应用”按钮。
向下滚动,直到到达“W”应用程序并找到Windows Terminal,单击它。
linux打开命令终端快捷键
Linux常用的有3中进入终端界面方法,分别如下:
1、按快捷键“Ctrl+Alt+T”即可打开终端窗口。
2、或者按“Ctrl+Alt+F1-F6”均可进入终端(模拟终端,不显示桌面)。
3、直接搜索“终端”并进入。
注意事项:
如果采用方法2的F1-F6的方法,返回图形界面只要按“Ctrl+Alt+F7即可”。
linux快速打开终端快捷键是什么
如果记得方法名,但不知道在哪个类里,ctrl+h,选择在文件中查询如果知道在哪个类那就简单了,ctrl+o直接调出来方法列表
linux打开终端快捷键设置
Linux常用的有3中进入终端(terminal)界面方法,分别如下:
1、按快捷键“Ctrl+Alt+T”即可打开终端窗口
2、或者按“Ctrl+Alt+F1-F6”均可进入终端(模拟终端,不显示桌面)
3、直接搜索“终端”并进入
注意事项:如果采用方法2的F1-F6的方法,返回图形界面只要按“Ctrl+Alt+F7即可”。
linux ~$ Linux系统中终端如何进入~$的命令模式
$表示普通用户,#表示root用户。切换到普通用户登录即可。
1,新建一个普通用户。打开终端,先创建一个用户,终端输入:testuser:useradd testuser
2,修改testuser登录密码,终端输入: passwd testuser按提示输入两次密码。
3,切换到普通用户,终端输入:su testuser回车输入密码即可切换到普通用户。
4,切换成功后前面的#会变成$。