[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



Reply to: