近期开发小结

maemo平台:
持续改进mscim。4月底5月初时n900在香港台湾上市,中文输入使用的是基于mscim的蒙恬输入法。
所以nokia台湾和蒙恬的人都有和我联系,关于一些bug的。
mscim为蒙恬修改恢复了若干快捷键,以使蒙恬的面板可以调用显示输入法选择菜单。同时明确延续scim的lgpl版权声明,以使蒙恬不需要开源其输入法模块。

同时因为有俄语用户反映俄语状态不能切输入法(因为俄语输入是不显示输入法面板的吧,所以点不了选择输入法的按钮),就加了shift+ctrl组合键进行输入法切换。

新引入mscim-chewing新酷音模块。当然这个还很不完善,另外,因为我也不会这输入法。。估计改进是有困难了

从ubuntu source上取了ttf-wqy-microhei的包,推进maemo extras-devel源了,用来替换里面的ttf-droid。droid字体不全,文泉驿的微米黑就是在droid字体上完善的。

另外看起来,仿照蒙恬的软键盘形式,在mscim上用helper做软键盘也是可行的,只是开发工作量颇大,并且因为早期就禁用掉了inline输入模式,用大键盘的话,会遮挡掉文字输入框,看起来应该也不爽。用小键盘,可能意义就小很多了。

android:
主要在研究android sync framework。往深处做,android还是有不少问题的。加入自己的sync account时,有supportsuploading选项。一般对于social network client就设成false,比如facebook什么的,这样其实相当于只读,就是把服务器上的好友加载到本地而已。但如果系统中只要有任意一个启用的支持supportsuploading的account的话,新增联系人时就完全不可能新增到你这个account名下,这对于想做同步的程序是不可行的。但如果把supportsuploading设为true呢,那其实问题就更大了,新增联系人时,如果选择建在这个account下,出来的editcontact的界面是只有选择头像和输入人名的框的,其它所有的比如填电话邮件这些的控件全部不会显示。
所以funambol出的android syncml client用了很直接了当的做法,自己做了个自己的editcontact的界面,只是每次新建联系人时,系统都会问你用哪个activity,这个观感不好。
而google accounts和exchange server account为什么能用呢?因为那是把两个package name写进了contacts应用程序的。实际上从代码上来看,google有在考虑为externalsource进行这些编辑控件的加载,但至少到2.1版本还是不可用的。
所以,如果不改contacts程序的code的话,你是做不了一个完善的类似google联系人同步这样的程序的。

周记

工作上面比以前忙了些,由新来的以色列大妈管着了,反正事情就是多些了。

看联通号一直闲置浪费,也开始用了,换到了主力手机上。发现n900不支持动感地带的号码(或者只是不支持134这些新号段的),只好又用起了680。
装了下qt 4.7 的技术预览版,还有新的qt creator。我以前基本上没有接触过qt,也算试试看啦。qt安装需要自己编译,真是漫长。。
qt的几个demo都不错,尤其mobile-demo,我觉得效果很好,在mac上看起来效果也不错。

昨天才发现,n900上的qt程序里不支持用mscim输入。看了下changelog,mscim上次更新都是一个多月前了。这两天有点点小改动,主要是原来版本卸载后系统输入法好像还是不能用,修正了一下。还有几个码表名字改得好看了一点儿。我有想是不是把scim-qtimm的qt支持模块也移植上来,可是看起来可能也不是很容易的活。倒是him-scim这个项目人家做得好像也还可以,不知道是不是也把mscim换用him的前端呢。可是明明him前端也是gtk immodule而已,为什么它就支持在qt中的输入?我是有担心接下来换meego上,这些工作都白费啦。

最近半年多在跟的小说只有《凡人修仙传》了,之前跟的两本都完结了。

好像也没什么了?。。。 我决定每周至少更新一篇blog,不然每周都是自动twitter合集的文了。。。

Build SCIM on Maemo5

scim_maemo5
maemocjk project has not been updated for a long time. there’s a scim for maemo sub-project in it, which i think is the most important part of maemocjk. i’ve tried to build it on maemo5 sdk beta1 and beta2, before. it would be compiled and built successfully on all of these sdk versions. but scim could not be actived when i click into an editable text area. i’m not sure if it’s just the sdk bug.

anyway, when i try to build scim on maemo official sdk today, it works now, without any modification of the code. like before sdks, chinese character cannot be shown because the build-in font in the sdk doesn’t support cjk. i install droid font from maemo extra devel repository. as you can see, it works. though it’s not very good to use yet. it’s a good beginning, isn’t it?

