cht電腦資訊gcingcin Windows
adm Find login register

[Bug] %selkey 用 g 會產生亂碼

oversky
1 [Bug] %selkey 用 g 會產生亂碼
Promote 0 Bookmark 02009-11-19quote  

OS: win32 xp sp2

gcin: 1.45

我將 ar30.cin 前面 %selkey 1234567890 改成 %selkey asdfghjkl;,在 windows 下轉成 gtab  檔後執行。行列按 tg 本應出現下面第一張圖,結果出現如第二張圖的錯誤字碼。後來發現 %selkey 中的 g 改回 5 或 t ,就不會有亂碼。%selkey 改成 gasdfhjkl; 也會有亂碼。可能 %selkey 只要有 g 就會產生。cin 檔已轉成 dos 格式。

edited: 2
eliu
2
Promote 0 Bookmark 02009-11-19quote  
oversky
3
Promote 0 Bookmark 02009-11-19quote  
剛剛又反安裝、重新下載、再安裝一次,還是有同樣的錯誤字碼發生。
coolcd
4
Promote 0 Bookmark 02009-11-19quote  

selkey 必需避開可能是碼位的按鍵,否則,即使程式不出問題,輸入時拆碼可能也會出問題。

譬如:「強」是拆成 tgx/,也可拆成tg2,如果是用 tg2 這種拆法,又改用 asdfghjkl; 選字,tg2 就會變成 tgs,當你打 s 的時候,gcin 怎麼知道 s 是拆碼的一部分,還是選字鍵呢?如果 gcin 把 s 當成拆碼,那麼「強」就不可用 tg2 這種拆法了。如果 gcin 把 s 當成選字鍵,那麼「阸」的拆碼是「tgsi」或「tgs8」,要怎麼輸入?當你打到 tgs 的時候就會出字了。

caleb
5
Promote 1 Bookmark 12009-11-20quote  

coolcd
selkey 必需避開可能是碼位的按鍵,否則,即使程式不出問題,輸入時拆碼可能也會出問題。

完全不需要避開。

CJKV 輸入法都有 endkey (以中文來說最常見是 space), 以 endkey 為分界,之前是拆碼之後是選字,完全不會搞混。

gcin 預設支援「預覽候選字」,所以「常常不需要」endkey 就可以直接選字,但這並不影響原本的 endkey-based design。

最常見的範例是注音輸入法,125890 既是拆碼也是選字鍵,3467 同時是「拆碼」 「endkey」「選字鍵」三位一體,使用上完全沒有困難。

我已經用「gcin + 注音gtab」兩、三年了(用 gtab 好處是可以惡搞很多方便的東西,比 gcin 內建注音方便),也一直啟用「預覽候選字」,非常好用。 

coolcd
6
Promote 0 Bookmark 02009-11-20quote  
caleb

 

完全不需要避開。

CJKV 輸入法都有 endkey (以中文來說最常見是 space), 以 endkey 為分界,之前是拆碼之後是選字,完全不會搞混。

gcin 預設支援「預覽候選字」,所以「常常不需要」endkey 就可以直接選字,但這並不影響原本的 endkey-based design。

最常見的範例是注音輸入法,125890 既是拆碼也是選字鍵,3467 同時是「拆碼」 「endkey」「選字鍵」三位一體,使用上完全沒有困難。

我已經用「gcin + 注音gtab」兩、三年了(用 gtab 好處是可以惡搞很多方便的東西,比 gcin 內建注音方便),也一直啟用「預覽候選字」,非常好用。 

不好意思先前沒想清楚,誤導人了。應該不是 selkey 要避開碼位,而是行列的情形比較特殊,使用一級、二級簡碼時,必需可以輸入簡碼後,不再按其他按鍵,就直接用選字鍵出字,也就是,以一般情形來說,1234567890 是 selkey,也是 endkey,如果把 selkey 改成 asdfghjkl;,這些鍵一方面必需是 endkey,但另一方面又是行列拆碼的碼位,如果剛好位於拆碼中間、而不是最後一個拆碼,就會出問題。不知這樣想有沒錯?

