成立 PCMan Facebook 專頁

之前常被許多網友要求加 Facebook,但是數量過多難以管理,大部分也都不認識,無法一一加入,所以成立 PCMan FB 專頁。未來長篇的文章還是會放 Blog 上,而平常的小動態會放在 FB。
另外,現在也可以使用 http://blog.pcman.im/ 來連到本網站

2013年9月26日 星期四

新酷音輸入法 9/26 更新

下載連結:
https://docs.google.com/file/d/0B4BhmC8V2mivYnZkRUw2SnRVNlk/edit?usp=sharing

注意:Windows xp 使用者需要手動開啟「進階文字服務支援」,才能使用,不幸此項設定 xp 預設是關閉的,只能手動打開。請參考這篇「啟用進階文字服務」。
請不要在來信問為什麼 xp 底下不能用了,記得要開啟這個選項!

此次更新部份:
  1. 多螢幕下使用,選字視窗可以正確顯示在目前螢幕
  2. 修復選字時若滑鼠點擊輸入欄不能再輸入文字
  3. 修復造成其他 windows 內建的輸入法無法開啟內容選單
  4. 可自訂 ` 鍵快速輸入的符號表
  5. 修正有時不能打全形空白
  6. 修正應用程式快速鍵 Ctrl + C, Ctrl+V, ...等失效的問題
  7. 安裝程式改善,自動解安裝舊版
待解決:
  1. 全螢幕遊戲需要 UILess mode,要另外實做,之後有時間會設法支援,但前提是遊戲本身要先正確實作 Windows TSF 支援,才有辦法使用。這是已知問題,請不要再一直回報 bug 說遊戲不能用了。
  2. 使用者詞庫編輯部份,上游 libchewing 開發者還在改善這部份,未來可能會支援編輯或匯入,但是現階段因為輸入法引擎部份,開發團隊還沒改好,暫不提供。
我本來要測試有沒有辦法支援遊戲,但是現在的遊戲都太大了,隨便一個網路遊戲都要十幾 GB... 我硬碟裝不下了。請推薦裡面可打字的小遊戲給我,方便測試,我會想辦法支援。


2013年9月24日 星期二

新酷音輸入法9/25修正

2013-09-25 更新,最新連結:
https://docs.google.com/file/d/0B4BhmC8V2mivYnZkRUw2SnRVNlk/edit?usp=sharing

注意:Windows xp 使用者需要手動開啟「進階文字服務支援」,才能使用,不幸此項設定 xp 預設是關閉的,只能手動打開。請參考這篇「啟用進階文字服務」。

此次更新部份:
  1. 修正 Windows xp 無法正確載入的問題
  2. 將輸入法設定獨立到自己的程式內,而不放在輸入法常駐 dll 內,減少資源耗用
  3. 選字視窗文字大小可自由設定
  4. 選字視窗預設改為每列 3 個字,每頁 9 個字,類似九宮格式的排列,如此視線移動較少的距離,就能看到所有候選字,且使用游標選字的話,平均移動距離會最短。(若使用不習慣者可自行更改設定)
  5. 新增打繁體輸出簡體的功能,要用時由輸入法選單裡面勾選開啟,或可直接設定為預設打繁出簡。
  6. 新增鍵盤對應:台灣華語羅馬拼音、注音二式
  7. 修正設定值沒有正確儲存的問題
待解決:
  1. 選字視窗在多螢幕下會跑錯螢幕,我還沒修正,因為手上只有單螢幕無法測試,回家有雙螢幕再來修正。
  2. 全螢幕遊戲需要 UILess mode,要另外實做,之後有時間會支援,但前提是遊戲本身要先正確實作 Windows TSF 支援,才有辦法使用。光靠輸入法作者努力是不夠的 orz

2013年9月23日 星期一

進擊的新酷音



沒錯,新版又來了,這已經接近正式版了。
https://docs.google.com/file/d/0B4BhmC8V2mivYnZkRUw2SnRVNlk/edit?usp=sharing
大家一定覺得我很閒怎麼這麼有空,其實不是,我花掉了所有休息時間
所以正式版出了之後,還是要休息一下,做點正事,不能一直不務正業

使用上發生問題,請到這裡回報:
https://github.com/chewing/windows-chewing-tsf/issues
在 ptt 推文或是 blog 回文比較不好管理,修 bug 的時候容易漏掉
(而且回報上去其他 libchewing 的開發者才可以幫忙修 bug :p)

目前進度:
1. 支援用方向鍵移動游標選字 (可在設定內開關)
2. 修復 caps lock 英文大小寫忽大忽小問題
3. 修復用 ` 輸入特殊符號選字視窗關不掉
4. 修復部份設定值沒有正確套用
5. 改善輸入法開關切換有時會失效的問題
6. 換用最新 libchewing 引擎,czchen 修好了一些 bugs
7. 穩定性應該是不錯,目前幾乎沒有當機的災情

