[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: xcin wishlist



: 你好,东东,刚刚看了一点居士(谢东翰)写的 XCIN 的文章,想做一点改动,
: 先记下来,吃早饭去也... Wishlist 吧 ... ;-))

嗯! 谢谢您的建议 :-)) 以下我就您提出的几点加入一些我的意见 ....

(sorry, 在这里我用 Big5 码回信,请不习惯使用 Big5 的朋友见谅)

: 1.
: 在 gen_inp 这个输入法模组中,有一个自动上字的功能, User 按下
: 
: zhao 空格
: 
: 之后,"找" 字就发给 Client 了,因为 "找" 字在 pinyin.cin 中排在
: 所有的 zhao 对应的字之前. 而如果 User 按下
: 
: zhaow
: 
: 之后, Xcin 却不显示任何字,这是因为 pinyin.cin 中没有匹配 zhaow
: 的项目.但是,其实 Xcin 正可以根据这一线索,认定 w 开始了一个新的
: 匹配 phrase, 而 zhao 则可以自动上字了, 即输出 "zhao 空格" 的效果.
: (这一点,当然希望和下面的几点配合,以提高打字速度.)

这一点在实作上有逻辑上的困难,原因是 (以下随便举例):

	假设 pinyin.cin 最长的键码数如果达到 7, 则虽然 zhao 可以
	找到字, zhaow 找不到字,但说不定 zhaowi 或 zhaowau 都有
	字,如果程式一旦看到 zhaow 就认定要输出 zhao 并开始一个
	新的以 w 开头的字输入的话,就会造成 zhaowi 或 zhaowau 这
	两个字永远无法打进去了。

因此,在这里我们不容易找出一个通则,可以做到如您所说 more intellegent
的「先上字」功能。由于 gen_inp 模组是一个表格导向的输入法,意思是它必
须对所有可能的输入法一视同仁,并尽可能可以应付各种各样的表格,故它不
能对任何输入法做出假设。我不希望在 gen_inp 中加入如下的 code:

	if (strcmp(table_name, "pinyin") == 0) {
	    /* special actions for pinyin IM. */
	}

因为如果此例一开,恐怕程式会越写越难看。故如果要做到 more intellengent
for special IM, 我比较倾向写一个该 IM 的特别 module。

: 2.
: 如第 1 点所说的自动上字,其实可能很烦人,因为老是会打错,所以,我想
: 是不是 Xcin 开一个缓冲窗口,来接收自动上字,
: 
: +-------------------------------------------------------------+
: |                                                             |
: |   A.接收自动上字的窗口,组成一长句,再传给 XIM Client         |
: |                                                             |
: +-------------------------------------------------------------+
: |B.       |C.                                      |输入法标识|
: |英数 半角|           一码多字选择区               +----------+
: |         |                                        |D:菜单按钮|
: +-------------------------------------------------------------+
: 
: 这里先不说OverTheSpot,因为我好像印象中 OverTheSpot 并非每一个
: XIM Client 都能很好对付 ????? 也不说 GREQ, 因为不是这个意思.

