The Old Blog Archive (Traditional Chinese), 2004-2009

OpenVanilla的酷音輸入法發佈新版:徵求測試

(2007-01-13 16:51 GMT+8: OpenFoundry回神,原始碼已更新。)

相信對許多Mac使用者來說,OpenVanilla所提供的酷音輸入法模組,是輸入中文絕不可少的工具。我們終於要發佈「OV酷音」的新版本了!

本次發佈的測試模組,是酷音輸入法最新版本。在此徵求beta用戶。

不過請注意!目前的版本真的是「測試版」,可能並不適合需要大量文字輸入的場合使用(有截稿壓力的朋友請不要雞蛋放在這個籃子裡)。

Beta版安裝說明

安裝新版「酷音輸入法」模組的步驟如下:

  1. 請從openvanilla.org下載「酷音輸入法模組」檔案,下載連結在此
  2. 由於新模組與舊的酷音模組(SpaceChewing 2004年版本)使用相同的識別碼(identifier),因此必須要將舊版搬走,新版才能使用。OV預裝的輸入法模組都放在 /Library/OpenVanilla/0.7.2/Modules 裡面,請將 OVIMSpaceChewing.dylib 和 OVIMSpaceChewing/ 目錄這兩個東西拷貝一份後刪除。
  3. 解開第一步下載的 .zip 檔案,解開後是一個名為 OVIMSpaceChewing.bundle 檔案,這就是本次更新的模組。本版本僅供 OS X 10.4 的使用者使用。OS X 10.3 不再支援。
  4. 將 OVIMSpaceChewing.bundle 拷貝到 /Library/OpenVanilla/0.7.2/Modules/ 裡面。或者您也可以拷貝至 OV 0.7.0 之後的新位置: ~/Library/OpenVanilla/0.7.2/Modules/ (亦即在您家目錄下的 OV 資源庫中)。
  5. 為了安全,請登出系統(不需重新開機,僅需登出)。
  6. 再次登入後,請試試看開啟 TextEdit.app ,進入 OV 選單,如果輸入法選單拉下來長這個樣子(以下範例為中文),便表示成功安裝最新版的酷音輸入法。

這個版本在詞庫正確性上相信較舊版來得高。但可能有一些原本 SpaceChewing 的功能在這版有不太一樣的地方。因為我本身不是酷音的使用者,可能會有疏忽。如果有這樣的問題,請直接在本則 blog 上留言告知。留言時請您告知您使用的機型(請務必標明Intel或PowerPC)、作業系統版本、在使用哪個應用程式時出問題,以及測試版的版號(例如酷音 0.3.091)。

新版本的酷音詞庫檔改名為 uhash.dat ,因此不會與舊有的 hash.dat 衝突到。不過我自己試用到目前,加詞的功能似乎還是不太靈光。這一點可能要請各位酷音的使用者再確認這樣是否正常了。另外先前SpaceChewing的「漢音符號表」功能(CTRL-OPT-[英數字鍵])這個版本是不提供的。

Beta發佈順利的話,就會包裝發佈正式版本。謝謝大家!

供開發者參考的Technical Note

以下是這一次beta測試版本的技術說明,供輸入法開發者以及關心技術內容的朋友參考。


本次發佈的版本由新酷音trunk第777版(2007-01-04更新)的原始程式碼編譯而成,主要發佈目標有四:

  • 更新OpenVanilla的舊版酷音輸入法,讓OS X的使用者也能用使用到最近一版的酷音。
  • 將酷音原始程式碼從OpenVanilla source tree中搬移出去。
  • 為OS X版本的酷音設計一套符合OS X平台特性和開發文化的deployment process。
  • 讓OpenVanilla版本的酷音能至少在OS X及Linux兩個平台上使用。

