Archive for the ‘IME’ tag
ROTE - Our Own Terminal Emulation Library
librote, 是一個 console 底下的 terminal emulator ,這有什麼用呢?為什麼在 console 下還需要 terminal emulator?
因為它可以內嵌在在許多不同的程式裡面,尤其是 ncurses 的程式,可以把 rote 的 output 直接寫到一個 WINDOW 裡面,對於要內嵌 terminal 功能的程式來說非常方便,甚至還有人利用這個 library 寫出網頁用的 terminal emulator — anyterm。
我是在找有什麼東西可以幫助我完成 console-chewing 的 library 時發現這個的,真的非常方便,剛剛花了些時間便完成最基礎的中文輸入功能。(以 off-the-screen 的方式)
不過對於多位元的編碼似乎無法處理,一些 utf8 的字會被切割,看來還是要花時間 hack 了。
TODO
最近什麼事都沒做,還要講什麼什麼的,真是很不好意思 :-/
有一些事情希望能在寒假做完…
- 把 OV-Win32 的建構方法弄完整一點
- 看能不能吸收一些 ChewingIME 的功力
- 微調微調…
說來說去,就是要繼續改 OV 啦
阿,不過應該要開始忙專題的事了。
用 meld 來做 merge
今天在把 libchewing 的 utf8 branch merge 到 trunk 去,發現 meld 用起來真的很方便。
首先因為我是用 svk 來管理的,所以先 export SVKMERGE=meld,這樣 svk 在需要 merge 的時候就會自動呼叫 meld。
然後 svk smerge //mirror/chewing/libchewing/branches/utf8 就會開始自動 merge,碰到 orig 跟 trunk 還有 branch 都不一樣的時候就會呼叫 meld 出來做 3 way merge,我只需要用滑鼠點選要使用哪一個 branch 的更動就可以了,不用辛苦的比對。
SCIM Debug
最近要測試 libchewing 的 utf8 branch ,最好的方法就是平常就用。 一開使用起來都沒什麼大問題,可是跟 scim-chewing 搭配起來有時後過一段時間沒打字,下次要輸入的時候就會在組字的時候 crash 掉,用 genkeystroke 就不會有這種問題。
scim-chewing 最近實在太容易掛了,還好我終於學會怎麼看 scim 的 log o_O。方法就是
- configure 加參數 –enable-debug
- 啟動 scim 時加參數 — –verbose [0-7]
這樣 scim 就會把 –verbose [0-7] pass 給 scim-launcher,進而啟動 verbose 模式。
Screen-chewing
之前 jserv 與 BBNS 參考 screen-uim 黑出了 screen-chewing 這樣的東西,是 gnu screen 的外掛程式,據 jserv 的形容,是醜陋恐怖的 rc file 的結果。所以到現在還沒有真正的 code 出現。
這幾天在弄類似的東西,是受到 screen-chewing 和 Mat 的 iiimtcf 的啟發,既然輸入法只是一個 filter ,而現在 console 與 xterm 都有能力顯示中文只是無法輸入,那麼何不在 terminal 與 shell 間加一層,如此一來就可以輸入中文了,而原來的 terminal 則不用任何修改。
目前簡陋的可以切換中英輸入,可以在命令列打初中文字。等那天頭腦清醒且這個程式對我有用的話,可能會繼續完成。嗯,我是重度 command line 使用者.. 所以還滿有可能的。
libchewing & SQLite3
今天上課上到一半手癢,很想改程式… orz
下課一有時間就跑去看以前寫的 SQLite3 相關的 code ,之前都是抄網路上的範例,有看沒有懂,今天突然都明白了… 目前最基本 hash.dat 可以 Insert 、 Update ,Search 的部份因為牽連到其他部份比較多.. 要慢慢的來改。
剩下的就是要耐心的工作了,小心的把原本 function 的功能做出來,再來改整個 interface 做 refactor… 也許期中考過後可以生出什麼? 還是很期待 gugod 先把其他 code 生出來 XD
好了,該去看書.. &
Update:
- < gugod> 我在 sqlite branch 已經把 hash.c 跟 userphrase.c 幹掉了… XD
- < gugod> 還不錯用 :p
幹得好阿… 我今天完全白作工了 XD
PCMan 的 ChewingIME
鑑於並不是每個人都需要「多重輸入法」的輸入環境,PCMan 參考 OV IME 的 IME 部分利用 chewing 的 API 寫出獨立的 Win32 酷音版本。FreeSF 的報導
我想這就跟 OSX 上 SpaceChewing 與 OpenVanilla 的關係一樣,希望兩個專案可以互相合作 :) (hate IME API)
不過看到這個新聞,讓我想到兩件事,一是該把 IME 的 ANSI Build 弄出來並在 Win98/ME 了,二是我真的不會廣告,相較之下 PCMan 就厲害多了 grins
IME 進度(r1490)
浪費了幾天的時間,決定暫時把那一時之間做不完的事給放一邊,來寫寫程式放鬆一下。
到這個版本為止,主要有兩個重大的改變,一是修正了在 gaim、mozilla 等自己管理 CompWindow 的程式中, CandidateWindow 位置會亂跑的問題,但是 NotifyWindow 還是會跑到不知名的地方… 還要想一下有沒有比較好的解法。
另外一個真正是重大改變與實驗,把 loader 獨立為一個執行檔,與 IME 用 socket 溝通,結果大大提昇載入的速度,改完設定之後也可以馬上 apply,這樣要修改輸入法順序或是啟用、調動 OutputFilter 就方便多了,現在除了每個程式還無法用各自的 InputMethodContext 之外,其餘行為都跟原本的一樣甚至更好:)
update:
TODO:
- IO Blocking 的問題。
- Context 號碼牌。
IME 進度(r1482)
總算把 wxWidgets 和 OVPreferences 的編譯環境給建立起來,這樣我也可以來編譯修改 OVPreferences 了。
又多 Porting 了七個 OVOutputFilter 的模組,非常好玩、有趣、有用。
今天有新的 NightlyBuild 可以抓下來用
config.xml 以及 UserDir 的位置有變動,改到 Documents and Settings\%User%\Application Data\OpenVanilla 去,想保留之前設定的人可以把 config.xml 和 User 底下的東西搬到這裡。
IME 进度(r1479)
开学第一天,把 OVOutputFilter 的基本支援弄好了,连带的把之前没有实做的 Service->notify() 与 Service->UTF8ToUTF16 也弄出来,因为这些是 OVOutputFilter 常常用到的功能。 所以到目前为止,几乎所有的 Loader 基本功能都有实做了:) 目前有几个缺点与需要思考的是,一、无法动态改变载入的模组的顺序与启用与否,这限制了动态改变 Filter 的便利行;二、若是把 Loader 实做出 standalone server 的话,这样重新载入所有模组的耗费就会比较小,这样「一」也比较容易达成。 需要思考的是,OVService 大量的被使用与参考,是否需要实做为 singleton class 呢?我想应该是要的。
这篇打出来是简体字,这是使用 OVOFHanConvert 做到的,整篇文章还是用酷音打出来的 :)