待改善:
1. 新的圖示有人在畫了,之後再更新這部份
2. 目前還沒支援 UI less mode,在全螢幕遊戲可能還無法使用,這部份可能要
   等到第一版釋出之後再來進行,希望有人可以推薦能支援中文輸入的免費小遊戲
   以方便測試。我現在可能不太方便裝太大型的遊戲來測試,請大家推薦

因為快接近可以釋出第一版了,希望可以增加測試的規模確保品質
拜託各位朋友,如果可以寫寫 blog 或用各種方式幫忙宣傳
謝謝!

2013年9月12日 星期四

新酷音Windows版最新進度 - 支援 Windows 8 64-bit

雖然先前本來只打算支援 Windows 8 的 desktop mode,但是經過持續研究,
以及寄信請教 TSF aware blog 作者 Eric Brown,參考日文輸入法 corvus-skk,
加上對岸強大的開發者,小小輸入法的周永 (dgod) 指點,終於知道怎麼做了。
目前新酷音輸入法,初步可以部分支援 Windows 8 modern UI,
我在 Windows 8 試用版裡面測試,已經可在 metro app 裡面使用了!
值得一提的是,對岸高手周永 (dgod),就是我認識的那位 dgod
之前我們還一起開發過 Linux 桌面 LXDE 專案,實在也太巧,
我居然不知道他會寫 TSF 輸入法!! (我猜他應該也不知道我有在寫 XD)

先前從文件上看來,Windows 8 app 模式不能使用許多舊有功能,
很多輸入法必要的 API 竟都被標注為 desktop mode only,
所以我一直想不出來怎麼做。原來,在輸入法是特例,
雖然 dll 是載入到 app container 內,但是 desktop SDK 的 API 是允許使用的。
終於找到一份文件證實這點:
http://msdn.microsoft.com/en-us/library/windows/desktop/hh848069(v=vs.85).aspx
Quote:
When an IME is loaded into a Windows Store app, it is subject to the same app container restrictions as the app itself. This behavior ensures that IMEs are not able to violate Windows Store app security contracts, despite having access to the desktop SDK (because they are not distributed or certified by the Windows Store)
所以,輸入法雖然跑在 app 內,原 Win32 API 是允許的,但是存取的限制,
仍然受到 app container 安全規範,實地測試發現,可以使用 Registry 的 API
但是在 app 內嘗試讀寫系統登錄,都會造成錯誤。讀寫 app 以外的檔案也會權限不足。
故這些 API 雖然可以調用,但是只要存取到 app 不准許存取的資源,就會發生錯誤。

總結來說,目前已經可支援 Windows 8 store app,但還有許多限制沒有克服

  1. 使用者偏好設定,各個 app 內各自獨立,不能互相讀取,也不能讀取系統登錄,也不能存取 app 自己 package 以外的檔案,所以無法讀取設定檔,不能和 desktop mode 共用設定。微軟官方建議的方式是,建立一個 web service 來儲存這些設定。
  2. app 內儲存設定有自己的方式,新的 API 不相容舊版 Windows,所以可能還是需要額外幫 Windows 8 開發自己的版本
  3. 使用者辭庫無法在 app 內使用,因為 app 內讀不到外界的檔案,只有少數幾個許可的位置可讀取,很多更是無法寫入,但是各個 app 隨不同的 capability 又會不同。此問題目前無解。微軟官方建議的方式是,這些資料應該放在雲端。但是沒網路的時候就不能用了,Windows 8 的這種設計哲學在網路連不上的情況會很難實現。
  4. app mode 和 desktop mode 之間互相溝通預設不被允許,除非經過複雜的安全性設定,但是找不到如何設定的文件或範例。目前比較確定能用的,是透過 web service,只不過,為了交換少數資料,而需要架設 web server...真是殺雞焉用牛刀!
  5. Windows store app mode 下沒有語言列,無法顯示狀態,或存取其他功能。
也許,在 app 模式下關閉使用者辭庫功能是個可行的解法,
但是這仍然沒有解決 app 內和 desktop mode 設定要如何共用的問題。
該不會真的需要寫專用的 web server 吧....

TSF 和 32/64 位元支援都完成了,支援 Windows 8 metro app 有譜了,但還有很長的路要走。

2013年9月10日 星期二

新酷音輸入法 Windows 版,重新出發!

