终端模拟器修改_终端模拟器修改分辨率

  • 时间:
  • 浏览:0
  • 来源:丽达永盛网络科技

终端模拟器修改_终端模拟器修改分辨率

大家好,今天我将为大家详细介绍终端模拟器修改的问题。为了更好地呈现这个问题,我将相关资料进行了整理,现在就让我们一起来看看吧。

文章目录列表:

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

2.如何用终端模拟器给安卓手机手动刷入recovery

3.在MT终端模拟器中使用Termux命令

4.小米手机怎么修改wifi路由器设备的名字?

5.mt管理器终端模拟器做什么用

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

要想控制台能支持汉字显示,需要解决 3 个问题:

必须使用 UTF-8 模式 ( 默认_c->utf=1 即可 )

虚拟控制台的_c_screenbuf 必须修改以为 glyph 提供至少 16bit 的空间。

图形控制台需要_c_font包含更多的字符,不只是 255 个,并提供代码绘制双倍宽度的中文字形,字体中的字符按照 UNICODE

排列,这样 glyph 就是字符的 UNICODE 编码。

修改虚拟控制台

一开始,我的打算是_c_screenbuf 修改为 unsigned long long* 类型,32bit 给字符属性,分别表示 16bit

终端前景色和背景色。glyph 则拥有 31bit 的空间 , 因为汉字的宽度为双倍的英文字母 ,其中 1 bit 用来表示双字符宽度。比如 '我' 会表达为

两个 '我',第二个'我'的_位为 1:绘制任何字形的时候,只绘制字形的左半部分;如果发现_位为 1

则绘制字体位图中的右半部分。这样同样的绘制代码可以适应英文字母和汉字。写入_c_screenbuf 的时候,

如果是双倍宽度的字符,需要同时写入两份,第二份的_位置 1 就可以。但是_c_screenbuf

的格式已经被到处假定为每字符两个字节。如此修改导致牵一发动全身。许多艰涩难懂的代码都依赖_c_screenbuf 是

每字符两个字节的设定,直接修改定义后,光是编译器能直接检测出来的就有百余个地方需要修改,还有更多的逻辑并不能被编译器检测出来。如此修改的后果就是会出现许多隐晦的错误,非常难于调式。挣扎后,为_终选择了另一条道路

:

为汉字重新分配一块_c_unicode_screenbuf

vc_unicode_screenbuf 紧挨着_c_screenbuf , 事实上_c_screenbuf

在分配空间的时候,多分配了一倍的空间,多分配的空间充作_c_unicode_screenbuf,因此 struct_c_data 里并没有添加

vc_unicode_screenbuf 成员。_c_unicode_screenbuf 同样为每字符 2 个字节,并不包含字符属性,所以 2

个字节如数用来保存 glyph。vc_screenbuf 格式未变,所以_gacon 不需要修改,这就减少了大量的工作量。向_c_screenbuf

写入字符的时候,同时写入一份到_c_unicode_screenbuf 。如果是汉字,由于其 glyph 大于 254 , 所以_c_screenbuf

的那两个字符 ( 汉字双倍宽度 ) 实际写入的是 0xff 和 0xfe ( 故而上文提到是 glyph 大于 254 的字符 ,0xfe 被保留它用了

)。0xff 表示该字符的 glyph 要到_c_unicode_screenbuf 提取,然后绘制左半部分;0xfe 表示该字符的 glyph 要到

vc_unicode_screenbuf 提取,然后绘制右半部分。对于 glyph 大于 254 但是又不是双倍宽度的字符,就不需要 0xfe

作陪了。比如屏幕上显示的文字是黑底白字的 “牛 B” ,_c_screenbuf 的内容就是 “0x00ff, 0x0ffe, 0x0f42 ” ,

vc_unicode_screenbuf 的内容则是 “牛 , 牛 ,b”

。这是因为一个汉字为两倍的英文字母宽度。在屏幕文字缓冲区上也必须占用两个字符的位置。并且必须有一种机制能知道应该绘制左半部分和右半部分,我使用的就是 0xff

