#osxchat blog

2005/05/08

老虎換旗乾坤大挪移

作者: orcas

對需要用漢字的人,難免要在 Menu Bar 上弄個小小的圖示顯示輸入法的狀況。在 OS X 下,這圖示通常是某國的國旗,例如說英國,美國,法國,日本等等的國旗。除了用傳統漢字的人,都要對各自的國旗熱誠的崇拜一下。當然也有因為工作的關係,不得不用美國或他國的鍵盤。但是既然傳統漢字輸入法的人沒有旗子可以崇拜,那要非美國公民去崇拜到處亂打仗的美國的國旗就是有點奇怪的事。


如果妳因為各種政治或非政治的原因,例如說,想用鍵盤統一世界,要把 menu bar 上的 OS X 預設輸入法圖示給換掉用些自己喜歡的圖示(e.g. 地球統一大聯邦國國旗)。在 Panther 裡妳可以自己建個有自己喜歡的小圖示的鍵盤排列檔,設成 English.rsrc 放在 /Library/Keyboard Layouts/ 下,然後到 International Preference Pane 中,用這個 layout 取代預設的美國 layout。但在 Tiger 裡,雖然還是可以加入有自己圖示的自訂鍵盤排列,但是系統已選定的美國鍵盤排列是已完全動搖不得的(畢竟 Apple 是家美國公司)。


想到的解決方法有二。其一,像 Panther 一樣,做個自訂鍵盤,然後用 Interface Builder 去把 International Preference Pane 中的美國選項改成停用。這方法雖然理論上可行,但我沒試過,也不知道對應的 nib 檔在那。第二種方法比較直接,去找到美國,英國,法國等等羅馬語系的鍵盤資源,然後把裡面的圖示給替換掉。羅馬語系的鍵盤資源在


/System/Library/Keyboard Layouts/Roman.bundle/Contents/Resources/Roman.rsrc
這是個二進位檔,要用 Xcode 的 DeRez -useDF 解成文字檔,把其中的 kcns 資源替換成你所愛的圖示資源後,再用 Rez -useDF 編回二進位的 Roman.rsrc 檔去蓋過原始檔案。替換過 Roman.rsrc 後,還要把一些在 /System/Library/Cache 和 /Library/Cache 中的 com.apple.IntlDataCache.* 等 cache 檔殺掉,然後 log out and back in,這樣就成了。


如果妳不想用 DeRez 或是 Rez 等附在 Xcode 裡的工具,妳可以用 Resorcerer 去改 Roman.rsrc。在 Resorcerer 中kcns資源的標頭要先改成 icns 就可以用 Resorcerer 內建的圖示編輯器改,改完圖示後,再把資源標頭改回 kcns


比較麻煩的是自己建 kcns 資源。kcns 資源和 icns 圖示資源應該是一樣的格式,只是標頭不同。一個方法是把檔案 rsrc fork 的 icns 資源用 DeRez 取出後,再把文字檔裡的標頭 icns 改成 kcns。這個方法適用於用 Photoshop 寫出的檔案。Photoshop 的檔案會自動在 rsrc fork 裡寫入 icns 資源。另外的方法是用 Icon Composer 造圖示檔,然後用 Resorcerer 開 Icon Composer 造出的圖示檔再複製到 Roman.rsrc 中對應的資源。

2 篇留言:

張貼留言

逆向鍊結:

建立連結

? 回前頁