近期开发小结
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合集的文了。。。
更新一些关于N900和Maemo的
很久没有写blog了,来更新点内容,首先是关于手机的。
很杯具的,我的htc magic在杭州忘在出租车上了,上次在北京还捡回来了(参考本文)。这次情况几乎一模一样,就是打电话人家就是不接。
于是我主力手机用回nokia e90,平时就玩玩n900。本月开始用186的号了,96套餐,可是只打过一个电话,双机还是太麻烦啊。
n900的多语言化项目还比较顺利。中港台的汉化基本完全,平时做些小的优化。比较大的一个更新是对简中和台版繁中的locale增加了排序,联系人应该可以正常排序了。zh_cn的locale是用了glibc的iso14651_t1_pinyin文件,这个文件是在glibc的master分支上找到的,但是maemo 5用的还是glibc 2.5版本,所以主要就是做了个合并的工作。zh_tw的排序文件就是我和couldvbb网友自己做的啦。看看有机会也回馈到glibc项目中去。但是不知道nokia是怎么打算的,他们迟早肯定也要解决这个排序问题吧。nokia maps因为版权问题,我们的项目里就不做翻译了。
目前我们同时开始的语言已经不少了,可以看这里。不过韩文几近中断,日文没有展开。我觉得日文这个很应该宣传展开啊,日本宅男这么多-_-
在发布bg_bg locale时发现maemo 5有个bug,日期格式以空格开头会crash,比如控制面板里的日期和时间设置就打不开。这个我们已经向maemo项目上报了bug,不知道下次更新能不能解决。
mscim项目还算好。周末刚刚更新了对韩语hangul输入法的支持。个人觉得基本上可用了啦。中文的话,google拼音和智能拼音两个可选,后者应该是支持模糊音和双拼的。五笔这些码表输入法更应该是比较稳定的了。
目前比较严重的bug仍然是和系统浏览器的兼容有问题。点击选字时,事件会穿过窗口被浏览器接收,实在是比较诡异的事情,我没有什么解决思路了。比较小的bug就是好像会对有竖屏支持的软件有影响,主要是输入法面板不支持竖屏,这个我或许可以下次试试检测输入窗口变化,竖屏时就禁用掉输入法。
我的pcman的移植一直都没时间做了,我得把它优先级提高。
/usr/bin和/usr/sbin下还是有很多没有发掘的有意义的小工具的。比如原来添加locale时,都是改gconf的一个值的,后来发现有个add_remove_language命令,方便了许多。maemo下目录结构和一般linux还是有些不同。比如rc*.d是在/etc目录下,而不是/etc/init.d/目录下,不知道为什么这样改。信息程序(就是短信和im会话集成体那个)的ui是html配置的,看到talk.maemo.org上他们在讨论自己改,可以美化下。我用exchange同步的方式和自己的gmail帐号同步联系人和日历是可以成功的,但是用公司的帐号就不行,我们买的是google企业帐号,之前在n97上试就可以,相信也只是n900的问题。
http://maemo.gitorious.org/ 这里可以看到很多maemo组件的源代码,他们原来的svn源好像停了,都改git了。就是不如android项目,有个repo工具一次全部下载的。当然更不如android的是,人家下载下来的代码直接能编译出完整系统来。这里的代码只能参考看看。
末了,替imaemo论坛做个广告,欢迎大家来访及提问。
N900初玩小感
注意:本页一些截图因为从800×480转成640宽,好像会显得不清晰一些,可以点击打开
先说存在的一些问题。
1. 屏幕音关不掉,太发指了。profile设置里关掉还是有,甚至整个系统切成静音模式还有声音,我觉得这系统的声音体系设计就有问题,看来有的程序故意要忽略静音设置也是做得到的了。害我半夜不能玩… 今天上午搜到了解决方案:
打开终端,输入
killall maemo-xinput-sounds
这应该只是在这个版本上出现的bug,以后应该会解决
2. 自带的forecaweather widget好像有bug,在把温度单位设置成摄氏度后,总是不能正常保存,桌面上的widget还是显示华氏度。我还是乖乖地去载了个omweather。不过我觉得forecaweather widget要好看一点
(这点已经解决,后来发现点击打开后是主程序,widget要单独设置,反正还是挺容易让人误解的)
3. 这机器既不能纯键盘操作,也不能纯触屏操作。而且maemo 4时还有聚焦状态,可以用方向键导航,maemo 5的开发文档里就建议去除这些。 read more
N810使用的一些心得2
这是《n810使用的一些心得》的续集。上回开篇就说“我是很有想写一篇赞美文来夸下n810的,名字我都想好了,《为什么我喜欢n810》。不过这才入手两周,写这种文章好像不太妥当,保不准再过两周就二手出掉了。所以我决定忍一忍,再过一个月再来写这篇文吧。” 没想到,这一隔就四个月了。我主要还是考虑到,我的n900马上就要到了,再不写就更写不了了。
事实上,果然还是容易腻味的。我好像买n770前也是一样的兴奋,最近我整理水木站内信时看到以前的讨论,当时也急着想找人团购的。我开始有担心买来n900是不是也会。中间回浙江,去台湾,前后差不多一个月,都没有带出去玩。回来都没想起这机器了。偶然在沙发上看到,才又充电来用。不过,还是不错,哈哈:)
先说缺点吧:
1. 按键声音大。qwert键盘很小心去按键也有机械音,而且不清脆。然后,音量键(看书时用来翻页)和全屏模式切换键声音更加大。反正半夜容易影响别人休息就是
2. 慢。其实我觉得我对n770腻也是因为太慢。n810似乎快一些?不过总的感觉还是有些慢。开浏览器慢,输入的感觉也不流畅,应该是键盘大了点儿的原因,这个就不知道n900怎么样了。
不过至少这次没有后悔啦,尤其相对一千四的价钱来说,当个玩具还算是值当的。没有必要特别的去喜欢。我就放床头,偶尔用用也还好。看网页,我更喜欢用android,感觉流畅些。不过用term上水木,还是n810好。首先我的htc magic没有硬键盘,这实在太硬伤了,上水木实在太不方便了。再么,n810屏幕还是要大些。我用magic+rterm上过水木,分辨率也比n810低不少,看起来感觉就是不好。睡不着的时候,我就用它来潜潜水,实在看到有些帖想回也算是方便,忍不住就输了上百个字也是有的。哦,还有泡澡的时候,我也喜欢用它上水木~
其它的,就是看小说了吧。总感觉电力好像比magic还好些。也可能因为magic毕竟是手机,一会儿没电了就麻烦了。不过fbreader不是什么好的阅读器。我只看txt的书,应该有更好的选择吧。fbreader翻页感觉相当慢。上下拖动不平滑,这点就让我怀念iphone了。我有时就会看到一半忍不了,又拷到treo650上,继续看。。这个电力更加强。只是这两个看书久了都特别累,大概是我老了吧。
其实电阻屏问题还是挺多的,尤其软件还非想设计成和电容屏一样的使用方式。比如mauku,上下拖拉时经常就被当作点击,打开对应条目了。这机器按上下方向键也挺累的。
偶尔也会突然觉得这机器挺强大的。比如有天我pc开着没有关,就懒得起床,ssh连上去用命令行关机掉了。我其实对linux不是很有爱,不过只是当它是手持设备,才觉得好。倒也因此,又研究了些linux相关的,比如gtk编程什么的。也算是好处吧。
Build SCIM on 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:
- the scim-setup application is not listed in the application panel
- scim cannot be actived in the input field of web pages. in other words, it doesn’t work in the browser.
- 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信息出来,让我很失望。。不知道是什么原因没能替换成功。再说了。。
翻墙版的Mauku
mauku在国内一直是连不上twitter的。而且这东西也不支持twitter api设置。我就直接把代码里的url改了,当前用的是某个固定站的,也没有做成可设置的。
mauku是开源的,你想自己改也很容易。下载源代码。我是用0.6.2的tag版本改的。在src目录下把所有c文件中的http://twitter.com替换成你自己要设置的twitter api host的网址就行
安装的话,还是需要先安装原版的mauku,因为要装依赖库,我懒得一起提供了。先装原版的,然后就直接安装下面提供的版本就行了。原版安装可参见:http://mauku.henrikhedberg.com/
mauku_0.6.2_armel.deb (142.9 KiB, 464 hits)
再补上一个截图



