| |||||||
adm | Find | login register |
大家好我現在遇到一個小問題 首先就是我的空白鍵是選字鍵 在我「還未輸入任何中文前」,只要按下空白鍵 (似乎就會去試圖想要去選字,然後根本沒有字給他選) 就會使得畫面卡住
以下是我的一些設定 系統 Gentoo 安裝 package: =app-i18n/gcin-2.8.3 USE="filter-nobopomofo gtk3 qt4 -anthy -chewing -chinese-sound" ~/.xinitrc ======
$ gtk-query-immodules-2.0 ====== "/usr/lib64/gtk-2.0/2.10.0/immodules/im-multipress.so" "/usr/lib64/gtk-2.0/2.10.0/immodules/im-ipa.so" "/usr/lib64/gtk-2.0/2.10.0/immodules/im-cyrillic-translit.so" "/usr/lib64/gtk-2.0/2.10.0/immodules/im-ti-et.so" "/usr/lib64/gtk-2.0/2.10.0/immodules/im-inuktitut.so" "/usr/lib64/gtk-2.0/2.10.0/immodules/im-cedilla.so" "/usr/lib64/gtk-2.0/2.10.0/immodules/im-viqr.so" "/usr/lib64/gtk-2.0/2.10.0/immodules/im-ti-er.so" "/usr/lib64/gtk-2.0/2.10.0/immodules/im-thai.so" "/usr/lib64/gtk-2.0/2.10.0/immodules/im-xim.so" "/usr/lib64/gtk-2.0/2.10.0/immodules/im-am-et.so" "/usr/lib64/gtk-2.0/immodules/im-gcin.so"
======
$ gtk-query-immodules-3.0 ====== "/usr/lib64/gtk-3.0/3.0.0/immodules/im-multipress.so" "/usr/lib64/gtk-3.0/3.0.0/immodules/im-ipa.so" "/usr/lib64/gtk-3.0/3.0.0/immodules/im-cyrillic-translit.so" "/usr/lib64/gtk-3.0/3.0.0/immodules/im-ti-et.so" "/usr/lib64/gtk-3.0/3.0.0/immodules/im-inuktitut.so" "/usr/lib64/gtk-3.0/3.0.0/immodules/im-cedilla.so" "/usr/lib64/gtk-3.0/3.0.0/immodules/im-viqr.so" "/usr/lib64/gtk-3.0/3.0.0/immodules/im-ti-er.so" "/usr/lib64/gtk-3.0/3.0.0/immodules/im-thai.so" "/usr/lib64/gtk-3.0/3.0.0/immodules/im-xim.so" "/usr/lib64/gtk-3.0/3.0.0/immodules/im-am-et.so" "/usr/lib64/gtk-3.0/immodules/im-gcin.so" ======
這兩個檔案確實存在 ====== $ ls -l /usr/lib64/gtk-2.0/immodules $ ls -l /usr/lib64/gtk-3.0/immodules ======
還有相關設定
| |||||||||||||
這個先移除看看。 | |||||||||||||
| |||||||||||||
可能先只 install gcin 最基本的,create 新的 user account. 從頭開始測才知道問題在哪裡。 | |||||||||||||
這是gentoo在安裝gcin-2.8.3時的設定檔 https://github.com/microcai/gentoo-zh/blob/master/app-i18n/gcin/gcin-2.8.3.ebuild 預設部份只有 --use_i18n=Y --use_tsin=Y --use_qt3=N 沒有太多複雜的設定 | |||||||||||||
剛剛測試了一下 2.8.0~2.8.3 各個版本 都是用 gentoo portage ebuild 的安裝方式,預設條件都相同(見上篇) 2.8.0 和 2.8.1 不會按空白鍵就卡住 看來是從 2.8.1 → 2.8.2 這次改版引發的問題 | |||||||||||||
是用什麼輸入法?有 diff gcin 2.8.1 2.8.2,看不出問題出在哪裡。 | |||||||||||||
只有詞音輸入法會出現這個問題 | |||||||||||||
我來考古一下,和很不專業的 trace
reproduce steps
此時我用 gdb 去 attach 看一下 bt
#0 0x00007fc135b4c580 in read () from /lib64/libc.so.6 卡在 read(),我猜測這段 code 是在 eve.cpp 裡 248 行,在等 pipe 的值 242 if (pid) { 243 close(pfdw[0]); 244 close(pfdr[1]); 245 if (write(pfdw[1], text, len) < 0) { 246 } 247 close(pfdw[1]); 248 int rn = read(pfdr[0], filter_text, sizeof(filter_text) - 1); 249 filter_text[rn] = 0; 250 // puts(filter_text); 251 close(pfdr[0]); 252 text = filter_text; 253 len = rn; 254 } else {
我對 gcin source code 不熟,不知道該怎麼再追下去 | |||||||||||||
這邊是有用 GCIN_OUTPUT_FILTER 才會進入這段 code,這個 filter 只能用在 filter process 執行然後馬上結束,如果 filter process 一直不結束,就會產生卡住這種情形。我自己沒在用。 這個 filter 有可能造成安全漏洞,未來的版本有可能會內定不開啟,需要使用者自行 compile 打開。 edited: 4
| |||||||||||||
感謝解惑。我現在把注音文的 filter 拿掉,就不會卡住了。 |
| |||||||
adm | Find | login register |