免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4146 | 回复: 5

[学习分享] elinks-0.12中文GBK补丁以及zhcon-0.2.6支持GPM中继补丁套装 [复制链接]

论坛徽章:
0
发表于 2014-05-29 12:54 |显示全部楼层
本帖最后由 wilddingo 于 2014-05-29 13:02 编辑

elinks在0.12版仍未支持中文,使用起来非常不便。这次索性又改了一次,现在支持GBK,UTF-8和英文。对于欧洲其它奇怪文字的国家,估计支持不了,不过我也没条件测试。新版本elinks结构上跟老版本好像不太一样,几年前改0.11版的印象已经淡忘了,但结构上好像没有0.12好。另外,由于是冲着纯文本环境去的,所以主要的终端增强工具仍旧是使用zhcon,它的汉字字体还不错,而且识别率很高。但是如果使用了zhcon,它会阻断GPM(鼠标)消息,所以elinks运行在zhcon下会无法在文本模式方便地使用鼠标。为了解决这个问题,我稍微修改了zhcon的代码,使得可以用命令行参数控制zhcon将鼠标消息中继到运行与其下伪终端的程序,例如elinks。elinks的改动,中文支持就不说了,增加了命令行参数控制的使用zhcon提供的gpm中继的能力。所以现在不但可以完整地显示中文,也可以无障碍地使用鼠标(文本模式下)。同时顺手修改了一个在支持JavaScript(SpiderMonkey)时elinks的小错误。更动仍旧以patch形式奉上。稍后解释用法,先看几张截图:
broad.jpg
这是广播论坛的页面效果。还可以。
setup.jpg
这张图可以看到charset选项中新增了GBK
snap.jpg
这是用来显示纯中文的读书频道。
截图是我直接从linux的framebuffer上截的,由于格式转换软件的颜色问题,所以看起来颜色很奇怪,实际上很正常。
现在说一下补丁的用法以及相关情况,elinks版本为elinks-0.12pre6,下载源码包后:
tar jxvf elinks-0.12pre6.tar.bz2
cd elinks-0.12pre6
patch -p1 <../elinks-0.12pre6-zhcon-gbkmod.patch
./configure --enable-88-colors --enable-256-colors --enable-true-color --enable-html-highlight [--with-spidermonkey=/the/path/u/have]&& make
zhcon的补丁用法类似,但要注意,zhcon并未完整发布0.26版,而是从0.25patch到0.26的。要使用我提供的gpm补丁,需要先打上0.25-to-0.26的patch。在帖子末尾我会附上这个补丁,以免满世界找。
tar zxvf zhcon-0.2.5.tar.gz
cd zhcon-0.2.5
patch -p1 <../zhcon-0.2.5-to-0.2.6.diff
patch -p1 <../zhcon-0.2.5-gpm-relay-mod.patch
./configure && make
我的补丁稍微修复了zhcon编译时容易报告的iconv库函数解析失败的错误,直接编译即可。
补充说明一下:
启动gpm,zhcon和elinks的顺序是,先启动gpm,可以用类似的命令:
gpm -m /dev/input/mice -t imps2
不是每个人的机器都一样,具体情况查阅相关文档
启动zhcon:
zhcon --gpm_relay
--gpm_relay即为gpm消息中继,如果不带该参数,zhcon的行为和补丁前一样。
启动elinks:
elinks --under_zhcon
--under_zhcon会让elinks使用zhcon中继的gpm服务,如果不带该参数,将使用原有的gpm服务,或者:
elinks --under_zhcon --gpm_relay_path=/tmp/zhcongpm   (/tmp/zhcongpm是默认路径,unix套接字,如果你没有那个位置的,可以指向其他位置),也可以写成:
elinks --under_zhcon --gpm_relay_path /tmp/zhcongpm
等号可以不要,如果不指定--gpm_relay_path,会使用默认路径

zhcon和elinks的新增参数在--help时是看不到的,因为是额外插入的代码,为了不干扰原有的命令行参数解析实现,我屏蔽了一部分param.h中的自动化内容。如果有兴趣,
诸位可以自行修改。

补丁文件们:
zhcon-0.2.5-gpm-relay-mod.patch.gz (6.08 KB, 下载次数: 32)

论坛徽章:
0
发表于 2014-06-09 09:18 |显示全部楼层
这个补丁太好了!我以前用过0.11版的,对GBK的支持太酷了。现在又释出0.12版的,太及时了。谢谢!!!!!!

