為什麼Linux下的輸入法如此Fxxk [論壇 - Ubuntu 與 KDE]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊

(1) 2 3 4 5 »


為什麼Linux下的輸入法如此Fxxk
會員二級
註冊日期:
2010/9/6 0:07
所屬群組:
已註冊使用者
等級: 7
HP : 0 / 173
MP : 27 / 6473
EXP: 95
離線
這裡不是用來討論實際演算法上的問題的,而是說明一些相容性的問題。例如你想說輸入法不夠智慧什麼的還請不用期待了,這不是本文的關注對象。

先來說說安裝問題,眾所周知的,輸入法安裝之後,往往都會提到以下三個環境變數:XMODIFIERS,GTK_IM_MODULE,QT_IM_MODULE。這三個貨都是幹什麼的?為什麼要設置這三個貨?為什麼Linux輸入法用起來這麼不方便?

這就得從頭說起。

首先是XIM協議。更加詳細的說明請參考這裡:http://www.ibm.com/developerworks/cn/linux/i18n/xim/xim-2/index.html

所有的X程式都應當可以採用XIM作為輸入法的協議,這和Qt還是GTK沒有關係(X上的Qt和GTK,當然和Windows上的就沒什麼關係 了)。這個協定簡單說來就是會把按鍵事件先交給XIM Server,XIM Server做對應的處理,然後按照處理結果,將輸入結果或者按鍵再交給對應的應用程式。

這裡就要提到XMODIFIERS這個東西了,一般來講,都會設置成@im=xim server name這個值。也就是說,如果XIM Server有多個,那麼你可以根據這個變數來指定某個程式是使用這個XIM Server或者哪個XIM Server。這也就是比如fcitx為什麼運行兩個的時候會提示有同名的XIM Server在運行,是的,這個名稱不可重複。

但是Qt和GTK其實都不喜歡這個東西,因為如果需要跨平臺的話,這個XServer Only的東西其實說起來並不是那麼好使。於是就出現了IM Module這個東西。這個是什麼呢?那就是用來處理IM資訊的模組,原則上來說替代了XIM的協定,使得按鍵資訊實際上是交給這個模組,然後再交給IM Server(注意已經不是XIM了)。那麼如何支持原來的XIM呢?於是Qt和GTK實際上都自帶了一個IM Module,這個module負責將它收到的再通過XIM協議和XIM Server通信。

看起來一切都非常美好?我們來說幾個常見問題。

1、游標跟隨

這個問題不能怪任何一個輸入法,事實上由於IM Server負責顯示輸入框,游標的位置是由應用程式告訴我們的。它不告訴我們輸入框在哪,自然也就不能輸入。

2、BackSpace按鍵刪除的不是候選輸入的文字

例如pidgin的狀態吧,大致上,因為這裡pidgin為了用戶體驗,設計了一個鍵盤的圖示,按鍵時就會讓這個圖示變化,於是它需要抓取鍵盤按鍵,不幸的是它把BackSpace抓走了,於是輸入法沒有收到BackSpace鍵,那麼自然也不會做應該做的事情。

3、非純粹的GTK和Qt程式下的問題

比如Firefox,Flash,OpenOffice,Opera。他們在im module上面又包了一層,又或者是自己處理,於是就會出現更加奇妙的問題。

4、非CJK Locale無法輸入

我們來看看gtk-query-immodules-2.0的執行結果,以scim和xim為例子,ibus搞了個workaround避過了這個問題。

“/usr/lib/gtk-2.0/immodules/im-scim.so”
“scim” “SCIM Input Method” “scim” “/usr/share/locale” “ja:ko:zh”
“/usr/lib/gtk-2.0/2.10.0/immodules/im-xim.so”
“xim” “X Input Method” “gtk20″ “/usr/share/locale” “ko:ja:th:zh”

什麼情況呢?意思就是說明scim和xim是要在ko,ja,th,zh這幾個locale下面用的,其他情況我不預設選擇xim。

好了,en_US等locale無法輸入的問題根源就是這個,gtk不會默認用的,那怎麼整?可以靠GTK_IM_MODULE這個環境變數強制指 定,或者在/etc/gtk-2.0/gtk.immodules(那個命令負責生成這個檔,但是實際用的時候還是都這個檔),加上”en:”。 ibus的imdule的值是:”ko:ja:th:zh:*”,所以大概避免過了這個問題。還有一些說法是設置LC_CTYPE 為”zh_CN.UTF-8″。實際上是把自己偽裝成了zh,也沒問題。

