本人已不在此站活動
joined:
2007-09-19 posted:
4946 promoted: 325 bookmarked: 206 歸隱山林 | 1 | subject:
noseeing-12 |
1
2 | 2008-10-19 | quote | | |
http://edt1023.sayya.org/gcin/noseeing-12.tar.gz
2008.10.19 noseeing-12
- 加入 ptt 補破網 v1.3 成果(只納入未重複者)。
- 加入中醫藥罕用字(第一階段)。
- 初步完成廣東方言字。
- 整理好的詞庫由於會影響一般正常輸入,暫時刪除。
如果是使用 gcin 所附的 noseeeing-inst 這個 script,無需做任何更動,再次執行 noseeing-inst 一次即可。新安裝 gcin 的話,也是直接執行 noseeing-inst 即可,因為目前 noseeing-12.tar.gz 和 noseeing.tar.gz 是互為連結。
|
本人已不在此站活動
joined:
2007-09-19 posted:
4946 promoted: 325 bookmarked: 206 歸隱山林 |
edited: 2
|
本人已不在此站活動
joined:
2007-09-19 posted:
4946 promoted: 325 bookmarked: 206 歸隱山林 | noseeing 在
http://cle.linux.org.tw/~edt1023/gcin-bk/noseeing-12.tar.gz → 以後不再維護,放到 CLE 關門為止
http://cle.linux.org.tw/~edt1023/gcin-bk/noseeadd.rb.gz → 線上加詞功能(需要 ruby)
edited: 2
|
usher joined:
2009-02-05 posted:
7 promoted: bookmarked: 0
| 5 | subject:
太感謝了 |
0
0 | 2011-06-20 | quote | | |
|
hoican joined:
2011-09-12 posted:
5 promoted: bookmarked:
| 我是一个内地学生,非常喜欢呒虾米的字根编码规则,不知道向你们要码表这要求过不过分,如果不行的话就算了。
|
本人已不在此站活動
joined:
2007-09-19 posted:
4946 promoted: 325 bookmarked: 206 歸隱山林 | hoican | 我是一个内地学生,非常喜欢呒虾米的字根编码规则,不知道向你们要码表这要求过不过分,如果不行的话就算了。 |
上面下載地點下載的 tarball 裡頭就有碼表。
|
hoican joined:
2011-09-12 posted:
5 promoted: bookmarked:
| 你们这边的好多网站我都访问不了,那个我昨天试过,今天也还是一样打不开
|
hoican joined:
2011-09-12 posted:
5 promoted: bookmarked:
|
|
本人已不在此站活動
joined:
2007-09-19 posted:
4946 promoted: 325 bookmarked: 206 歸隱山林 | cle 有人數限制,多試幾次或翻牆試看看,這裡不提供 email 個別服務。
|
hoican joined:
2011-09-12 posted:
5 promoted: bookmarked:
| 我就是翻墙才能上这网站,不然上不了。
试过好多次了都下不了。还有没别的下载地方呢请问。
|
本人已不在此站活動
joined:
2007-09-19 posted:
4946 promoted: 325 bookmarked: 206 歸隱山林 | 奇怪,我下載是正常的:
http://cle.linux.org.tw/~edt1023/gcin-bk/noseeing-12.tar.gz
Anyway,請見底下附件。
edited: 1
|
hoican joined:
2011-09-12 posted:
5 promoted: bookmarked:
| 下到了。多谢哈 现在用你的作参考 我要自己写份简体版的出来,加油
|
guest | 找很久的Liu.cinm,希望這裡有…thanks
|
yawnp0426 joined:
2009-11-19 posted:
67 promoted: 3 bookmarked: 3
| 本人已不在此站活動 |
在這種情形下,整理者並沒有完整的著作權,他無法依據 copyright holder 的地位來聲稱自己有全部的著作權,也無法訂定 license,因為要完整著作權的 copyright holder 才有權限去訂定 license。
|
任何事都要追溯源頭,本人提供 LIU 5.0 DOS 版所附加的 Unix 嘸蝦米輸入法部份內容,著作權並未表達出全部擁有的權力,因此【本不已不在此站活動】的論述是正確的。
?? |
######################################################################### # Boshiamy Input Method 5.0. All rights reserved. 8/1/1997 Stingray ######################################################################### %ename liu5 %prompt 無蝦米 %selkey 1234567890 %dupsel 9 %keyname begin a A b B c C d D e E f F g G h H i I j J k K l L m M n N o O p P q Q r R s S t T u U v V w W x X y Y z Z , , . . ' ’ [ 〔 ] 〔 %keyname end %quick begin %quick end %sel1st begin %sel1st end a 對 aa 寸 aaa 鑫 aaa 龘 aab 鎯 aadb 鎯 aadk 鋃 aado 鎗
|
edited: 2
|
yawnp0426 joined:
2009-11-19 posted:
67 promoted: 3 bookmarked: 3
| 另外在 LIU 5.0 產品說明書上有
【我們亦非常歡迎中文環境的開發廠商,除了支援嘸蝦米輸入法liubig5.tab 的規格外,亦支援 liu.box 加字、加詞的功能,這部分的規格,請參閱書 本中「軟體安裝與使用說明」之「加字、加詞」部分。】
等字眼,更能證明其著作權已完全不屬於該公司所擁有。
====================================================================== §嘸蝦米輸入法技術手冊 ====================================================================== <目錄> 一、嘸蝦米輸入法 5.0 版參考檔 liubig5.tab 規格使用說明 二、如何在應用程式中切換到嘸蝦米輸入法 ====================================================================== 一、嘸蝦米輸入法 5.0 版參考檔 liubig5.tab 規格使用說明 ====================================================================== <1.1> 宗旨 由於使用者不斷的支持與愛護,嘸蝦米輸入法已廣為在社會的各行各業 、各階層中被大家使用。為了感謝使用者的支持,我們在以後嘸蝦米輸入法 的版本中,放入了嘸蝦米輸入法的參考檔,這是一個編碼過的對照表,用以 對應嘸蝦米輸入的字根和其對應的中文字。我們將此參考檔的格式公開,以 方便任何廠商或個人在不同的環境、不同的機器、不同的作業系統、或是不 同的應用程式中撰寫其介面程式以驅動嘸蝦米輸入法。要注意的是,本參考 檔的著作權屬於嘸蝦米輸入法的創作人,而使用權則屬於合法持有本參考檔 之使用者。合法持有者,除備用存檔及配合所使用環境之需要而修改,限於 該持有者自行使用外,其他一切權利均予保留。非經著作權利人正式授權, 嚴禁將此參考檔作任何型式之修改、翻拷、流傳、出租、出售、交換或透過 網路和其他一切對外界公佈其內容的行為。 因此,在不同的中文環境下,廠商、軟體公司或是個人皆可依循這個參 考檔的規格,撰寫對於此參考檔的驅動程式,並說明安裝的過程,以提供合 法持有此參考檔的使用者能使用嘸蝦米輸入法。由於我們希望使用者在不一 樣中文環境下使用嘸蝦米輸入法時,有「統一」的輸入習慣與「完全正確」 的字碼,以避免日後因錯誤所造成的不便,因此,當您要發行或流傳此驅動 程式之前,請務必讓嘸蝦米輸入法的創作人劉重次先生做「測試」,如果一 切無誤的話,本公司將會給予此產品「支援嘸蝦米輸入法 5.0版參考檔」的 「認證」。 ===================================================================== <1.2> 字根按鍵:嘸蝦米輸入法所使用的按鍵有 A - Z 等 26 個字母鍵,用來輸入中文。 ,. ' [ ] 等 5 個符號鍵,用來輸入符號。 Space 空白鍵,當有輸入字根時,用來下達組字命令。 ===================================================================== <1.3> 使用習慣: 1.在中文環境下,通常以 Ctrl-Shift或 Ctrl-Alt-9切換到嘸蝦米輸入法。 不過一般應用程式也可依自己的習慣,比如說以滑鼠或下拉式功能表等其 他方式切換。當切換至嘸蝦米輸入法的狀態時,請務必顯示其為「嘸蝦米 」,請勿以其他名稱替代。 2.在嘸蝦米輸入法的輸入狀態時,除了上述的 32個鍵,其他的輸入鍵一概 不處理,這些不處理的輸入鍵的反應即與「英數」的狀態下的反應一樣。 3.組合鍵如 Shift-、Ctrl-、Alt-、Ctrl-Alt-、也一概不處理。 4.當沒有輸入字根時 (即輸入法的 Input Buffer是空的時 ), Space鍵、 Backspace鍵與 ESC鍵也不處理。 5.當一有字根輸入時,嘸蝦米輸入法即根據目前已輸入的字根,立即從 liubig5.tab這個 table中尋找對應的中文字,如果找不到對應的字或對 應的字只有一個的話,狀態列只顯示目前已輸入的字根。如果對應的字不 只一個的話,狀態列除了顯示目前已輸入的字根外,也要以這樣的方式顯 示候選字: □ 1□ 2□ 3□ 4□... 比如說,當字根輸入 RWP且尚未按空白鍵時,RWP找到的對應字有三個, 即「范」、「萍」、「菠」,此時,狀態列應出現: RWP 范 1萍 2菠 接下來,如果按「空白鍵」,即輸出「范」字,如果按「 1鍵」即輸出「 萍」字,如果按「 2鍵」即輸出「菠」字,如果按其他字根鍵或 Backspace鍵,則再繼續依目前已輸入的字根組字。 6.已有字根輸入時,按了 Backspace鍵,則消去最後一個輸入的字根。記住 ,不要忘記「立即組字」。 7.已有字根輸入時,按了 ESC鍵,則消去所有輸入的字根,即清除 Input Buffer,回到原始狀態。 8.已有字根輸入時,如果按 Space鍵即下達輸出命令。此時程式便輸出第一 個找出的對應字,如果沒有找到對應的字,即清除 Input Buffer與狀態 列,嗶一聲並顯示「無此字」。 9.選字是輸入速度的瓶頸,因為「數目字鍵」不像 26英文字母好按,因此 嘸蝦米以加「輔選字根」V鍵來輔助,直接得到在 Table中第二順位的候 選字,舉例說:如「膏」字和「敲」在嘸蝦米輸入法的字根皆是 LONU, 當使用者鍵入 LONU並按 Space後,由於在 Table中排列的順序,必輸出 第一候選字「膏」,而第二候選字「敲」必須選字。在有重覆字的情況下 ,嘸蝦米是以字根加V直接輸出第二順位的候選字;上述的情況如使用者 直接鍵入 LONUV鍵並按 Space組字後,則直接得到「敲」字。嘸蝦米的字 根最多只有四個,只有在這種情況下會輸入第五個字根 V。又如「已」和 「己」字都是 FLL,但我們可以直接輸入 FLLV以得到「己」字。在程式 中,如何做到這個功能呢? 1. 當使用者輸入字根,按了 Space 鍵欲輸出字時。 2. 如果結果是沒有對應字的話,先檢查最後一個字根是不是V。 3. 如果不是V的話,嗶一聲並顯示「無此字」。 4. 如果是V的話,請把這最後一個V字根拿掉,再到 table 中重新尋 找對應字。 5. 如果沒有找到對應字、或只找到一個對應字的話,嗶一聲並顯示「 無此字」。 6. 如果找到兩個或以上的對應字時,請直接輸出第二個對應字。 10其他尚未提及的輸入習慣或形式,與其他一般現行的輸入法無異,詳細的 例子,可參考行易有限公司出版之嘸蝦米輸入法 5.0 版在倚天中文系統 與 Windows 3.1中文版操作的情形。 ===================================================================== <1.4> 字根排列與編碼: ┌───┬───┬───┐ ┌───┬───┬───┐ │字 根│十進位│二進位│ │字 根│十進位│二進位│ ├───┼───┼───┤ ├───┼───┼───┤ │SPACE │ 0 │00000 │ │ P │ 16 │10000 │ │ A │ 1 │00001 │ │ Q │ 17 │10001 │ │ B │ 2 │00010 │ │ R │ 18 │10010 │ │ C │ 3 │00011 │ │ S │ 19 │10011 │ │ D │ 4 │00100 │ │ T │ 20 │10100 │ │ E │ 5 │00101 │ │ U │ 21 │10101 │ │ F │ 6 │00110 │ │ V │ 22 │10110 │ │ G │ 7 │00111 │ │ W │ 23 │10111 │ │ H │ 8 │01000 │ │ X │ 24 │11000 │ │ I │ 9 │01001 │ │ Y │ 25 │11001 │ │ J │ 10 │01010 │ │ Z │ 26 │11010 │ │ K │ 11 │01011 │ │ , │ 27 │11011 │ │ L │ 12 │01100 │ │ . │ 28 │11100 │ │ M │ 13 │01101 │ │ ' │ 29 │11101 │ │ N │ 14 │01110 │ │ [ │ 30 │11110 │ │ O │ 15 │01111 │ │ ] │ 31 │11111 │ └───┴───┴───┘ └───┴───┴───┘ ===================================================================== <1.5> 參考檔格式與字的編碼: 參考檔最上面的 2048+2 bytes 為一個 Index table,各別指到前兩碼 字根對應在 Data table的開始位置。每一個位置為一個 2 bytes 無號整數 (unsigned integer, Intel格式 ),一共有 32*32個,即 1024個,加上最 後一個為 Data table的結束位置。 ┌──────┬────┬────┬ ┬────┬────┐ │SPACE-SPACE │SPACE-A │SPACE-B │....│SPACE-[ │SPACE-] │32*2 ├──────┼────┼────┼ ┼────┼────┤ │A - SPACE │A - A │A - B │....│A - [ │A - ] │32*2 ├──────┼────┼────┼ ┼────┼────┤ │B - SPACE │B - A │B - B │....│B - [ │B - ] │32*2 ├──────┼────┼────┼ ┼────┼────┤ │C - SPACE │C - A │C - B │....│C - [ │C - ] │32*2 ├──────┼────┼────┼ ┼────┼────┤ .......................................................... . ├──────┼────┼────┼ ┼────┼────┤ │[ - SPACE │[ - A │[ - B │....│[ - [ │[ - ] │32*2 ├──────┼────┼────┼ ┼────┼────┤ │] - SPACE │] - A │] - B │....│] - ] │] - ] │32*2 ├──────┼────┴────┴ ┴────┴────┘ │結束位置 END│ 1*2 └──────┘ 接下來即為 Data table,以 3 bytes為一個字的單位,字數目多少並 不固定,不過您可以從 Index table 的最後一個 integer 除以 3 算出。 位置 0 ┌──────────┐ │ │ 3 bytes = 24 bits 位置 3 ├──────────┤ │ │ 3 bytes 位置 6 ├──────────┤ │ │ 3 bytes 位置 9 ├──────────┤ │ │ 3 bytes 位置 12 ├──────────┤ │ │ 3 bytes 位置 15 ├──────────┤ │ │ 3 bytes 位置 18 ├──────────┤ . 位置 n . . │ │ ├──────────┤ │ │ 位置END └──────────┘ 在每個 24 bits中,前10個bits,分別以5 bits表第三碼,5 bits表第 四碼。後14個bits,則表示對應的中文字。這中文字已經編碼過: Big5碼 的高位元組範圍是 A1H ~ FEH 共 126個 8EH ~ A0H 81H ~ 8DH 低位元組範圍是 40H ~ 7EH 63個 共 157 個 A1H ~ FEH 94個 但我們所感興趣的範圍是 A140~ F9FE 共 13973個,於是便把這13973 個內碼依照順序編碼由 0~ 13972 以 14個bits來表示。 註】2 的14次方是 16384,所以足夠對 13973 個字作順序編碼。 這編碼過的 14 bits 如何轉換回 Big5 碼呢? 其實很簡單,只要將這 14 bits,前面先補上 2 bits的 0,使之變成 2 bytes的無號整數,再將此 無號整數除以 157 得商與餘數。 1.把商加上 A1H 即得到 Big-5 碼的高位元組。 2.如果餘數小於63,把餘數加上 40H 即得到 Big-5 碼的低位元組。如果餘 數大於或等於63,把餘數減去63加上 A1H 即得到 Big-5 碼的低位元組。 ===================================================================== <1.6>如何使用參考檔: 例如,當鍵入 OVFF 後, 首先,找到 OV 對應的開始與結束位置。 第一碼 O 是第15個字根, 第二碼 V 是第22個字根 INDEX 位置即為 15*32+22 = 502 第三碼 F 是第 6個字根,二進位是 00110,第四碼 F 的二進位也是 00110,第三、四碼共 10個 bits 是用來在 Data Table 中比對用的。 於是,我們先從 Index table 中取出第 502 個無號整數,假設是 offset1 ,即 OV 的開始位置,與下一個第 503 個無號整數假設是 offset2,即 OW 的開始位置,offset1 與 offset2 一定都是 3 的倍數。 如果 offset1 與 offset2 相等,則表示沒有 OV 開頭的字,就無此字啦! 不然這中間一定有 (offset2-offset1)/3 這麼多個 OV 開頭的字。因此, 我們就從 offset1 的位置一次取 3 bytes,並比對前 10 個 bits是不是後 兩碼 FF( 0011000110 )。如果比對相同,則取出此 3 bytes 後面的 14 bits,並做上述的轉換得到 2 Bytes 的 Big-5 內碼 E546 的「嘸」字。 不管比較是否相等,每次再繼續取下面的 3 bytes做比對,除非已到了 offset2,即以 OV 開頭的字都尋找過一遍了。 【註】嘸蝦米原則上最多四碼,在編碼到參考檔時,不足四碼的以Space替 代,也就是以「零」表示,舉例說: 1.輸入 A 時,是以 A SPACE SPACE SPACE 進入參考檔比對,A 和 SPACE 取得 INDEX,而 SPACE SPACE 以 0000000000 進行比對。 2.輸入 AB 時,是以 A B SPACE SPACE 進入參考檔比對,以 A和B 取得INDEX,而SPACE SPACE 以 0000000000 等10 bits進行比對。 3.輸入 ABC 時,是以 A B C SPACE 進入參考檔比對,以 A和B 取 得INDEX,而 C SPACE 以 0001100000 等 10 bits進行比對。 特別注意的一點是,由於嘸蝦米輸入法的版本不同,liubig5.tab的檔案長 度並未固定,因此,驅動程式應該在載入liubig5.tab時才依檔案的長度, 動態決定記憶體配置的大小。不過,可以確定的一點是,由於Index Table 的 entry 是用 unsigned int 來表示,所以Data table的大小決不會超過 64K bytes;詳細的範例程式在標準版磁片中的 liubig5.c,你可以用 C complier(如 Borland C 或 Microsoft C..)編譯後, 配合liubig5.tab 執行看看。亦可擷取 liubig5.c 的程式片段作為發展您的嘸蝦米輸入法驅 動程式。 其實,嘸蝦米輸入法 for Microsoft Windows 3.1、 Microsoft Windows NT 3.5、倚天中文...等等,皆按此 liubig5.tab 規格做出。 我們亦非常歡迎中文環境的開發廠商,除了支援嘸蝦米輸入法liubig5.tab 的規格外,亦支援 liu.box 加字、加詞的功能,這部分的規格,請參閱書 本中「軟體安裝與使用說明」之「加字、加詞」部分。
|
|
yawnp0426 joined:
2009-11-19 posted:
67 promoted: 3 bookmarked: 3
|
/******************************************/ /* Boshiamy Input System Example Program */ /* Date: July 20, 1993 */ /* File name: LIUBIG5.C */ /* Complier Model: Large */ /******************************************/ #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <io.h> #define MAXLEN 5 void decoder(unsigned char,unsigned char); main() { unsigned int far *index; unsigned char far *table, *index_p; int done,input_length,count; long table_size,file_size,i; unsigned int input_buffer[MAXLEN],offset,head,tail,last2,code2; char ch; FILE *fp; clrscr(); if((fp=fopen("liubig5.tab","rb"))==NULL){ puts("liubig5.tab not found"); return 0; } file_size=filelength(fileno(fp)); table_size=file_size-2050; printf("2050 bytes for index table\n"); printf("%ld bytes for data table\n",table_size); printf("%ld words total\n",table_size/3); printf("ESC to clear input buffer or quit\n"); if ((index_p = (char *) malloc(2050))== NULL){ puts("Not enough memory when alloc index"); fclose(fp); return 0; } if ((table = (char *) malloc(table_size))==NULL){ puts("Not enough memory when alloc table"); free(index_p); fclose(fp); return 0; } fread(index_p,1,2050,fp); fread(table,1,table_size,fp); fclose(fp); index=(unsigned int *) index_p; /**********************************[This while roop is input control]****/ while(1){ printf("Input : "); i=0; while(1){ ch=getch(); if(ch==' '){ if(i>0) break; else continue; } else if(ch==27){ /* ESC*/ if(i==0){ free(index_p); free(table); return 0; } else{ for(;i>0;i--){ putch('\b'); putch(' '); putch('\b'); } continue; } } else if(ch==8){ /* BACKSPACE */ if(i>0){ putch(ch); putch(' '); putch(ch); i--; continue; } else continue; } else if(i>=MAXLEN) /* The maximum input char is 5 */ continue; else if(ch>='a' && ch<='z'){ ch=ch-'a'+'A'; input_buffer[i]=ch-'A'+1; } else if(ch>='A' && ch<='Z') input_buffer[i]=ch-'A'+1; else if(ch==',') input_buffer[i]=27; else if(ch=='.') input_buffer[i]=28; else if(ch=='\'') input_buffer[i]=29; else if(ch=='[') input_buffer[i]=30; else if(ch==']') input_buffer[i]=31; else{ continue; } putch(ch); i++; } input_length=i; /***************************************[fill the rest input as 0 ]****/ while(i<MAXLEN){ input_buffer[i]=0; i++; } /************************************************[Boshiamy Kernel]*****/ offset=(unsigned int) input_buffer[0]*32+input_buffer[1]; last2 =(unsigned int) input_buffer[2]*32+input_buffer[3]; head=index[offset]; tail=index[offset+1]; i=head; count=0; if(input_length==MAXLEN) /* if input_length is 5, then do nothing */ i=tail; while(i<tail){ code2=(unsigned int) table[i]*4+table[i+1]/64; if(last2==code2){ count++; decoder(table[i+1],table[i+2]); } i=i+3; } if(count==0){ if(input_length>=3 && input_buffer[input_length-1]!=22) printf(" not found"); else{ input_buffer[input_length-1]=0; /* kill the V and find again */ last2 =(unsigned int) input_buffer[2]*32+input_buffer[3]; i=head; while(i<tail){ code2=(unsigned int) table[i]*4+table[i+1]/64; if(last2==code2){ count++; if(count==2){ /* the word we want is the 2nd word */ decoder(table[i+1],table[i+2]); break; } } i=i+3; } if(count<2) printf(" not found "); } } printf("\n"); } } void decoder(ch1,ch2) unsigned char ch1,ch2; { unsigned char high_byte,low_byte; unsigned int code; code =(unsigned int) (ch1 & 0x3F)*256+ch2; high_byte= code/157+0xA1; low_byte = code%157; if(low_byte<63) low_byte=low_byte+0x40; else low_byte=low_byte-63+0xA1; printf(" %c%c",high_byte,low_byte); }
|
|
路客 joined:
2014-05-08 posted:
1 promoted: bookmarked: Somewhere | 18 | subject:
Emacs 多語言環境的 Boshiamy 輸入法 |
0
0 | 2014-05-09 | quote | | |
感謝提供 noseeing 的各種版本。由於 Emacs 上沒有提供 Boshiamy,我自己加寫了一個,用的是 noseeing 的表格。鑑於版權問題及 Emacs 使用者用內建輸入法的人不多,所以有需要測試的人請私訊我。謝謝。
|