论坛徽章:
0
发表于 2014-06-10 19:05 |显示全部楼层
本帖最后由 wilddingo 于 2014-06-10 19:13 编辑

补丁更新:
更新内容:
elinks:修复了bookmark功能,原来的bookmark是好的,在修改了中文化部分后开始不能工作。现在可以正常工作。
             解决了bookmark的title不能输入中文的问题,这实际上是两个问题,一个是gbk输入问题,一个是utf-8输入问题。现在都可以正常使用,在什么终端下,就用什么终端提供的输入法输入即可。
             解决了bookmark保存条目是转码到固定的,终端相关的codepage的问题。现在一律保存为utf-8编码。在什么类型终端下打开,就显示为什么codepage,以便于经常在不同终端上共享同一个elinks配置文件的用户使用。例如可以在zhcon下保存书签,然后在x11的xterm下显示书签列表,显示是不会有问题的,反之亦然。
             解决了网页上的输入框输入中文的问题,并且解决了form表单在提交时转码的问题。现在无论是utf8还是gbk网页,都可以在任意类型终端上用它提供的输入法输入中文内容。比如说你可以在UTF-8编码的baidu主页上用utf8输入法输入搜索内容,也可以在zhcon下用gbk输入法输入同样内容。
            解决了有些页面不能断行的问题。后来发现这些页面是table类型的。例如在浏览一个论坛时,如果某一层内容很长,则需要横向滚屏,很麻烦。现在这种情况也可以自动断行,一屏显示。但对于特别特别长的内容,可能会覆盖到下一层楼的标题或者作者信息之类的内容,由于不多见,没去改。
           解决了utf8网页显示有时候会缺一个字的问题。
            更新了转换的核心函数,现在比上一个补丁更安全,同时也更广谱一些。
zhcon:
           在原有基础上恢复了失效已久的正规热键:ctrl+space呼出输入法,ctrl+alt+1~9切换输入法。失效的表现是,ctrl+space无法呼出或者关闭输入法,呼出热键是ctrl+2.这很不爽,不过现在问题解决了。
           已知问题描述:
            使用了我的elinks补丁后,在64位环境下编译没问题,但运行时,有一定概率elinks会报告crash。这看起来是对于iconv库使用造成的。内存处理应该没有泄露现象,也没有越界,具体原因没细查,如果是64位的用户,要慎重使用,或者有兴趣可以自己修改一下。
            另外在ubuntu下编译zhcon时可能会遇到一些头文件未包含的问题,这并非我的补丁造成,如果遇到这种问题,只有手工一一修改报错源文件了,这是个体力活,如果想一蹴而就,就改global.h或者config.h。
            由于zhcon和elinks都需要gpm支持,所以请先编译或者安装gpm。再编译zhcon和elinks才能得到gpm支持。
           鉴于各位可能会遇到编译问题,顺便补充一下,我的环境,userland是LFS-6.3-r2160,内核3.14.3。
           新的补丁奉上:
          elinks-0.12pre6-zhcon-gbkmod.patch.gz (34.15 KB, 下载次数: 26)

论坛徽章:
0
发表于 2014-06-11 09:50 |显示全部楼层
编译过了,真得很好用!将图附上
gbk.JPG
不过,在使用中发现一个问题,对于部分UTF-8编码的网站,如www.360doc.com,回行的截止处好像不太对,一行的内容有点过长。我过elinks中的wrap on/off这个选项,没有根本改变。这个问题,也许与elinks 的frame有关吧。但用elinks-0.13.git 编译的程序就没有这种现象,只是它又不能很好地显示gbk(包括gb2312)编码的网站,总会在一段中的后部分出现乱码。如果有可能,请楼主参考一下它们的编码。也许这样一来,补丁就完美了。我不懂编码,这个思路也可能是不可取的。供参考。

论坛徽章:
0
发表于 2014-06-11 10:11 |显示全部楼层
回复 4# boslad


    我注意到了有些网页无法正确断行的问题,这跟是不是UTF-8没有直接关系,这种网站多半是javascript的。对于javascript的内容,elinks的处理流程和普通网页好像不同,我也
正在找它相关的代码,打算解决这个问题,不过时间零碎,不知道何时能够完成。谢谢你反馈的有用信息

论坛徽章:
2
水瓶座
日期:2014-06-12 08:22:39IT运维版块每日发帖之星
日期:2015-08-05 06:20:00
发表于 2014-06-13 08:58 |显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP