行列輸入法 (Array30) 使用心得回報

137 views
Skip to first unread message

coolcd

unread,
Jul 18, 2010, 12:33:38 PM7/18/10
to vimim
經過一年多,再來測試。 :)
謝謝 Sean 持續費心開發!

整理一些使用心得給您參考:

1. 出現選字的選單時,如果選單超出文件範圍,選單無法正常顯示。在文件的末幾行輸入字時,最容易出現這個 bug。
2. 出現選字的選單時,只能使用 Space 上字,無法使用 Enter 無法上字。
3. 出現選字的選單時,如果需要翻頁,無法按 Space 換頁,必需按 PageDown/PageUp 換頁,這會強迫使用者移開手指原本位置,
大幅減低輸入效率。
4. 輸入速度較快時,英文無法替換為相對應的中文。
5. 許多中文字的輸入有問題,如:好(wgf)、行(.aad)、法(crx)、南(fjif)、灘(crzy)、新(yvo)……
6. 行列輸入法中,有簡碼的設計,但目前的 VimIM 似乎不支援。如:輸入「入」,在正常的行列輸入法中,按 k2 即可,但在 VimIM,必
需按 k<Space>2 。
http://www.array.com.tw/class/class2.htm#class10

如果 Sean 您使用中文回覆有困難,用英文也 ok,小弟英文閱讀能力雖不甚佳,但一般簡單的用語應該還看得懂。

vimim

unread,
Jul 18, 2010, 2:34:04 PM7/18/10
to vimim
> 1. 出現選字的選單時,如果選單超出文件範圍,選單無法正常顯示。在文件的末幾行輸入字時,最容易出現這個 bug。

This seems not relating to VimIM. If it is bug, it is from Vim
Omni feature. Let's see if it can be fixed in Vim 7.3.

> 2. 出現選字的選單時,只能使用 Space 上字,無法使用 Enter 無法上字。

This is easy. We only need clear requirements.
It only involves definition of <Space> and <Enter>.
My impression is that <Enter> is used in Taiwan to 上字?

> 3. 出現選字的選單時,如果需要翻頁,無法按 Space 換頁,必需按 PageDown/PageUp 換頁,這會強迫使用者移開手指原本位置,大幅減低輸入效率。

Because <Space> is used for 上字, 翻頁 is done by Vim Omni
internal feature: <PageDown/PageUp>.

Actually it is easy to define. I used comma/period myself to do
<PageDown/PageUp>.

Again, it is easy to define key binding in Vim.

> 4. 輸入速度較快時,英文無法替換為相對應的中文。

This might be a generic VimIM issue. One thing we can do is to
minimize menu choices for some input methods.

For PinYin, I need lots of choices because I am not at PinYin
myself. It seems something simple from coding point of view.
Let me try in next version with an option.

> 5. 許多中文字的輸入有問題,如:好(wgf)、行(.aad)、法(crx)、南(fjif)、灘(crzy)、新(yvo)……

Is it 词库 issue? ".aad" might be VimIM issue. Let me find a good
time to test later.

> 6. 行列輸入法中,有簡碼的設計,但目前的 VimIM 似乎不支援。如:
> 輸入「入」,在正常的行列輸入法中,按 k2 即可,但在 VimIM,必需
> 按 k<Space>2 。http://www.array.com.tw/class/class2.htm#class10

VimIM 行列輸入法 has no intelligent feature built-in. Everything
is from 词库. When number is used, we may not have too many
choices, because number is used to pick candidate.

We can only have one definition at one time for keystroke.

I might miss your point here?

> 如果 Sean 您使用中文回覆有困難,用英文也 ok,小弟英文閱讀能力
> 雖不甚佳,但一般簡單的用語應該還看得懂。

其实,用英文有点怪怪的,因为VimIM号称中文输入法。不过,讨论
技术问题,我用英文稍为快一点。望谅解。

Sean

coolcd

unread,
Jul 18, 2010, 9:41:27 PM7/18/10
to vimim
> > 2. 出現選字的選單時,只能使用 Space 上字,無法使用 Enter 無法上字。
>
> This is easy. We only need clear requirements.
> It only involves definition of <Space> and <Enter>.
> My impression is that <Enter> is used in Taiwan to 上字?

其實如果要完全符合行列輸入法的規範,VimIM 可能必需針對行列輸入法作一些處理。

首先,行列是隨打即顯示選字選單,這與 VimIM 必需按 <Space> 才能出現選字選單有很大區別,後面第六點,也是這個問題所導致。

其次,行列輸入法上字的方式有兩種
1. 輸入選字選單的數字來上字
2. 按一次或兩次 <Space> (第一次代表拆碼完成,若無重覆字,就會直接上字;若有重覆字,會顯示選字選單,若再按一次 <Space>,送
出選字選單中的第一個字,即等於按數字鍵1)

比較特殊的還有 w1、w2……w0 符號輸入的部分,這每一組符號都超過一頁,需要翻頁,在此行列是用 <Space> 來翻頁,用數字來選字,而且
數字永遠是 1,2,3,4,5,6,7,8,9,0,不會超過 10。

真正要支援行列,必需研讀行列的規格書。
http://www.array.com.tw/BOX/porting.exe

我不確定您是否願意為行列花費這麼多心力,所以只就一般使用慣例,建議可以用 Enter 來上字,讓選字比較 user friendly 一點。通
常,如果游標可以在選字選單中移動,我直覺會去用 Enter 上字。