接下來順便說下環境變數設置在哪裡,傳統說法是~/.bashrc,一起也確實管事,但最近通過kdm,gdm啟動的實際上不讀這個檔了(不太清 楚什麼時候變了,當然變了也並非沒有道理,本身就是給bash用的何必讀呢?),於是管事的最近成為了~/.xprofile,這裡需要注意。另外qt可 以也通過qtconfig選擇im module。

5、更加複雜的情況

libwebkit,office系的程式,等等複雜的gtk程式輸入框的處理恐怕也非如此原生於gtk的widget,於是也會出現這樣那樣的問題。

綜上所述的話windows這種為什麼這麼舒服……就是因為有一個固定的介面把大家統一起來了。至今沒有一個一統天下的輸入法協議,使得各個輸入法甚至不得不維護著和gtk,qt,xim分別相關的三份代碼。雖然說xim支援所有的程式,但是不待見xim的程式也很多。

如果給各個軟體支援輸入法程度排個操蛋的序的話就是這樣:

1、只支持XIM,但支持不好 < 2、支持im module,但都支持不好 < 3、支持im module,xim支持不好 = 4、支持im module,但只有xim支持得好 < 5、都支持得不錯

第一類典型就是修復bug前的Opera 11
第二類暫時想不出
第三,四類有firefox,ooo,libwebkit
第五類包括所有kde和qt程式。這也基本是我討厭gtk程式的原因。
其實還有第六類,對用戶來說最可惡,就是喜歡在一到五類之間來回在升級版本之後來回蹦躂的,比如gnome-do和flash,最近chromium似乎也榜上有名。

在如此fxxk的情況下,還堅持用著Linux的各位,還在開發著Linux的輸入法的各位,給Linux輸入法不斷提出建議的各位,我向各位表示 敬意。本文同時也解釋了一些不屬於輸入法的bug,於是如果你們遇見了類似的問題,請去端掉對應程式的buglist/issue list/bugzilla,如果不確定的話,在得到輸入法開發人員的確認之後,也歡迎繼續端掉他們的buglist,在輸入法用戶屬於Linux使用者小 群體的情況下,不主動彙報問題,是不能解決問題的;同時也提出了一些不是Bug的問題,希望在遇見這些問題之後,請壓制住自己的火氣,慢慢按照步驟解決它。

https://www.csslayer.tk/wordpress/diary/why-linux-ime-sucks/

2011/8/10 11:53
應用擴展 工具箱
回覆: 為什麼Linux下的輸入法如此Fxxk
會員五級
註冊日期:
2010/12/6 21:35
來自 K隆星上唯一的老鼠洞
所屬群組:
已註冊使用者
等級: 21
HP : 0 / 520
MP : 187 / 18993
EXP: 80
離線
有同感,每個輸入法都有自己的問題
SCIM在Gnome3底下根本就是悲劇
小問題比較少了一點。
GCIN比較頭痛的是選字欄會亂飄
新酷音蟲多多,詞音不太聰明。
ibus問題題算少,新酷音的蟲也不少
重貼和反白問題比較頭痛
設定還蠻簡單的

2011/8/10 12:49
應用擴展 工具箱
回覆: 為什麼Linux下的輸入法如此Fxxk
會員五級
註冊日期:
2009/5/16 4:07
所屬群組:
已註冊使用者
等級: 22
HP : 0 / 547
MP : 209 / 22474
EXP: 88
離線
konqi 寫到:

<snip>

在如此fxxk的情況下,還堅持用著Linux的各位,還在開發著Linux的輸入法的各位,給Linux輸入法不斷提出建議的各位,我向各位表示 敬意。本文同時也解釋了一些不屬於輸入法的bug,於是如果你們遇見了類似的問題,請去端掉對應程式的buglist/issue list/bugzilla,如果不確定的話,在得到輸入法開發人員的確認之後,也歡迎繼續端掉他們的buglist,在輸入法用戶屬於Linux使用者小 群體的情況下,不主動彙報問題,是不能解決問題的;同時也提出了一些不是Bug的問題,希望在遇見這些問題之後,請壓制住自己的火氣,慢慢按照步驟解決它。

https://www.csslayer.tk/wordpress/diary/why-linux-ime-sucks/