和 0xfe。

修改图形控制台绘制代码

要修改的地方只有 3 个。

struct c_ole_font 添加 charcount 成员。将主线内核的字体设置为 charcount=255。 主线内核带的字体都是

255 个 glyph 的,所以没有添加字符个数的必要。不过我们即将要添加的字体会有数万字符。

添加一个新的字体,复盖 UNICODE BMP 基本区域的所有符号。

修改字符绘制代码,添加_c_unicode_screenbuf 的支持。

字符绘制代码的修改比较繁琐,代码分布在 drivers/video/c_ole/ 下的多个文件中。fbcon_putc(s) 由由

vc->vc_sw->con_putc(s) 调用, fbcon_putc(s) 转而调用分散于 drivers/video/c_ole/

的多个 puts 实现。因为终端要支持 c_ole_rotate , decoration , timing , 故而每种模式下的绘制实现都是不同的。我拿

drivers/video/c_ole/bitblt.c _常用的不倾斜、不加装饰等的终端模式为例来讲解绘图部分的修改。由于中文字体为 16x16

点阵,是对齐的字体,故而其绘制代码为 bit_putcs_aligned() 原先的代码以 glyph 为下标到_c->vc_font->data

获得字体数据,然后调用 fb_pad_aligned_buffer 执行块拷贝操作。我的修改很简单,原来获得字体数据的代码修改后放入 font_bits()

辅助函数。 在 font_bits 里,要判断 glyph 是否为 0xff 或者 0xfe, 如果不是,使用 glyph 为下标获得字体的左半部分后并返回。

如果是,则从_c_unicode_screenbuf 获得真正的 glyph 数值,然后再依据现有的 glyph 是 0xff 还是 0xfe

去获得字体的右半部分还是左半部分返回。font_bits 获得字体数据后执行 fb_pad_aligned_buffer 块拷贝。需要修改的地方还有

drivers/video/c_ole/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

一定能大有作为。转载

如何用终端模拟器给安卓手机手动刷入recovery

安卓智能手机,刷入recovery模式的方法:

使用移动叔叔工具箱(软件),用刷入第三方recovery模式一样的方法,刷入品牌官方的recovery.img文件:

移动叔叔工具箱 刷入第三方recovery模式的具体步骤及操作方法:

在已经成功获取root权限的手机上,下载安装移动叔叔工具箱软件,使用移动叔叔工具箱软件,刷入第三方recovery模式的方法步骤:

1.在网上(推荐手机品牌官网、安卓网机锋论坛、百度网盘)搜索与个人手机品牌及机型信号相匹配一致的第三方recovery.img文件,将其复制粘贴在手机SD卡卡根(卡根:就是直接复制粘贴在SD卡里,不能将文件放在文件夹目录中)

2.成功获取手机安卓系统root权限

3.在已经成功root的手机上下载并安装移动叔叔工具箱(软件)

4.用移动叔叔工具箱的recovery更新功能→导入SD卡上的recovery.img文件→确定→重启→重启后,自动进入recovery模式→刷入完成。

安卓系统智能手机进入recovery模式有三种方法:这的三种方法,操作步骤如下:

方法一:如果手机是开机状态,请先关机,在关机情况下,同时按住电源(挂机键)+ 小房子(Home)键,直到出现Recovery界面为止。

recovery.IMG文件,可以用移动叔叔工具箱软件刷入,具体方法:

推荐移动叔叔工具箱 刷入第三方recovery模式的具体步骤及操作方法:

在已经成功获取root权限的手机上,下载安装移动叔叔工具箱软件,使用移动叔叔工具箱软件,刷入第三方recovery模式的方法步骤:

1.在网上(推荐手机品牌官网、安卓网机锋论坛、百度网盘)搜索与个人手机品牌及机型信号相匹配一致的第三方recovery.img文件,将其复制粘贴在手机SD卡卡根(卡根:就是直接复制粘贴在SD卡里,不能将文件放在文件夹目录中)

2.成功获取手机安卓系统root权限

3.在已经成功root的手机上下载并安装移动叔叔工具箱(软件)

