InDesign 的 Scriping

雖然說一年多前就在讀關於 InDesign 的 Scripting 相關的文件,不過,上個星期才比較認真的寫出了一些自己需要的 Script。而上個星期荒廢了 blog 一周,全都是在研究 InDesign 的 Scirpt,還有就是做一支 Flash …話說我也將近三年沒把 Flash 拿出來用了(因為實在很不喜歡 Flash),做這個 Flash,也是千百個不願意,而打開 Flash 的介面,幾乎又是從頭摸索起。

InDesign 支援幾種不同的程式語言開發 script,可以透過這些 script ,在 InDesign 中以程式的方式完成許多例行的排版工作,甚至可說是自動排版;在 Mac OS 上的版本支援 AppleScript 語言,在 Windows 上的版本支援 Visual Basic 以及 VB Script,而從 InDesign CS 版開始,則內建一個 JavaScript 的解譯器,寫出來的 script 在 Mac OS 與 Windows 上均可使用。寫出這些 script 後,只要把程式放在 InDesign 應用程式目錄下的 script 目錄,就可以在 InDesign 中的script(InChinese 翻譯成「腳本」)面板中,按一個按鈕,便可以執行這些 script。

Continue reading

怎樣在 Mac OS X 下寫一套輸入法?(三)

到目前為止的介紹所介紹的,都只是一個輸入法系統元件的「外殼」,而還沒有介紹作業系統如何與輸入法的核心演算法溝通。接下來要介紹的,就是輸入法如何取得使用者輸入的按鍵的資訊,然後給予適當的回應。

作業系統會將使用者按了某個鍵盤按鍵這樣的事情,當成是一種「事件」(Event),而在 Mac OS X 中,有非常多不同種類的事件,包括滑鼠事件與鍵盤事件的類型,而每個類型下又有許多更進一步的區別,例如,滑鼠事件就有滑鼠移動、點選、拖拉、放開,鍵盤則有打一下、按著不放…等等,蘋果在 Carbon Event Manager Reference 這份文件中,便完整列出了各種事件。輸入法則透過前一篇介紹的 kCMTextServiceEvent,獲得這些事件,以 CIM 這個範例來說,可以在 CIMcomponent.cpp 裡頭,在遇到 kCMTextServiceEvent ,就丟到 CIMSessionEvent() 裡頭處理, CIMSessionEvent() 則寫在 CIM.cpp 裡頭。

Continue reading

怎樣在 Mac OS X 下寫一套輸入法?(二)

講完了資源檔案,接下來,我們要看的是程式的部份。我們首先要看CIMcomponent.cpp這個檔案,這個地方的程式碼,是讓你所要寫的輸入法,足成為一個系統元件的溝通介面,用來接收各種來自作業系統的事件,並且給予回應,用蘋果的官方術語來說,就是各種低階例行事件(Low-levelRoutines)。

一般來說,在進行輸入法開發的時候,幾乎都不會修改這個部份的程式碼,但是要進一步了解輸入法的運作,就必須要解說,一個輸入法系統元件會處理那些事件,才能夠知道我們要在什麼時候,讓輸入法做什麼事情。您也可以先參看蘋果的這幾篇官方文件:Text Services Manager Reference: Low-levelRoutineSelectors,以及Component Manager Reference: Request Codes

Continue reading

怎樣在 Mac OS X 下寫一套輸入法?(一)

Glider 最近推出了 QIM的體驗版本。QIM 是一套在 Mac OS X 環境下的簡體中文拼音輸入法,而在 glider 開始開發 QIM 的時候,曾經有向 OpenVanilla 的開發團隊詢問有沒有關於在 Mac OS X 下開發輸入法的相關文件,而那時候居然答不出來,一方面是因為蘋果官方本身所提供的文件就不多,甚至有許多與作業系統溝通的方式,都還找不到文件,在開發 OpenVanilla 的時候,也都是在缺乏文件的狀況下摸索,而在摸索的同時,自己卻也沒有留下多少文件。想想這樣還是不行,還是該來弄一點文件。

Continue reading

Asian Input Method Technology for Non-Asian Languages

New Roman Input Method

Thanks to gugod’s help. We created a new input method module under OpenVanilla , a input method framework for Traditional Chinese but not for Chinese only. This module calls “New Roman Input Method” (新英數輸入法). In such a input method module we demonstrated some ideas which came to our minds when developing the OpenVanilla framework, that is: input method technology should not be limited to input Asian characters merely, but there might be more more possibilities and potentials need to be explored.

Continue reading

繼續做 widget

這兩天繼續修改之前提到的字典 widget,其中加入了不少朋友所提供的 pacth,例如加入了 samtz 所寫的用來搜尋Webster字典的功能(相關文章連結)、我自己又繼續加入了對顏氏字典以及巨璣1390字典的支援,以及 cooltony 所提供的即時將剪貼簿的內容貼到字典 widget 的功能,digdog 也提供了朗讀功能的程式碼。所以基本上,加入了這些功能後,原本的字典 widget 於是變成了怪物:你可以在 dashboard 中一次開啟五個字典 widget,然後在任何程式中,按一下 cmd + C 複製文字,就會開始同時搜尋五個線上字典…。

Continue reading