| ||||||||
adm | Find | login register |
先聲明這個問題可能並非出在gcin,而是出在Lazarus。不過eliu兄如果有興趣與時間可以看看,探討一下原因。 Object Pascal這個程式語言在Delphi IDE 的關聯下可以說是老兵不死。個人使用Delphi有很長一段時間, 實在是很不錯的東西。在開源碼的世界也有Freepascal 與 Lazarus 與之對應。Freepascal的計劃也是老牌子, 而Lazarus也試著與Delphi看齊,可以說相當接近了。如果gcin與Lazarus 相容,應該是很好的事情。 Borland公司(現在改名叫Embarcadero) 本來也有 Linux版的Delphi 叫 Kylix,不過中止很久了。
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
在ubuntu的網站有討論這問題,但也僅止於「討論」而已 http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?viewmode=flat&type=&topic_id=18227&forum=12 請問eliu兄,應用程式能否可知道目前的input-mode? 如果可以那麼要改的是lazarus的元件,而不是gcin。
| ||||||||||||||
不需要知道,一般是收到 key event 後 AP 根據自己的狀態決定是否要送給 gcin 處理,如果不送給 gcin 處理,就等於是英數狀態。 不清楚 lazarus 是用什麼,如果是 gtk,AP 是用這個 API 把 key event 送給 gcin 處理 gboolean gtk_im_context_filter_keypress ( | ||||||||||||||
Lazarus 有對等的gtk2 library ,用Pascal表達, 個人認為這不相容的問題出在lazarus ide 元件沒處理好key event 但也有人不這麼想 不知eliu兄能否到上述ubuntu的討論網頁看一下?想知道您的看法。 | ||||||||||||||
用 gcin 的 debug log 看, ubuntu 13.04 lazarus 0.9.30.4-4 每按一次鍵就 call gtk_im_context_reset 這是不對的,這會造成清除輸入&編輯區的內容。所以 gcin 的行為是閃一下,輸入一下就被清除。 ibus 可能沒有做清除的動作,所以會 ok。但是這可能在某些程式造成了按鍵或編輯區內容殘留的問題。例如 click mouse 移動 cursor 的時候。
edited: 1
| ||||||||||||||
您的意思是說ibus並非使用gtk, 所以當Lazarus calls gtk_im_context_reset 對ibus不起作用? 另外,邏輯上來說,如果 Lazarus 不應該 每按一次鍵就 call gtk_im_context_reset 正確的方式應該如何? | ||||||||||||||
我的意思是 ibus 可能忽略 gtk_im_context_reset。記得 ibus 的 ui 也是用 gtk,但是這與此問題無關。
gtk_im_context_reset 一般是使用者 click mouse 把 cursor 移到別處,這時候正在輸入的內容就沒意義了,所以就清除。 key event 處理的流程中根本就不應該出現 gtk_im_context_reset,應該是程式寫錯吧。 edited: 1
|
| ||||||||
adm | Find | login register |