webOS输入法实现设想

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

this.handlekeydownevent = this.handlekeydownevent.bind(this);
this.controller.listen(this.controller.element, "keydown", this.handlekeydownevent);
this.handlekeyupevent = this.handlekeyupevent.bind(this);
this.controller.listen(this.controller.element, "keyup", this. handlekeyupevent);

那么就可以在handlekeydownevent里加入自己的代码。加一个浮动

区域飘浮在当前的输入框上方用来显示候选词。可以取到当前textfield的绝对位置,这个框也可以定位得很精准。如果做inline式输入法,要自己绘制下划线,可能处理起来麻烦一点。要是和巨硬这类一样在外部窗口先确定字再入框的话,那只要第一个按键下去,显示输入框,剩下的就用输入框本身来处理后面的控件事件就可以。
这样做的好处很明显,纯js实现,不需要考虑没有sdk,编译linux native code有困难,没有接口文档,不能做通讯这些问题。缺点当然是效率会有问题。不过可以先做个单字输入法凑和着用。码表直接用一个json格式存储就好了。还有个缺点就是代码不保密,不过看起来webos上大多程序都有这问题。
不过看了下,textfield有好几种类型,而且甚至不是相互继承的,那么就需要把输入法相关的js单独提出来作一个文件,再在各种textfield里都调用下。相信对于标准输入框应该可以解决了。额外的,可以再做个独立的程序(或者直接用memo程序也行),输入字后可以复制粘贴,用于一些特殊的不能生效的情况。
有了root权限,替换和写入这些js文件应该没有什么问题。

嗯,最后是版权声明。如果您使用了这种方式来实现webos上的输入法的话,希望能声明想法来源,及标明本页链接。

About Evan

Comments

2 Responses to “webOS输入法实现设想”
  1. Anonymous says:

    老大,你能出手搞搞吗?众胖友都眼巴巴望着你哟

    [Reply]

  2. Anonymous says:

    大家都在提集资支持哟.你招呼一声,或者叫吹友吧版主招呼一下,估计大家都会纷纷拥护和支持的.

    [Reply]

Speak Your Mind

Tell us what you're thinking...
and oh, if you want a pic to show with your comment, go get a gravatar!