作者cnoize (泥巴星球Server)
看板IME
標題[xx] 快速記憶機器人腦輸入法(01)
時間Wed Apr 18 19:51:40 2007
由於內容沒有條理, 本系列文章為草稿.
在此為各位讀者介紹一個史上最多字根(字塊)的輸入法,
它的名字是: "快速記憶機器人腦輸入法", 所使用的編碼可以稱為
"千萬字塊碼".
類型:全形
碼鍵:標準文字 26 個 [a-z]{3}, 選字鍵 " 1234567890-=",
符號及控制鍵 "`[]\;',./", 三字詞 "[a-z]{3};",
輸出鍵為 選字鍵 加 ",."(已輸入超過三碼時)
授權: 免費使用.
進度: 編碼中, 目前 2187 個字根, 15681 個字.
這不是給平凡人使用的輸入法.
將打字比賽當作是休閒活動的電腦重度使用者或許可以一試,
也可以用相似的觀念做出較實用、適合自己的輸入法.
這個輸入法的字根大約從 3500 個到 100000 個之間.
字根多的原因是因為編碼範圍大, 作者會盡量將所能找到的電腦文字編入.
受限於規則, 字根數量增加得很快.
目前看到的文字數量如下:
今昔文字鏡 漢字 128573字
Unicode 累計的 74480 字.
CCCII 75684 字
CNS11643 全字庫 92690 碼
四庫全書逾82000字(造字約 1 萬字)
香港常用中文字體 約 4900 字.
佛典造字 數量不明.
不過這個輸入法的重點不是那些很少用到的不常用字,
而是分為四組的標準字集. 標準字集內部不重碼,
用補碼將每個字補成固定三碼. 三字詞的簡碼預設為加上 ";".
預設的標準模式, 標準字集 = 標準字集1 (可用熱鍵切換)
(切換時可以一起切換簡碼區).
標準字集1 = big5 + gb2312 + jis0208
標準字集2 = GBK/2 漢字6763個 + GBK/3 漢字6080個 + 其他常用字.
標準字集3 = jisx 0208 + jisx 0212 + ...
標準字集4 = BIG5HKSCS 為主
作者本人常用的標準字集1
big5 約 13053 (再加 7 個倚天字), 在 unicode 中, gb2312
約有 6763 字, 去掉與 big5 同位置的部分,還有 2381 個.
jisx 0208 約有 6356 字, 去掉與 big5 & gb2312 同位置的部分,
還有 848 字.
13060+2381+848 = 16289 字.
26*26*26 = 17576 字, 所以每個字都用三鍵, 可以做到不重碼.
(big5 + gb2312 + jisx 0208 的文字) (符號另外處理)
在標準模式是標準字集1時, 輸入三鍵 + "2" 是輸出 GBK 字元,
+ "3" 輸出 JIS 字元, + "4" 輸出 BIG5HKSCS 字元.
輸入三鍵 + "1" 不變, 輸出標準字集1字元.
標準字集1 ~ 4 之間, 同形的字鍵位相同.
不常用字選字區 [a-z]{3} + "567890-=", 空間 26*26*26*8 =
140608.
三鍵 + "5" 越文漢字、喃字
三鍵 + "9" 韓文漢字的同形異音字. (編碼不同)
(參考 CJKV 933 頁, Duplicate Hanja in KS X 1001:1992)
讓標準字集內部不重碼的技巧有三種:
1. 補碼, 以尾碼為主, 容易造成重碼的狀況就補首碼.
2. 增加字根, 將其他輸入法重碼的字形用不同的字根分開.
U+54E1: 員 (貝) (八) # 員 (b5)
U+5504 : 口 貝 (八) # 唄 (b5)
3. 一個字根可以對應到多鍵.
例如這個不常用字 "乜", 可以依需求, 找一個空位,
隨意編成 "EXS".
由於這是一個不常用字, 所以可以不必學.
不過對於有需求的人而言, 不需要選字, 整個系統仍然無重碼.
U+4E5C : 乜 EXS # 乜 (b5)
4. 因此標準輸入方式是四鍵出字. (包含空白或 1 ~ 0-= 選字鍵)
用獨有的無智能整句方式輸入時, 平均約三鍵出字.
特色:
1. 無省略字形, 字形損耗率為零:
一般的拆字輸入法, 常常採用 "首、次、三、尾" 的方式取碼, 我認為
這樣子不合理, 會造成訊息的損失, 所以用相反的方法處理, 字根一定
可以組成完整的文字.
2. 用可見字組描述字根:
在每一個獨立支援的字集, 都可以用字集內的字元描述字根.
如此就不必造字, 也可以描述字根, 方便使用者學習.
U+897B : 左衣 攀 (手) # 襻 (b5)
U+7126 : 隹 下火 (點) # 焦 (b5)
這個設計可以用電腦程式語言的機器碼和組合語言來說明.
[a-z]{3} 的鍵位是機器碼, 數量達到 3500 個以上的字根(字塊),
是組合語言的助憶碼.
直接將字塊連結到鍵位的原因是雖然這樣記憶量大, 但從學習到使用
的時間短, 就如同使用九九乘法表計算一樣.
一般的輸入法就像是用 C 語言寫程式, 再運用一些簡單的規則在腦中
轉成機械碼, 雖然整個語言的規則和關鍵字(保留字)(字根)不多, 學習
容易, 但是使用時要花一點時間拆字、轉成鍵位.
3. 拆字時不會有困難:
所有的字形都包含在字根表之中了, 拆字一定不會有問題. 不會的字
只需查表即可.
4. 沒有容錯編碼.
一字三碼, 三碼一字.
5. 如果正式版本編碼錯誤, 則增加注解、不予修正.
改版的全新版本, 所有鍵位對應會全部改變.
6. 簡碼區優先放詞.
因此標準的簡碼數量為:
26 ([a-z] 加一個空白.)
26 * 10 = 260 ([a-z] 加 1 ~ 0 選字.)
26 * 26 = 676 ([a-z] 兩個鍵加一個空白.)
26 * 26 * 10 = 6760 ([a-z] 兩個鍵加 1 ~ 0 選字.)
例如 "s " => "所以", "u " => 於是, "y " => "因為"
簡碼區優先輸出詞語的輸入法不多.
7. 在 1997 年時的設計是只有標準字集1. 當時有一種單字比賽模式
(三鍵輸出, 免按空白鍵)的想法, 不過這個模式無法跟詞結合.
(例如: 如果要四鍵產生四字詞, 就不能三鍵上屏).
最近有新的修正想法, 這應該也是目前世面上的輸入法所無的特殊設計.
稱為 "無智能的整句輸入", 包含修正碼的設計. 設計的思路是
"免按空白鍵"、"可以用backspace或修正碼修正"、"可以使用超過三鍵的詞".
輸出鍵是 " 1234567890-="(選字鍵) ",."(常用標點, 需要已輸入三碼,
未達三碼是符號或使用者自訂簡碼.)
程式的設計很簡單: 選擇最長的序列斷字斷詞. 有提示區顯示目前狀態,
按輸出鍵時輸出.
例如編碼是:
. 。 # 句號
, , # 逗號
abc AA # 字
abcde; TTUUIIDDRRLL # 詞
abcde;1 SSTTUUVVWWXXYYZZ # 詞, 選字鍵 "1"
"abcde;1" => SSTTUUVVWWXXYYZZ # "abcde;" 選 1, 輸出八字詞.
"abc de;1" => AA(輸出)BBCCDDEE # abc 輸出字 AA, "de;" 選 1 輸出四字詞
"abcde;/a1" => AABBCCDDEE # /a 修正碼, 讓程式在 "abc" 就輸出字,
而不選取最長詞 "SSTTUUVVWWXXYYZZ"
"abcde;" 提示區顯示 "TTUUIIDDRRLL", 但不輸出, 按 " ,." 時才輸出.
",." 分別再多輸出逗號、句號。 (已有三鍵輸入時 ",." 的單鍵出字技巧).
所以短句: "開門見山。" 可以用五鍵輸入: "odsm." 一鍵一字.
8. 常用詞、常用字會依據雙手按鍵的均衡度排列.
由於支援的字數過多, 這個輸入法在這方面不容易做得好.
9. 學習方式: 查表, 參閱字塊聯想到鍵位的說明.
左衣: 衣服 (C)loth
攀: 攀爬 (C)limb
手: 手 (H)and
還右: 歸還 (R)eturn
隹: 隹, 尾巴短的鳥 (B)ird
下火: 火 (F)ire
點: 點 (D)ot
U+897B : 左衣 攀 (手) C C H # 襻 (b5)
U+7126 : 隹 下火 (點) B F D # 焦 (b5)
未完,待續.
請參考作者的輸入法網頁:
http://info.sayya.org/~cnoize/im/
:liame (gmail)
moc.liamg ta sohtne
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 202.145.82.143