4.用移动叔叔工具箱的recovery更新功能→导入SD卡上的recovery.img文件→确定→重启→重启后,自动进入recovery模式→刷入完成。

满意,别忘记采纳一下下啦,谢谢!

方法二:如果以上方法无法进入,那么再开机,先按住音量+键不放,然后再长按电源开机键,知道出现Recovery界面为止。

方法三:使用辅助软件

1、首先在电脑中安卓卓大师;

2、将USB数据线将手机与电脑连接好,之后打开卓大师,等待卓大师识别,_次使用,则需要下载安装手机驱动,需要联网条件下,等待一会即可完成;

PS:如果卓大师识别不到安卓手机,请注意检查手机是否是开机状态,并且手机书否开启了USB调试模式。不懂的朋友情阅读:usb调试在哪 安卓手机usb调试开关开启方法;

3、以上都完成之后,进入卓大师的使用工具,然后点击顶部的“实用工具”,之后在“常用工具”里边即可找到“重启到Recovery”,点击该项即可看到手机将自动重启,之后手机即可进入Recovery模式了,如下图:

安卓手机进入Recovery模式方法

使用安卓工具进入Recovery模式的方法每个安卓手机都是通用的,优点是简洁、容易使用,缺点是需要用到电脑以及需要手机连接电脑。

进入recovery模式后:按音量键,是选择项目;按开机键,确定操作。

在MT终端模拟器中使用Termux命令

为什么要在MT中使用Termux命令?

注:需要root权限

方案一(推荐):将Termux命令路径添加到MT终端的$PATH变量中

进入/data/user/0/bin.mt.plus/files/term/usr/etc/目录,编辑里面的bash.bashrc,在_末尾添加 export PATH=$PATH:/data/data/com.termux/files/usr/bin/ 即可

或者直接使用MT终端输入 echo "export PATH=$PATH:/data/data/com.termux/files/usr/bin/" >> /data/user/0/bin.mt.plus/files/term/usr/etc/bash.bashrc

方案二(不推荐,但可以在所有终端中有效):主要面向单个命令,使用ln将Termux命令链接到/bin目录下,以ffmpeg命令为例:

MT终端输入 ln /data/data/com.termux/files/usr/bin/ffmpeg /bin/ffmpeg 即可

需要注意的是,Termux里命令权限默认是700,也就是在MT终端使用的时候,需要开启root权限,即输入su或者sudo command

小米手机怎么修改wifi路由器设备的名字?

小米WIFI 修改设备名称的步骤如下

打开手机上安装的终端模拟器 输入命令:getprop net.hostname?

2.命令输入完后按回车,可以看到当前手机名::Android-XXXXXXXXXX这种格式的,在路由器 客户端列表中也是显示这样格式的手机名。

3.输入超级用户命令:su再按回车 ,若提示符由“$”变成了“#”号,则说明已经ROOT成功

4.现在可以输入修改名字的命令:setprop net.hostname 自己喜欢的手机名字,再按回车

5.确认是否改名成功,再输入一次命令: getprop net.hostname,再按回车 。若能看到新改 ?的名字就证明修改成功,否则可能命令格式有问题,或未ROOT成功。

参考资料

小米手机名怎么修改--wifi路由器设备名字?.百度知道[引用时间2017-12-27]

mt管理器终端模拟器做什么用

MT管理器是一款非常实用的手机管理工具软件,软件拥有丰富的文件管理和手机辅助功能,让用户手机内存和运行更便捷轻松的。MT管理器的终端模拟器就是模拟终端使用MT管理器,对手机文件进行一些修改。

怎么使用呢?进入终端模拟器,然后点击鼠标的左键设置,然后点击右键即可操作,就可以使用了,它通过命令来进行操作,不用的手机命令也有可能不相同,命令有些可能会出现不同的写法。如果有兴趣的话,可以自行百度一些教程进行测试。

好了,关于“终端模拟器修改”的话题就讲到这里了。希望大家能够对“终端模拟器修改”有更深入的了解,并且从我的回答中得到一些启示。