OK, 这个可以列入考虑,我想等 2.5.2 release 后,在 2.5.3 开始来规画。
(2.5.2 series 的 bugs 真令人头痛 .... :-((((

: 2.1 我们不再显示 User 的按键, 因为我个人的印象,好象是没什么用啊 ???

您是指输出一个字后,在 xcin 视窗的右下角再印出您刚刚打出的键码吗?
其实这是很有用的,原因是在台湾有些人会习惯某些输入法,因为台湾人多
半不学拼音,打注音又很慢,故会有许多以「拆字」为导向的如仓颉、行列、
大易 .... 等等的输入法。但麻烦的是这类输入法的速度虽快,却可能会有
某些特别难拆的字忘了该怎么打,于是就会需要切换到其他输入法,如注音,
将该字打出来后,看看 xcin 最后回应的输入法拆码规则,藉此学习、或熟
悉一个输入法。

ps. xcin 最后所回应的拆码规则是可以与目前您所用的输入法不一样的,例
    如我想学拼音,但一时忘了 "我" 字怎么拼,于是我切到注音,打出 "我"
    字,而 xcin 最后可以回应 "我" 字的拼音码。

在台湾中研院 Open Source Workshop 2000 会议中,王佑中大大更建议可以
将此功能再扩充,也就是假设我忘了拼音中 A 字的拼法,但知道 B 字的拼法,
很巧的是我也知道在注音输入法中 A 字与 B 字的拼法一样,于是我只要用拼
音输入法打入 B 字, xcin 自动回应一系列注音中与 B 字同样字码的所有字,
这自然会包括 A 字,于是我就可以从中挑选出我要的 A 字。而不需要切换的
注音输入,靠打注音码来找出 A 字。这一点在非台湾地区的键盘会很有用,
原因是非台湾地区的键盘多半没有注音标示,这在打注音时会很困难。

: 2.2 窗口 A 要能接受 User 按 Left/Right 键,并且 随著光标移到某一字前,
: 相对应的 一码多字 选择区 自动更新. (而不是象 bimsphone 中的,还需要
: User 按 Up 键.) 然后, User 直接按 ,/. (</>) 就可进入下一组,因为这时
: User 在改汉字,不可能是要输入标点,(老是要按 Shift 太累了.)

OK, 可以列入考虑。

: 2.3 窗口 D 可以打开菜单,选则,如南方音支持,(l/n,ing/in,eng/en),或
: 其它的,如配置 ~/.xcin/xcinrc 等.

以后一定需要加入 menu 的,除了切换输入法以外,同时还要有 encoding 输
出选择。未来 xcin 要支援多 locale 多 encoding, 例如我现在用 Big5, 但
如果我需要时我可以将输出改成 GB, 但我的 xcin 视窗仍然维持在 Big5, 故
我不需要去熟悉 GB 的输入法,也不用再另外启动一个 xcin, 就可以做 GB
输出。

: 3
: 建立 ~/.xcin 目录,存放根据用户的使用频度自动 改动排序的 添加词组的
: pinyin.tab 等等 .tab/.cin 文件.

本来 xcin 发展之初,程式一启动时就会自动在用户的 $HOME 下建一个 .xcin/
目录,但有使用者反对,因为他们认为现在已有太多软体在 $HOME 下建立隐藏
档或隐藏目录了,看起来乱七八糟的,故在程式发展之初就将此自动功能取消了。
但 xcin 还是支援 $HOME/.xcin/ 的存在,因为我预期将来会有越来越多个人化
的输入法设定或资料出现,故这是不可或缺的。

事实上,我自己在使用时,一定会有一个 $HOME/.xcin/ 在那里。

: 4
: 最关键的一点啦,有那么一点 很复杂的 regular expression 匹配 Mechanism
: 的味道, 现在似乎没有 很复杂的匹配, 如果在 pinyin.cin 中找不到 一模一
: 样的,就放弃了,这实在很影响打字速度,
: 
: ..... 开始晕了... 为什么写到最关键的地方就要晕呢... ;-))
: 为什么不走 bimsphone 的模块,而非要在 gen_inp 上弄呢? 因为
: 我不懂啊! ;-)) 另外,这里的东东,似乎可适合所有的 .cin 输入法
: 啊 ???

如同我所说的,匹配的 Mechanism 必须要严紧定义,尽可能适合所有可能的状
况,如此才不会造成某些输入法的「权益」被牺牲掉了。我当然赞成 gen_inp
可以重定匹配的规则,但如果说一时间找不到可以改善拼音系列输入法打字速
度、而且不牺牲其他输入法的规则的话,我会倾向来写一个拼音系列「专属」
的 module, 这样程式反而可以写得更漂亮,功能更多 :-))

顺便提一下 bimsphone 的定位。 bimsphone 是以 libtabe/libbims 做为猜字
引擎,可以做到根据您输入词汇自动挑出正确的字。它的定位是用在同样的字
码,但重复字相当多的情况,最典型的就是注音输入法,也许拼音也是。因为
重复字很多,选起来很累,故希望可藉此提升输入的速度。

然而,这个机制就可能不适合大陆或香港地区朋友使用了,原因是它猜字的原
则是根据您输入的词汇为主,而它的词汇资料库用的正是台湾地区的词汇,所
以猜出来的字词多半都是台湾地区的惯用语。再者, libtabe/libbims 在设
计之初就是以「注音」做为判断核心,而后来所加入的拼音部分,其实只是将
拼音码转成注音码,输入 libtabe/libbims 后再调出结果,并将结果再转回
拼音码输出。由此可见,它真的是相当针对台湾地区使用者而设计的。

T.H.Hsieh

-- 
| This message was re-posted from debian-chinese@lists.debian.org
| and converted from big5 to gb2312 by an automatic gateway.



Reply to: