為什麼Linux下的輸入法如此Fxxk [論壇 - Ubuntu 與 KDE]
正在瀏覽:
1 名遊客
為什麼Linux下的輸入法如此Fxxk |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員二級
![]() ![]() 註冊日期:
2010/9/6 0:07 所屬群組:
已註冊使用者 等級: 7
HP : 0 / 173
![]() |
這裡不是用來討論實際演算法上的問題的,而是說明一些相容性的問題。例如你想說輸入法不夠智慧什麼的還請不用期待了,這不是本文的關注對象。
先來說說安裝問題,眾所周知的,輸入法安裝之後,往往都會提到以下三個環境變數: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
![]() |
有同感,每個輸入法都有自己的問題
SCIM在Gnome3底下根本就是悲劇 小問題比較少了一點。 GCIN比較頭痛的是選字欄會亂飄 新酷音蟲多多,詞音不太聰明。 ibus問題題算少,新酷音的蟲也不少 重貼和反白問題比較頭痛 設定還蠻簡單的
2011/8/10 12:49
|
||||||||||
![]() |
回覆: 為什麼Linux下的輸入法如此Fxxk |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2009/5/16 4:07 所屬群組:
已註冊使用者 等級: 22
HP : 0 / 547
![]() |
konqi 寫到: 說實在的,我不知道這位仁兄在發什麼飆。以我個人的經驗,目前以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
![]() |
引文的該位仁兄部落格風格好粉紅..
2011/8/10 13:40
|
||||||||||
I′m UGP
|
|||||||||||
![]() |
回覆: 為什麼Linux下的輸入法如此Fxxk |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2010/2/9 18:20 所屬群組:
已註冊使用者 等級: 31
HP : 0 / 758
![]() |
糟糕...引文那位仁兄的背景那部好像看過 (囧rz)
還在想說這語句怎麼看都不像台式中文 原來是這麼回事 當初看的時候完全沒想到最後那行是來源.... 我在想可能是因為linux強調可轉移性吧? 導致這種詭異的局面 不過一定會慢慢劃一的~
2011/8/10 15:01
|
||||||||||
![]() |
回覆: 為什麼Linux下的輸入法如此Fxxk |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員三級
![]() ![]() 註冊日期:
2011/6/29 23:19 所屬群組:
已註冊使用者 等級: 10
HP : 0 / 237
![]() |
BrLi 寫道:
還在想說這語句怎麼看都不像台式中文 原來是這麼回事 當初看的時候完全沒想到最後那行是來源.... ------------------------------------------------- 在下初看的感想則是:糟糕,我不但是電腦白痴,連中文也退步了,怎一點都看不懂! 原來不是台式中文啊,難怪每個字我都看得懂,但連成句子後就有看沒有懂了。 Linux下的輸入法有那麼Fxxk嗎? 也許我程度太低了竟不覺有何不順心的地方哩…哈!
2011/8/10 18:50
|
||||||||||
![]() |
回覆: 為什麼Linux下的輸入法如此Fxxk |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員三級
![]() ![]() 註冊日期:
2006/12/24 18:19 所屬群組:
已註冊使用者 等級: 13
HP : 0 / 309
![]() |
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
![]() |
pwzhangz 寫到: 框架歸框架,底層歸底層 這一篇很顯然是在探討底層XIM, QT, GTK的相關問題 我其實覺得這個問題很嚴重...
2011/8/10 20:59
|
||||||||||
![]() |
回覆: 為什麼Linux下的輸入法如此Fxxk |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員三級
![]() ![]() 註冊日期:
2010/5/6 20:27 所屬群組:
已註冊使用者 等級: 12
HP : 0 / 298
![]() |
以前就在猜想,打gcin久一點,速度會變慢.會不會是清除不完全,慢慢累積拖慢.
2011/8/10 21:46
|
||||||||||
![]() |
回覆: 為什麼Linux下的輸入法如此Fxxk |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2009/10/16 8:57 所屬群組:
已註冊使用者 等級: 22
HP : 0 / 541
![]() |
嚴格說起來,不是爛,是進步的太慢,而且有點閉門造車。
我從十多年前就沒用過 MS 系統,一路走來,不論是在 FreeBSD 或是六年前改用的 UBUNTU 中文輸入是個很大的問題,另一項就是缺字及對應碼,都是各搞各的。 以前都是用 GCIN,但說真的,進步真的很慢,最近幾個月來換成 iBUS 1.3.9,經過一番適應,倒也用的還好。 我們要的是一個 “穩定” 的輸入法,而不是一個 “花俏” 且不穏定的輸入法,這很難嗎? 當然,作者沒責任為這個負責,也沒義務承擔。但中文輸入是華語世界的一個指標,不重要嗎?為何十年多了,問題還是一堆? 大家不要公幹我,先靜下心來想想是否有幾分真實 ^_^
2011/8/10 23:01
|
||||||||||
![]() |
您可以查看帖子.
您不可發帖.
您不可回覆.
您不可編輯自己的帖子.
您不可刪除自己的帖子.
您不可發起投票調查.
您不可在投票調查中投票.
您不可上傳附件.
您不可不經審核直接發帖.