edited: 1
oversky
7
Promote 0 Bookmark 02009-11-20quote  
強  tg2 的按法目前是編在 %quick section 內,編碼為 TG 弓強,2 是由系統處理。我目前的做法是在 %chardef section 內再直接加上 tg2 強 ,這樣就可保留簡碼的用法了。我個人是比較懶的去背簡碼,主要是按全部的碼+空白再去選字,所以用 asdf 比較省力。
oversky
8
Promote 0 Bookmark 02009-11-20quote  
剛剛在 Ubuntu 9.10 下再試一次,還是會有錯誤。請問 eLiu 兄是用我附件內的 gtab 檔測的嗎?
eliu
9
Promote 0 Bookmark 02009-11-20quote  

oversky
請問 eLiu 兄是用我附件內的 gtab 檔測的嗎?

當然不是,是用你給的 asdf ar30.cin 經最新的 gcin2tab 產生出來的 .gtab

edited: 1
oversky
10
Promote 0 Bookmark 02009-11-20quote  

可否請 eliu 兄和我附件內的 gtab 檔做一下 binary compare?

我的 gcin2tab 大小是 24576 Bytes. md5 是

80380670fb9d237984164a33c276b03c *gcin2tab.exe

執行後出現

Enter table file name [.cin] : ar30.cin
char def
phrase count:50

Linux 下的訊息好像比較多。

eliu
11
Promote 0 Bookmark 02009-11-20quote  
oversky
我的 gcin2tab 大小是 24576 Bytes. md5 是

80380670fb9d237984164a33c276b03c *gcin2tab.exe

這是對的,我是用你

\bad\ar30.cin 產生的 .gtab

oversky
12
Promote 0 Bookmark 02009-11-20quote  

可能我對問題沒有描述清楚,讓 eliu 兄誤解了。

good/ar30.cin 和 bad/ar30.cin 只有在 %selkey由 5 改成 g,

其它的地方都是一樣的。

good/ar30.cin  %selkey asdf5hjkl;

 bad/ar30.cin %selkey asdfghjkl;

可是按下 tg 後出現的待選字卻由 

a 弓 s 強 d 費

變成

a 弓 s 阸 d 刜

為什麼只改一個 %selkey 會讓待選字出現不同的結果?

本來應該出現 %quick 裏面的 TG 弓強費疆弛弦□弱弧彈

卻好像被 %chardef 裏面的待選字蓋掉。

因為我在 Ubuntu 下試也是這樣,所以我想是 gcin 對 %quick 和 %selkey 的處理上的問題,

而不是 gcin2tab 的問題。

比較 good/ar30.gtab 和 bad/ar30.gtab, 兩個只差一個 byte 而已( 5-> g) 。

edited: 5
oversky
13
Promote 0 Bookmark 02009-11-20quote  

可否請 eliu 兄講解一下 gcin 是如何處理待選字的嗎?

1. %chardef 和 %quick 的優先順位誰高?

2. 如果沒有 %quick ,待選字是如何產生的?

以 bad/ar30.cin 來說,

tg + %selkey s 會對應到 tgs 阸 

但是 tg + %selkey d 卻出現 tgee 刜 ,

而不是出現 tgd    引 和 tgd    弔 。

edited: 1
eliu
14
Promote 0 Bookmark 02009-11-21quote  

就算真的有 bug,asdf5hjkl; 是很奇怪的按鍵方式,沒有人會這樣用。

很久以前學過行列,行列需要選字的機會其實不是很高,移到 asdf 其實不會比較好用。

edited: 2
oversky
15
Promote 0 Bookmark 02009-11-21quote  

asdf5hjkl; 只是要測試那裏有問題,並不是真要這樣子用。

eLiu 兄沒空處理的話,我還是先用 1234567890 好了。

edited: 1

cht電腦資訊gcingcin Windows
adm Find login register
views:47467