> From: Arthit Suriyawongkul <[EMAIL PROTECTED]> > anybody here interesting in this Table-based Input Method ? > http://sourceforge.net/projects/wenju/ > i've got this site from gtk-i18n-list.
I have not looked at this one yet, but you may also want to take a look at IIIMF(http://www.li18nux.org/subgroup/im/IIIMF) which has something similar, called ude(user defined engine) as a table based IM. Also recently, XML based IM, EIMIL(Extensible IM interface Language) is ntroduced to IIIMF, which you can combine the table based IM, the portable XML based logics, and backend dictionay lookup server. You can retrive the source of this as follows; cvs -d -d:pserver:[EMAIL PROTECTED]:/cvsroot co -r exp-EIMIL-1 im-sdk The following is the sample XML based IM definition, which you can find in im-sdk/server/programs/language_engines/canna. This sample shows how you can combine those table/logic and backend dictionary lookup server(in this case, Japanese Canna dictionary lookup server). ------------------------------------------------------------------------------- <?xml version="1.0"?> <!DOCTYPE ccdef PUBLIC "-//Li18nux//DTD CCDEF 1.0//EN" "ccdef.dtd"> <ccdef name="default" class="org.li18nux.CannaLE" revision="0.1"> <interface> <langinfo xml:lang="ja"></langinfo> <decldata name="edittext" type="mtext"/> <declop name="convert"> <dependency depend="edittext" affect="edittext"> </declop> <declop name="fixate"> <dependency depend="edittext" affect="edittext"> </declop> </interface> <engine name="ja-romakana" class="com.sun.iiim.pce1.s1"> <PCE> <deftable name="romakana" from="mtext" to="mtext"> "a" "あ" "i" "い" "u" "う" "e" "え" "o" "お" "xa" "ぁ" "xi" "ぃ" "xu" "ぅ" "xe" "ぇ" "xo" "ぉ" "ka" "か" "ki" "き" "ku" "く" "ke" "け" "ko" "こ" "kya" "きゃ" "kyi" "きぃ" "kyu" "きゅ" "kye" "きぇ" "kyo" "きょ" "ga" "が" "gi" "ぎ" "gu" "ぐ" "ge" "げ" "go" "ご" "gya" "ぎゃ" "gyi" "ぎぃ" "gyu" "ぎゅ" "gye" "ぎぇ" "gyo" "ぎょ" "sa" "さ" "si" "し" "su" "す" "se" "せ" "so" "そ" "sha" "しゃ" "shi" "し" "shu" "しゅ" "she" "しぇ" "sho" "しょ" "sya" "しゃ" "syi" "しぃ" "syu" "しゅ" "sye" "しぇ" "syo" "しょ" "za" "ざ" "zi" "じ" "zu" "ず" "ze" "ぜ" "zo" "ぞ" "ja" "じゃ" "ji" "じ" "ju" "じゅ" "je" "じぇ" "jo" "じょ" "zya" "じゃ" "zyi" "じぃ" "zyu" "じゅ" "zye" "じぇ" "zyo" "じょ" "ta" "た" "ti" "ち" "tu" "つ" "te" "て" "to" "と" "cha" "ちゃ" "chi" "ち" "chu" "ちゅ" "che" "ちぇ" "cho" "ちょ" "tya" "ちゃ" "tyi" "ちぃ" "tyu" "ちゅ" "tye" "ちぇ" "tyo" "ちょ" "da" "だ" "di" "ぢ" "du" "づ" "de" "で" "do" "ど" "dha" "でゃ" "dhi" "でぃ" "dhu" "でゅ" "dhe" "でぇ" "dho" "でょ" "dya" "ぢゃ" "dyi" "ぢぃ" "dyu" "ぢゅ" "dye" "ぢぇ" "dyo" "ぢょ" "na" "な" "ni" "に" "nu" "ぬ" "ne" "ね" "no" "の" "nya" "にゃ" "nyi" "にぃ" "nyu" "にゅ" "nye" "にぇ" "nyo" "にょ" "ha" "は" "hi" "ひ" "hu" "ふ" "he" "へ" "ho" "ほ" "fa" "ふぁ" "fi" "ふぃ" "fu" "ふ" "fe" "ふぇ" "fo" "ふぉ" "hya" "ひゃ" "hyi" "ひぃ" "hyu" "ひゅ" "hye" "ひぇ" "hyo" "ひょ" "ba" "ば" "bi" "び" "bu" "ぶ" "be" "べ" "bo" "ぼ" "bya" "びゃ" "byi" "びぃ" "byu" "びゅ" "bye" "びぇ" "byo" "びょ" "pa" "ぱ" "pi" "ぴ" "pu" "ぷ" "pe" "ぺ" "po" "ぽ" "pya" "ぴゃ" "pyi" "ぴぃ" "pyu" "ぴゅ" "pye" "ぴぇ" "pyo" "ぴょ" "ma" "ま" "mi" "み" "mu" "む" "me" "め" "mo" "も" "mya" "みゃ" "myi" "みぃ" "myu" "みゅ" "mye" "みぇ" "myo" "みょ" "ya" "や" "yu" "ゆ" "yo" "よ" "ra" "ら" "ri" "り" "ru" "る" "re" "れ" "ro" "ろ" "rya" "りゃ" "ryi" "りぃ" "ryu" "りゅ" "rye" "りぇ" "ryo" "りょ" "wa" "わ" "wo" "を" <!-- ん special rule --> "nb" "んb" "nc" "んc" "nd" "んd" "nf" "んf" "ng" "んg" "nh" "んh" "nj" "んj" "nk" "んk" "nl" "んl" "nm" "んm" "nn" "ん" "np" "んp" "nq" "んq" "nr" "んr" "ns" "んs" "nt" "んt" "nv" "んv" "nw" "んw" "nx" "んx" "ny" "んy" "nz" "んz" "n'" "ん" </deftable> <defvar name="i" type="number"></defvar> <defvar name="kana" type="mtext"></defvar> <defvar name="sokuon" type="mtext"></defvar> <defun name="romatokana" type="bool" args="pos:number"> <set v="kana"> nil </set> <set v="i"><sub> pos <tblkeymaxsize t="romakana"/></sub></set> <if><lt>i 0</lt><set v="i"> 0</set></if> <while> <and> <not> kana </not> <lt> i pos </lt> </and> <set v="kana"> <tblref t="romakana"><substr> kanaoutput i pos </substr></tblref> </set> <set v="i"><add>i 1</add></set> </while> <if> kana <set v="i"><sub>i 1</sub></set> <!-- っ special rule --> <if> <and> <gt>i 0</gt> <ge><sub>pos i</sub>2</ge> <eql> <UCSval><strref>kanaoutput i </strref></UCSval> <UCSval><strref>kanaoutput <sub>i 1</sub></strref></UCSval> </eql> </and> <set v="sokuon"> "っ" </set> <set v="i"><sub>i 1</sub></set> <else> <set v="sokuon"> "" </set> </else> </if> <set v="kanaoutput"> <concat> <!-- head --> <substr> kanaoutput 0 i </substr> sokuon kana <!-- tail --> <substr> kanaoutput pos </substr> </concat> </set> <return> t </return> </if> <return> nil </return> </defun> <defvar name="inputp" type="prop"> </defvar> <main> <!-- initialization. --> <if> <not> inputp </not> <set v="inputp"><makeprop p="feedback"/></set> <propadd>inputp 2</propadd> </if> <label name="replay"/> <select> <!-- return key always commit the uncomposed string. --> <keycase code="10"> <commit> kanaoutput </commit> <set v="kanaoutput">""</set> </keycase> <keycase char="
"> <commit> kanaoutput </commit> <set v="kanaoutput">""</set> </keycase> <!-- space key convert the current string. --> <keycase char=" "> <interact op="convert"/> </keycase> <default> <if> <evchar>curev</evchar> <set v="kanaoutput"><concat> kanaoutput <evchar>curev</evchar></concat></set> <e f="romatokana"> <strlen>kanaoutput</strlen> </e> <setmprop>kanaoutput inputp 0 <strlen> kanaoutput </strlen></setmprop> <else> <!-- I can't process this event --> <next> curev </next> <go to="replay"/> </else> </if> </default> </select> </main> </PCE> </engine> </ccdef> -------------------------------------------------------------------------------