there’re still lots of things need to do:

  1. the scim-setup application is not listed in the application panel
  2. scim cannot be actived in the input field of web pages. in other words, it doesn’t work in the browser.
  3. the front-end ui of scim is not working well. as you can see in the screen-shot, the character cannot displayed well in the scim drop down list. it’s just one of the easiest bug to fix. i guess just need to use correct font. other bugs like, the float window cannot be shown. i disabled it in scim-setup. if the float window is set to be shown, the whole scim cannot work. when i click into an input field, then scim actives, and try to show its float window. the task switcher of maemo system will treat the float window as a new task window, and switch to that one.

i will try to keep working on that..

Hildon input framework and plugins

啧啧,真是复杂的玩意儿。
半夜没事就看看这个东西,想想怎么让n900上有中文输入。他们提到的一个日本人在做的基于him plugin机制,加上ibus输入法引擎做后端的东西,我也google到了。 http://domaemon.blogspot.com/ 访问需要翻墙。看起来人家好像进展不错?我其实是很希望人家赶紧做好,那ibus支持的输入法应该就都支持了,比如中文。。

其实我对n900的sdk也不是很熟。n810时,我都编译了直接在真机上跑,n900还没有真机。虽然him plugin example已经更新,但我编译安装了,完全不知道怎么启用能看看效果,这点也比较orz.
我现在两个思路,简单的就是看看能不能修正scim for mameo,让它跑起来。据说只是获取焦点的问题。我通过比较him framework的svn历史版本,大概也能找出些需要的相关代码。不过nokia其实不太厚道。这些东西都是内部开发的,开发完一次性merge到开源分支上,中间的逐次修改的记录就没有了。上面的那个日本人的blog里提及为什么不用scim,一个是说用him插件机制容易切换系统原有输入法和cjk输入法,这点其实我没看出来,虽然我确实认为这个蛮重要的,并且如果用scim的确基本就不可能了。他还说,因为浏览器不支持preedit就不能用scim,这点我表示怀疑。这个preedit我没理解错,就是inline input,那种输入英文字母,还没转成中文前的时候就先在输入框里显示,一般还带个下划线那种。但是scim是支持over-the-fly模式的,就是自己弹出个小框来做预输入区,中文字完全后再送入客户端文本框,所以我觉得这应该不是个问题。当然,能不能捕获到浏览器内部的输入框就是另外一个问题了,这好像在很多平台上都是比较麻烦的事情。

另外一个思路,就是我打算用最简单的方法改改him或framework。我目前都不能确定him和him framework两个项目间具体什么关系。但看到点的一些代码中的事件处理,我相信应该可以做如下处理:就是关着键盘时,什么都不改,该怎么用软键盘就怎么用,也就不能支持cjk输入;打开键盘时,原来继续要传给him plugin的全部拦截掉,自己送给一个输入法后端变成中文,直接上屏。我是觉得这样子代码入口会比较好定位,折腾plugin的话,除了本来就要做的和输入法引擎的联调外,还要做些ui,以及一大堆需要补全的接口。

当然,我还是只是想想而已。我在him及him framework的代码中都加了几行debug输出,编译安装,竟然都没有这些debug信息出来,让我很失望。。不知道是什么原因没能替换成功。再说了。。

webOS输入法实现设想

至今还没见过pre真机呢,唉。前些天和streatsmart聊起,讲到pre上的中文输入法实现。我想当然地说,和android, iphone早期一样,没有输入法框架,也没sdk,估计是不怎么可能作系统级输入法的啦,哪有都像palm os这么多方式好hack的。他说,palmer@ifan提到,用js应该可以实现。虽然没有什么详细内容,我只是觉得或许也可以看下,载了webos的rom看了下源码。发现几个textfield控件的实现都是有源代码的。 read more

中文标点 for OpenVanilla

哈哈,晚上开始研究香草输入法,框架果然非常好啊,最爽的是载下来的代码没有错误,一编译就通过了。laf…
原来这个输入法没有中文标点输出方式,自带倒是有个全角英数符,但是并不能完全替代中文标点用,比如……“”。而站点上一般的建议是设置keyname转换,直接映射某些键,不过仍解决不了“”成对出现的问题。
于是自己拿着全角英数符的源码对着改了一份中文标点输入法出来
使用说明: 将ovofchinesepunctuation.dylib复制到/library/openvanilla/0.7.2/modules目录下(需要先更改目录属性,不然没有权限复制),这时候打开ov的设置,模块载入菜单里把中文标点打勾,快捷键设成ctrl+.,这个和windows上是一样的。
还有一点缺陷是,有时在切换输入法后,这个模块不会自动启动,我还没有找到规律:(

后补: 原来编译好的文件在迁移站点时丢了:( 需要的话自己编译吧

源码如下
read more

Palm输入法开发 UI设计

旧blog彻底不能用了,载下所有存档,把这最有技术含量的一篇帖子内容抢救出来了。都已经忘了是几时写的了,但是可以确定是去年写的,呵呵。

read more