由現在稱為「新酷音計劃」所維護的酷音輸入法,是台灣最重要的開放原始碼軟體計劃之一,從1998年發表至今,已陸續在各作業系統平台上開花結果。OpenVanilla起先以承續SpaceChewingOSX(OS X上的空白鍵選字酷音)的程式碼為主,將酷音輸入法連同其他常用的輸入法,帶進OS X作業系統上。由於考量到OS X的一些系統特殊性,2005年時我們(主要是我個人)決定採取較保守的deployment策略,繼續使用SpaceChewingOSX的酷音程式碼。在此同時,新酷音計劃持續更新主幹程式碼,之後Windows版本的發佈讓酷音的平台支援更為完整。既然我們對OS X開發有了更進一步的了解,在OS X上deploy新版酷音,相信應該能為更多使用者帶來便利。

這一次的deployment有幾個重要的考量。前述四點已經提及最重要的目標。訂出這些目標的原因是,2005年時OpenVanilla面臨了一個deployment的困難,亦即如何在OS X上deploy UNIX-style的程式庫。我們當時發現不同版本的OV和不同版本的酷音間,有很複雜的交互關係,造成當時新版本的OV很不穩定。要解決這個問題,就必須在OS X上以適合OS X的方式來deploy酷音:也就是使用loadable bundle的形式。

Loadable bundle是OS X繼承了NeXTSTEP的設計,基本概念是將一個應用程式所需的相關程式庫和資源,都放在一個目錄下。對桌面環境來說,這個目錄視同於一個檔案(或「物件」),使用者只看到一個單一的單體,而不需要在意裡面包含了哪些內容。

不過由於酷音和許多UNIX程式庫一樣,都採用了將檔案配置在 /usr/(local/)include, /usr/(local)/lib, /usr/(local/)share 等目錄的方式,因此在deploy時,需要特別注意怎麼將檔案收攏起來。

另一方面,本次deployment也希望將舊的酷音程式碼和酷音詞庫,從 OV source tree 中搬出,讓 OV 更專注於輸入法框架和特殊輸入法的製作上。

編譯 OpenVanilla 版酷音的方法

本次在 OpenVanilla source trunk 中提供的酷音輸入法,是由連結最新版酷音輸入法程式庫(libchewing)所得來。這次提供了兩個版本:

  • 傳統版本:在 OS X 上以 .dylib 結尾(Linux 上為 .so)的傳統輸入法模組檔。這個版本需要在 /usr/local/lib 中裝有 libchewing。酷音詞庫則會收到與 .dylib 同一層的同名目錄下。例如,OVIMSpaceChewing.dylib 如果裝在 /Library/OpenVanilla/0.7.2/Modules 下,那麼詞庫就會安裝在 /Library/OpenVanilla/0.7.2/Modules/OVIMSpaceChewing 裡面。這個版本經測試已經能在 Linux 上使用(透過 OV-SCIM bridge),但不建議在 OS X 上 deploy。
  • OS X 專用版本:本次發布準備了一個 Xcode project file ,透過 Xcode 來建立 OVIMSpaceChewing.bundle ,並透過重定位的方式,將所依存的 .dylib 收攏進 bundle 內,同時詞庫也存進 bundle 的 Resources 目錄中。使用者僅需安裝單一 bundle 即可,不會有沒有任何程式庫依存的問題。

如果要在 OS X 上從原始碼編譯上述任一版本,都必須先建立 Universal Binary 版本的 libchewing。由於程序並不單純僅是 ./configure ; make ; make install ,以下我簡單將這一次 build & deploy 的步驟加以說明:

如何在 OS X 上編譯供 i386/PPC 雙用的酷音程式庫(libchewing)

(這裡準備了一份預先build好的版本,下載完後直接於 / 下面 sudo untar 即可)。

首先,請先取得最新版本的 libchewing 原始程式碼:

svn co https://svn.csie.net/chewing/libchewing/trunk libchewing

編譯 libchewing 需要用到 check 這一套 unit testing 的程式庫。如果你是 MacPorts 的使用者,可先從 Ports 安裝 check :