說實在的,我不知道這位仁兄在發什麼飆。以我個人的經驗,目前以iBus爲主的Linux的輸入法,已經完全不是昔日的阿斗。國內的Linux使用者,因爲還無法擺脫舊習慣,無法體會到現代Linux/Ubuntu所帶來的震撼感。在我們這裏,不少人願意拋棄掉他們一輩子用習慣的Mac,轉學Ubuntu,最主要的原因,就是因爲iBus-Pinyin 以及iBus-m17n。

約在5年前,我們在把SCIM移植到OpenSolaris時,就有SUN的工程師開始注意到iBUS。其間的過程跟其他的Open Source projects一樣,談起來頭頭是道,用起來卻不是那麼一回事。但因爲有Ubuntu始終如一的在支持,目前iBUS已可以無縫的併入Ubuntu的作業系統,根本沒有什麼XMODIFIERS/IM_MODULE的問題。(老生常談)如果我們這些已退休的LKK美國“學生"們都這麼快快樂樂的在用這個工具輸入中文,大家還什麼飆?

雖然iBus-Pinyin 以及iBus-m17n對想進入中文環境的美國人有很大的吸引力,有一些細節的地方,對國內以中文locale爲主的人,用起來可能還是有問題。但是這些細節問題,並不是只靠開發者可以解決的。如果我們這些中文的“專家”(比起美國人來,我想我們每一個人理論上都是中文的專家)不積極參與開發,或至少努力的提供使用者經驗,我們就只有一直在緬懷(不堪回想)的過去,偶爾發一下飆--然後睜眼看外國人用這些新工具用得那麼高興。