當然,這與真正行列的規格是不符的,如果可以的話,我還是希望完全按照行列的規格書來處理,只是這可能需要花費您較多心力。


> > 3. 出現選字的選單時,如果需要翻頁,無法按 Space 換頁,必需按 PageDown/PageUp 換頁,這會強迫使用者移開手指原本位置,大幅減低輸入效率。
>
> Because <Space> is used for 上字, 翻頁 is done by Vim Omni
> internal feature:  <PageDown/PageUp>.
>
> Actually it is easy to define. I used comma/period myself to do
> <PageDown/PageUp>.
>
> Again, it is easy to define key binding in Vim.

這也與行列的規格有關。

通常行列不需要換頁,只有在符號輸入時才需要換頁,但現在的選字選單,與一般的行列輸入法頗有出入,字序不同,也常常需要換頁,若要從根本改起,可能也
是要針對行列輸入法處理。

> > 6. 行列輸入法中,有簡碼的設計,但目前的 VimIM 似乎不支援。如:
> > 輸入「入」,在正常的行列輸入法中,按 k2 即可,但在 VimIM,必需
> > 按 k<Space>2 。http://www.array.com.tw/class/class2.htm#class10
>
> VimIM  行列輸入法 has no intelligent feature built-in. Everything
> is from 词库.   When number is used, we may not have too many
> choices, because number is used to pick candidate.
>
> We can only have one definition at one time for keystroke.
>
> I might miss your point here?
>

行列的簡碼該如何 parsing,在規格書中有定義,以下引自行列規格書。
-------------------------------
【按第一個字根鍵】...一級簡碼請參考 ARRAYHW.TXT 檔案的說明

行列輸入法有一級簡碼字,當User按下第一個字根鍵時,立即要到簡碼檔將該鍵的10個簡碼字抓出,顯示在螢幕的最底行。
如果這時User直接按數字鍵選字,就直接把所選對應的字送上。
如果User是按空白鍵,就去主對照表(ARRAY30.TAB) 搜尋剛好是這個單鍵的字,如果沒有重複,就直接上字。
如果有重複,就beep一聲,提醒User選字。
在有重複字待選的狀態下,再加按空白鍵等於按數字鍵1,送上第1個字。
如果不選繼續下一個字的輸入,就送上第一個字。

【按第二個字根鍵】...[二級簡碼請參考(ARRAYHW.TXT)檔案的說明]

行列輸入法有二級簡碼,當User按下第二個字根鍵時,就到簡碼的對照表,去把對應這兩鍵開頭的二級簡碼字找出來,依序顯示在螢幕底行。
如果這時User直接按數字鍵選字,就直接把所選對應的字送上。
如果User是按空白鍵,就去主對照表搜尋剛好是這兩鍵的字。
其餘處理同前所述。

【按第三個字根鍵】

如果User接下來繼續按第三個字根鍵,那麼就將剛好符合這三鍵的字找出,顯示在螢幕底行,讓User可以「預視」。如果這時User直接按數字選
鍵,就直接把所對應的字送上(這種未按空白鍵即可將重複字選上的功能叫作「預選」) 。
其餘處理同前所述。

【按第四個字根鍵】

如果User接下來繼續按第四個字根鍵,那麼就將剛好符合這四鍵的字找出,先顯示在螢幕下方讓使用者「預視」及「預選」。
當使用者按了空白鍵,沒有重複就將字送上,有重複就BEEP提醒User選字,
在有重複字待選的情況下,再加按空白鍵等於按數字鍵1,送上第1個字。
如果不選繼續下一個字的輸入,就送上第一個字。

因為在WINDOWS NT版及UNIX版的系統上,其罕用字集的字,行列碼是要按五個鍵,所以按四個鍵的字,仍要按空白鍵才上字。另外因為行列有
詞彙輸入,所以按四個之鍵之後,如果按空白鍵就確定是把字送上,如果按 [']詞鍵,那麼就要去搜尋詞庫檔了,後面有「行列詞彙的輸入」專節說明。
-------------------------------

vimim

unread,
Jul 19, 2010, 1:33:27 AM7/19/10
to vimim
经你这一点破,顺势搜索一下程式,终于弄明白VimIM行列輸入法的前世今生。

#1. VimIM行列輸入法的最初版本根本不能用。
#2. VimIM行列輸入法的当前版本至多归于“好歹可以上字”原始目标。

The main reason is that 行列輸入法 uses several non-alphabet characters.
:call add(key_keycode, ['array30', "[0-9a-z.,;/]"])

Most VimIM 中文输入法使用

| :let g:vimim_static_input_style=0 (缺省)
| ㈠【经典动态模式】就是输入过程中一直出选择项目,
| 或者说,每敲一个字母就蹦出一个菜单。

However, I chose 行列輸入法 as well as 注音輸入法 to use this as default:

| :let g:vimim_static_input_style=1
| ㈡【经典静态模式】就是输入完后按空格出选择项目。
| 支持连续上字。
|

What you want for 行列輸入法 is 【经典动态模式】.

I believe Vim scripting can implement what you want. However,
VimIM only uses 退而求其次的方案 for now。

The best Vim 行列輸入法 has to come from someone who is good at
both 行列輸入法 and Vim scripting.

VimIM行列輸入法的当前版本权且用于抛砖引玉。

Nevertheless, I will try to improve it whenever possible.

Reply all
Reply to author
Forward
0 new messages