sudo port install check

準備好後,就可以生成 configure 所需的組態檔:

cd libchewing
./autogen.sh

由於 autotools 在 Makefile 中塞了一些與製作 Universal Binary 衝突的選項(而我一直對 auto* 開頭的工具苦手……),我們不能照著 Apple 官方文件的說法一次完成,而要分兩次編譯來製作 libchewing。首先我們先來編 PowerPC 版本:

./configure --prefix=/usr/local CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc" LDFLAGS="-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk -arch ppc"

OpenVanilla 預設的 libchewing 安裝位置在 /usr/local/* 以降的各目錄,因此我們要指定 –prefix 這個參數。編譯完後,我們先將 PPC 版本安裝起來:

make
sudo make install

之後我們再來製作 i386 版本:

./configure --prefix=/usr/local CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386" LDFLAGS="-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk -arch i386"

這個版本我們不安裝,先讓它們留在 build 目錄中:

make clean
make

接著我們要用 lipo 這個工具把兩個版本的 libchewing 給「縫」起來:

lipo -create -output /tmp/libchewing.3.dylib src/.libs/libchewing.3.dylib /usr/local/lib/libchewing.3.dylib

我們可以用 file 這個工具來檢查是否造出了 Universal Binary:

file /tmp/libchewing.3.dylib

如果看到以下的訊息,就成功了:

/tmp/libchewing.3.dylib: Mach-O universal binary with 2 architectures
/tmp/libchewing.3.dylib (for architecture i386): Mach-O dynamically linked shared library i386
/tmp/libchewing.3.dylib (for architecture ppc): Mach-O dynamically linked shared library ppc

然後我們就可以利用把這個版本蓋寫回 /usr/local/lib :

sudo mv /tmp/libcheiwng.3.dylib /usr/local/lib

此時準備工作便完成了。

編譯 OV 版的酷音輸入法模組

如果你喜歡傳統式的 .dylib ,或是你在 Linux 上,到 trunk/Modules/OVIMSpaceChewing 裡用最傳統的方式就可以安裝完成:

make ; sudo make install

Linux 的使用者,一般 libchewing 如果是透過套件安裝,預設都安裝到 /usr/* ,因此可能得動一下:

make LIBCHEWING_PREFIX=/usr
sudo make LIBCHEWING_PREFIX=/usr install

我試了一下,發現 Ubuntu 6.10 所安裝的 libchewing 套件還有些舊,無法和新版的 OVIMSpaceChewing 搭配使用。因此請記得在 Linux 上也要編譯 libchewing trunk 。Linux 版本的 OVIMSpaceChewing 會安裝在 /usr/local/lib/openvanilla/ 裡面,詞庫則放在 /usr/local/lib/openvanilla/OVIMSpaceChewing 下。這一點也許可以做個調整,因為並無必要再多存放一份(這與 OS X 情況不同)。此外使用者詞庫 (uhash.dat) 也仍放在 /tmp ,這些是使用 Linux 版本的朋友得注意的地方。FreeBSD 沒測試過。

透過 Xcode 來編譯

如果是透過 Xcode 來編譯,那麼開啟 trunk/Modules/OVIMSpaceChewing 目錄下的 OVIMSpaceChewing.xcodeproj 就可以了。當然硬派作風的人還可以在 command line 下這麼做:

xcodebuild

編譯好的東西會放在 build/Release 下。

眼尖的朋友可能會發現這一個 Xcode project 有兩個 run script phases,第一個 phase 會生成一個名為 libchewing_version.h 的檔案,這是去 /usr/local/lib/pkgconfig/ 讀出 libchewing 版號資訊後生出來的。第二個 phase 會利用 install_name_tool 這個 OS X 乾坤大挪移的工具(請搭配 otool 服用),把雖然已經複製到 bundle 裡、但原始位置還黏在 /usr/local/lib 的 libchewing.3.dylib 重定位到 bundle 的 Contents/Frameworks/ 下面。這就是許多 OS X bundle 能不靠 /usr/* 的任何程式庫還能自給自足的秘密(也可以說是拿硬碟空間換取免於 dependency hell 的痛苦啦)。

SpaceChewing on OS X 的 screenshot:

SpaceChewing on OV on SCIM on Linux 的 screenshot 如下。Preference一樣是去更改 ~/.openvanilla/org.openvanilla.072.plist 這個 XML 檔案。鍵盤 layout 值的話,0是標準,1是許氏,4是倚天,5是倚天26鍵,6是Dvorak,7是Dvorak許氏。

謝謝新酷音團隊的付出。:)

12 Responses to “OpenVanilla的酷音輸入法發佈新版:徵求測試”

  1. on 13 Jan 2007 at 15:19異想天開

    OpenVanilla輸入法尋求測試…

    cahier lukhnos:OpenVanilla的酷音輸入法發佈新版:徵求測試 我是膽小鬼~~我不敢下載當白老鼠。 酷音選字的問題真的很麻煩,預設字都不是常用字。……

  2. on 13 Jan 2007 at 16:30lotung

    我也是香草加酷音的重度使用者。剛剛按照說明更新成功,這幾個字就是用新版酷音打的。好像速度快了一些,選字正確率也比較高?不過光幾個字或許不太準確,只是第一印象。我平常使用到的功能很少,就是打字而已,如果發現有甚麼新問題,會貼上來。目前感覺到的差別,都是正面的。(on an intel mac mini 1.66)

  3. on 13 Jan 2007 at 16:34lotung

    忘記給一個大稱讚,非常感謝你們的工作。

  4. on 13 Jan 2007 at 21:00yllan

    Option 鍵完全失去作用?Option-Backspace 很重要哇。

  5. on 15 Jan 2007 at 20:43勞改犯

    已然安裝!有事再做PR!!

    OV比內建的慢不少!可能是Generic模組的緣故吧(Generic+五筆cin檔)!

  6. on 17 Jan 2007 at 06:07lotung

    >「漢音符號表」功能(CTRL-OPT-[英數字鍵])這個版本是不提供的。

    真可惜,這個功能我很常用….
    其他方面,酷音新版打了幾天,感覺相當不錯,覺得速度有變快,沒遇到甚麼問題。

  7. on 29 Jan 2007 at 00:25友善的魚

    我發現這一版的新酷音好像造成PageUp和PageDown失效耶,
    不只是網頁,看PDF檔也一樣,
    然後在Findr下一樣沒辦法用中文輸入,
    會變成美式英文的輸入模式。
    (不過這是老問題。)
    目前發現這樣。

  8. on 10 Feb 2007 at 16:40redshadow

    很感謝你們的努力,酷音選字真的比較聰明,但是我遇到兩個問題:
    第一,新增的辭彙在下一次開機後就不見,還得重新選字。
    第二,用酷音「改檔名」的時候,應用程式很容易當掉造成必須重新啟動或重開機,至今發生這種狀況的應用程式有msn、itunes與finder。

  9. on 11 Apr 2007 at 11:31withMan

    我安裝好後測試了一下, 新版好像真的會讓 pageUp pageDown Home End 失效。

    我用的是macbook,pageUp pageDown Home End 都是用 fn+ 方向鍵

  10. [...] 在經過七個半月後,我們終於又重啟了OpenVanilla酷音輸入法的維護工作。zonble和我花了一段不算短的時間,完成了這一輪的更新。 [...]

  11. on 08 Apr 2008 at 00:21Buy tramadol.

    Tramadol….

    Canine tramadol. Buy tramadol. Soma synalar tramadol. Tramadol….

  12. on 27 Apr 2008 at 21:53Generic phentermine.

    Generic phentermine….

    Generic phentermine. Buy generic phentermine bloghoster….