Edit: 我會說我們“理論”上都是中文的專家,主要是我們最常用的,以注音爲主的中文輸入法,走出了台灣,就幾乎無用武之地。逼自己用iBUS-Pinyin除了訓練英文打字的習慣外,還可以增加以後和世界接軌的機會。但是捨注音用拼音,我個人的經驗是,根本沒有人願意考慮,提都甭提了。 :-(

2011/8/10 13:34
應用擴展 工具箱
回覆: 為什麼Linux下的輸入法如此Fxxk
會員五級
註冊日期:
2008/10/7 21:19
所屬群組:
已註冊使用者
等級: 36
HP : 0 / 896
MP : 661 / 38395
EXP: 85
離線
引文的該位仁兄部落格風格好粉紅..

2011/8/10 13:40
I′m UGP
應用擴展 工具箱
回覆: 為什麼Linux下的輸入法如此Fxxk
會員五級
註冊日期:
2010/2/9 18:20
所屬群組:
已註冊使用者
等級: 31
HP : 0 / 758
MP : 438 / 29514
EXP: 33
離線
糟糕...引文那位仁兄的背景那部好像看過 (囧rz)

還在想說這語句怎麼看都不像台式中文
原來是這麼回事
當初看的時候完全沒想到最後那行是來源....

我在想可能是因為linux強調可轉移性吧?
導致這種詭異的局面

不過一定會慢慢劃一的~

2011/8/10 15:01
在下有時候會回答的很簡略
請善用google搜尋回答中的關鍵字

應用擴展 工具箱
回覆: 為什麼Linux下的輸入法如此Fxxk
會員三級
註冊日期:
2011/6/29 23:19
所屬群組:
已註冊使用者
等級: 10
HP : 0 / 237
MP : 43 / 8274
EXP: 49
離線
BrLi 寫道:
還在想說這語句怎麼看都不像台式中文
原來是這麼回事
當初看的時候完全沒想到最後那行是來源....
-------------------------------------------------
在下初看的感想則是:糟糕,我不但是電腦白痴,連中文也退步了,怎一點都看不懂!
原來不是台式中文啊,難怪每個字我都看得懂,但連成句子後就有看沒有懂了。

Linux下的輸入法有那麼Fxxk嗎?
也許我程度太低了竟不覺有何不順心的地方哩…哈!

2011/8/10 18:50
應用擴展 工具箱
回覆: 為什麼Linux下的輸入法如此Fxxk
會員三級
註冊日期:
2006/12/24 18:19
所屬群組:
已註冊使用者
等級: 13
HP : 0 / 309
MP : 68 / 14883
EXP: 38
離線
GCIN比較頭痛的是選字欄會亂飄

→ GTK 的 bug,1.6.4 中應該解決了這個問題

2011/8/10 20:51
應用擴展 工具箱
回覆: 為什麼Linux下的輸入法如此Fxxk
管理員
註冊日期:
2006/10/31 19:52
來自 Baker Street 221B
所屬群組:
網站管理員
已註冊使用者
討論區管理群
等級: 30
HP : 0 / 733
MP : 405 / 35576
EXP: 34
離線
pwzhangz 寫到:
說實在的,我不知道這位仁兄在發什麼飆。以我個人的經驗,目前以iBus爲主的Linux的輸入法,已經完全不是昔日的阿斗。國內的Linux使用者,因爲還無法擺脫舊習慣,無法體會到現代Linux/Ubuntu所帶來的震撼感。在我們這裏,不少人願意拋棄掉他們一輩子用習慣的Mac,轉學Ubuntu,最主要的原因,就是因爲iBus-Pinyin 以及iBus-m17n。

約在5年前,我們在把SCIM移植到OpenSolaris時,就有SUN的工程師開始注意到iBUS。其間的過程跟其他的Open Source projects一樣,談起來頭頭是道,用起來卻不是那麼一回事。但因爲有Ubuntu始終如一的在支持,目前iBUS已可以無縫的併入Ubuntu的作業系統,根本沒有什麼XMODIFIERS/IM_MODULE的問題。(老生常談)如果我們這些已退休的LKK美國“學生"們都這麼快快樂樂的在用這個工具輸入中文,大家還什麼飆?

雖然iBus-Pinyin 以及iBus-m17n對想進入中文環境的美國人有很大的吸引力,有一些細節的地方,對國內以中文locale爲主的人,用起來可能還是有問題。但是這些細節問題,並不是只靠開發者可以解決的。如果我們這些中文的“專家”(比起美國人來,我想我們每一個人理論上都是中文的專家)不積極參與開發,或至少努力的提供使用者經驗,我們就只有一直在緬懷(不堪回想)的過去,偶爾發一下飆--然後睜眼看外國人用這些新工具用得那麼高興。

Edit: 我會說我們“理論”上都是中文的專家,主要是我們最常用的,以注音爲主的中文輸入法,走出了台灣,就幾乎無用武之地。逼自己用iBUS-Pinyin除了訓練英文打字的習慣外,還可以增加以後和世界接軌的機會。但是捨注音用拼音,我個人的經驗是,根本沒有人願意考慮,提都甭提了。 :-(

框架歸框架,底層歸底層
這一篇很顯然是在探討底層XIM, QT, GTK的相關問題
我其實覺得這個問題很嚴重...

2011/8/10 20:59
應用擴展 工具箱
回覆: 為什麼Linux下的輸入法如此Fxxk
會員三級
註冊日期:
2010/5/6 20:27
所屬群組:
已註冊使用者
等級: 12
HP : 0 / 298
MP : 64 / 11409
EXP: 93
離線
以前就在猜想,打gcin久一點,速度會變慢.會不會是清除不完全,慢慢累積拖慢.

2011/8/10 21:46
應用擴展 工具箱
回覆: 為什麼Linux下的輸入法如此Fxxk
會員五級
註冊日期:
2009/10/16 8:57
所屬群組:
已註冊使用者
等級: 22
HP : 0 / 541
MP : 204 / 21592
EXP: 67
離線
嚴格說起來,不是爛,是進步的太慢,而且有點閉門造車。

我從十多年前就沒用過 MS 系統,一路走來,不論是在 FreeBSD 或是六年前改用的 UBUNTU 中文輸入是個很大的問題,另一項就是缺字及對應碼,都是各搞各的。

以前都是用 GCIN,但說真的,進步真的很慢,最近幾個月來換成 iBUS 1.3.9,經過一番適應,倒也用的還好。

我們要的是一個 “穩定” 的輸入法,而不是一個 “花俏” 且不穏定的輸入法,這很難嗎?

當然,作者沒責任為這個負責,也沒義務承擔。但中文輸入是華語世界的一個指標,不重要嗎?為何十年多了,問題還是一堆?

大家不要公幹我,先靜下心來想想是否有幾分真實 ^_^

2011/8/10 23:01
同源一体、感同身受、樂於分享、教學相長!
寬廣的心, 世界不會小 ^_^
CreMaker 的生活網誌
應用擴展 工具箱

(1) 2 3 4 5 »

 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.