我正在实作着小狼毫的 TSF 移植,本意是为了兼容 Win8 Metro
界面,并改善程序兼容性。目前Win32应用程序的支持已经比较完善,所以请大家帮忙一起测试捉虫!
代码直接在原先空白的 WeaselTSF 项目上开发,仓库位置在 https://github.com/wishstudio/weasel。
还是按照原来的方法编译,会在 output 下生成 weasel.dll(32位)和
weaselx64.dll(64位)(台湾的键盘布局还没有写)。先按照原先方法安装写入注册表信息,再开一个管理员命令行到这个目录下,运行
regsvr32 weasel.dll,regsvr32 weasel64.dll
注册。之后就应该可以在语言栏找到,为了和IMM32的区别,暂时取名 Weasel。
除此之外,还有一些编程中的思考与问题,拿出来跟大家讨论:
1. Composition
现在小狼毫的结构,相当于是在候选框中集成了显示输入序列和候选词的功能。但是在 TSF
的标准实现中,输入序列是直接在文档中显示的(类似微软拼音传统模式、系统自带仓颉那样的)。TSF 下处理这个 Composition
的功能很强大,可以进行移动光标位置、修改文本甚至修改文本的颜色和样式。于是我们可不可以提供这么一种输入的模式。
另一个考虑的原因是,由于TSF的标准输入模式是这样,导致很多控件只按照这种模式设计。我自己的实验表明,如果不开 Composition
直接拦截按键,或者开始 Composition
后没有插入过任何字符,则不少控件下会无法获取到正确的光标位置。目前我采取了一些方法来绕过这个问题(代码里搜CUAS)。如果采用标准的方式使用
Composition,我测试过的所有程序都是正常的。
2. Metro 支持
现阶段输入法会告诉Windows表示自己支持Metro,在Metro下也确实可以输入文字,但是候选框界面不能弹出,原因是在 Metro
界面上不能覆盖显示 Win32 的窗口,所以候选框必须在输入法端显示。这样在 IPC
部分至少需要增加返回当前输入序列和候选词列表,然后我们在TSF部分画出窗口。Metro下微软拼音是采用输入序列嵌入控件的形式,我们是按照Metro的规范重新写界面还是直接拿
WeaselUI?
3. 语言栏
* 语言栏图标?(Win8 的设计规范参见一下
http://msdn.microsoft.com/en-us/library/windows/apps/hh967425.aspx 中间的
IME icons 部分)
* 把 WeaselServer 的托盘图标集成到语言栏?
4. 安装
谁能帮忙补充一下安装脚本?
另外我们需要测试决定在哪些版本的系统下默认使用 TSF 框架的输入法。
谢谢!
我觉得目前这样的架构还是挺好的,最起码调试起来非常方便。TSF
一旦加载似乎不把应用程序关了就不会卸载,我现在重新编译都经常要关一堆程序。采用这样架构,至少修改到librime部分,就不需要重启程序了。
Composition的部分,我这两天去读读 WeaselServer 和 WeaselUI,看能不能写出来 :)
2012/8/14 弓辰 <chen...@gmail.com>:
> --
>
>
>
2012/8/15 弓辰 <chen...@gmail.com>:
> --
>
>
>
2012/8/15 弓辰 <chen...@gmail.com>:
> --
>
>
>
权限相关的比如说网络,可能输入法有在线同步的功能,但当前运行的程序可能没有网络权限,不过微软的文档里有提到可以用IPC来绕过。
2012/8/15 弓辰 <chen...@gmail.com>:
> --
>
>
>
2012/8/15 Wish <wishs...@gmail.com>:
--