過去曾經把 Linux 上優秀的輸入法「新酷音」移植到 Windows。
雖然後來實在沒時間再參與了,我自己一直還是有在用新酷音
直到現在,因為工作上需要長時間使用 Windows,難用的
微軟新注音,再次喚回我對新酷音輸入法的懷念。
到了 Windows 7 之後,因為系統架構的改變,
新酷音雖有網友做出支援 64 bit Windows,一直沒能運作得很好
因為 Windows 逐步拋棄舊 IME (imm32) 架構,
轉向採用 COM 技術的新 Text Service Framework (TSF)
複雜度呈直線幅度上升,使得許多舊有 IME 常出現難解的奇怪問題
又因 IME 的諸多限制,使舊的新酷音依賴許多 dirty hacks 在運作
最近 Windows 8 更是全面轉向 TSF,開始準備禁用 IME 架構,
以 TSF 全面重寫看來勢在必行了。
先前有網友陳昌倬 (czchen)的努力,用微軟提供的範例程式改造,
初步證實了 TSF 的可行性,在這個鼓舞之下,
我重啟了 Windows 版新酷音計劃
https://github.com/chewing/windows-chewing-tsf/

經過連日熬夜研究,全新 TSF 架構的 Windows 版新酷音終於快可以用了
基本的架構和 API 以及各種工具都完成了,連語言列按鈕和選單,都能正確運作了!
而因為原先微軟提供的範例,是以微軟自己的 MS-PL  (Microsoft Public License)授權,
雖然也算是自由軟體,但是該授權不相容 GPL,而且衍生著作必須沿用 MS-PL
為了避免這個問題,我只好 from scratch 重寫 TSF 支援。
因為 TSF 大量使用 COM (component object model),並且層層疊疊非常複雜,
對開發者並不友善,我將這部份封裝進 libIME 這個函式庫,
這樣未來的其他輸入法開發者,可以直接套用 libIME 封裝的現成架構,
而不需要了解 TSF 就可以快速寫出支援 Windows 的輸入法。

這裡針對 libIME 程式 API 架構寫了簡易說明文件
供有興趣參與開發的朋友參考,希望可以加速大家移植自己的輸入法

基本上透過 libIME 來實做輸入法是很簡單的
只需要碰觸到非常少 TSF,大部分細節和 COM 操作都被隱藏了
libIME 也提供了許多 Windows GUI programming 的工具 classes
Ime::Window, Ime::Dialog, Ime::PropertyDialog...等等,
幫助實做視窗界面和 config dialog

雖然目前進展很順利,大多數問題也克服了,
但是我接下來會需要忙好一陣子,沒時間改太多 code,
文字輸入的部分還有些問題,希望有其他朋友可以
就現有 code 和文件繼續改良,相信很快就能有可用的發行版

至於 Windows 8 store app 支援,看來是沒有指望了
我有 E-mail 給 TSF aware blog 的作者,他是 MS 員工
專精 TSF,經過他的回答,看來要能支援 win 8 app
基本上是需要整個用 win 8 專屬的新 API 重做,
而且設定和資料基本上需要放上 web 才行
因此雖然也是 TSF,但是等於也是要全部重寫另一個
GUI 也是要用新的架構重寫,舊 GUI code 完全不能用
因為限制實在太多,困難度更高,又需要跟 web 連接
我想這不是我們該支援的東西。
詳見微軟的:Guidelines and checklist for IME development (Windows Store apps)

照現有的狀況看,大部分現有軟體要移植到 win 8 metro
基本上是不可能的,除非全部砍掉重寫...
所以,我個人認為,這是一個沒有前途的平台...
把開發應用程式變得比 Linux 上更困難,只是自廢武功而已
集中精力來支援沒人在用的平台,實在不划算
因此,就這樣吧! 支援 desktop mode 就好了

敬請期待,重生的 Window 版本新酷音 TSF 輸入法!

2013年8月4日 星期日

2013-08-03 COSCUP 演講 - Qt 正夯,GTK+ 使用者該如何跳槽?

今年很榮幸再次參加 COSCUP,去年本來是講開發 file manager
去年會後和 KDE 開發者做了些交流,決定改用 Qt
經過這一年的研究,今年我的演講就變成講 Qt 了 :P
這是投影片的部份,簡介 Gtk+ 和 Qt 主要的優劣、相同和不同處
請和此份完整參考文件搭配服用:Migrate from Gtk+ to Qt


剩下的部份則是 demo,現場把一個 gtk+ 小程式改寫成 Qt 這是完整的範例程式,以及原始投影片 (*.odp) 下載:
https://drive.google.com/folderview?id=0B4BhmC8V2mivc0hFdmlHWmNCdDQ&usp=sharing

至於當天現場的錄影:

完全沒有畫面...
等COSCUP 工作人員釋出當天錄影再補上

分享給對自由軟體有興趣的朋友參考