Skip to content

antony@notes:~/misc$ cat "Ubuntu-XFCE-安裝繁體中文輸入法-設定左-Shift-切換中英文.md"

Ubuntu XFCE 安裝繁體中文輸入法 & 設定左 Shift 切換中英文

2026-05-04· misc

Ubuntu XFCE 安裝繁體中文輸入法 & 設定左 Shift 切換中英文

環境

  • 作業系統:Ubuntu Desktop
  • 桌面環境:XFCE
  • 連線方式:透過 RDP 連入(xrdp)
  • 輸入法框架:IBus
  • 目標:使用 Chewing(新酷音)輸入繁體中文,並用單按左 Shift 切換中英文

本文件適用於已使用 IBus 框架的 XFCE 環境。如果你的桌面是 GNOME,設定方式會不同;GNOME Shell 不接受純 modifier 鍵當切換熱鍵。


步驟一:確認環境

1-1 確認桌面環境

echo $XDG_CURRENT_DESKTOP
echo $DESKTOP_SESSION

預期輸出:

XFCE
xfce

1-2 確認目前的輸入法框架

echo $GTK_IM_MODULE $QT_IM_MODULE $XMODIFIERS

預期輸出:

ibus ibus @im=ibus

1-3 確認 IBus daemon 正常運作

ps aux | grep ibus-daemon

預期輸出(關鍵在 --xim 參數要存在):

bigred      5010  0.1  0.0 457360  8652 ?  Ssl  20:33  0:00 /usr/bin/ibus-daemon --daemonize --xim

步驟二:確認 / 安裝中文輸入法引擎

2-1 確認系統有 Chewing 引擎

ibus list-engine | grep -i -E "chewing|pinyin|bopomofo|rime|cangjie"

預期輸出(看到 chewing - Chewing 即代表已安裝):

language: Pinyin
  chewing - Chewing
language: Tatar, Crimean
  xkb:ua:crh_f:crh - Crimean Tatar (Turkish F)
  ...

2-2 若沒有 Chewing,執行以下指令安裝

sudo apt update
sudo apt install ibus-chewing
ibus restart

步驟三:確認輸入法清單包含 English 與 Chewing

gsettings get org.freedesktop.ibus.general preload-engines

預期輸出:

['xkb:us::eng', 'chewing']

如果清單不對,用以下指令設定:

gsettings set org.freedesktop.ibus.general preload-engines "['xkb:us::eng', 'chewing']"

步驟四:設定環境變數(關鍵步驟)⭐

這是讓設定能穩定生效的關鍵。即使目前 echo $GTK_IM_MODULE 顯示為 ibus,也要把它寫入 ~/.xprofile,確保 XFCE session 啟動時一定會載入。

4-1 檢查目前狀態

cat ~/.xprofile 2>/dev/null
cat ~/.profile 2>/dev/null | grep -E "GTK_IM_MODULE|QT_IM_MODULE|XMODIFIERS"

如果兩個指令都沒輸出,代表環境變數沒寫在使用者層級的設定檔。雖然系統可能有臨時注入,但不夠穩定,要明確寫入。

4-2 寫入 ~/.xprofile

cat > ~/.xprofile << 'EOF'
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
EOF

4-3 確認檔案內容

cat ~/.xprofile

預期輸出:

export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
export XMODIFIERS=@im=ibus

步驟五:設定左 Shift 為切換熱鍵

5-1 開啟 IBus 設定

ibus-setup

5-2 設定 Next input method 為 Shift_L

General 分頁:

  1. 找到 Keyboard Shortcuts 區塊的 Next input method 欄位
  2. 點右側的 ... 按鈕開啟設定視窗
  3. 刪除清單裡所有現有的快捷鍵(例如 <Shift>space)
  4. Key code 欄位手動輸入:
    Shift_L
  5. Modifiers 區的所有勾選都不要勾(Shift / Ctrl / Alt / Super 全部不勾)
  6. Add,再點 OK

設定完成後主畫面的 Next input method 欄位應顯示為:

Shift_L

注意:Modifiers 一個都不能勾。如果勾了 <Shift> 變成 modifier 用,或是寫成組合鍵(例如 <Control>Shift_L),都會導致切換行為異常。

5-3 重啟 IBus

ibus restart

步驟六:測試

開啟任一支援文字輸入的應用程式(文字編輯器、瀏覽器網址列等),按下左 Shift 鍵,應該會看到:

  • 右上角(或工作列上)的 IBus 圖示在 EN 與中文圖示之間切換
  • 切到中文模式後,可正常用注音輸入繁體中文
  • Shift + 字母鍵(如 Shift+a) 仍然正常輸出大寫字母,不會誤觸切換

完整指令速查

整個流程可以濃縮成以下幾步:

# 1. 確認環境
echo $XDG_CURRENT_DESKTOP                                      # 應為 XFCE
echo $GTK_IM_MODULE $QT_IM_MODULE $XMODIFIERS                  # 應為 ibus ibus @im=ibus
ps aux | grep ibus-daemon                                      # 確認有 --xim

# 2. 確認引擎
ibus list-engine | grep -i chewing                             # 應看到 chewing - Chewing
gsettings get org.freedesktop.ibus.general preload-engines     # 應為 ['xkb:us::eng', 'chewing']

# 3. 寫入環境變數(關鍵)
cat > ~/.xprofile << 'EOF'
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
EOF

# 4. 開設定 → Next input method 設成 Shift_L (Modifiers 全不勾)
ibus-setup

# 5. 重啟 IBus
ibus restart

故障排除

症狀可能原因解法
按 Shift 完全沒反應環境變數未生效確認 ~/.xprofile 已寫入,登出再登入 RDP session
按任何鍵都會觸發切換Modifiers 勾選了 <Shift>,或 IBus 把 Shift_L 當 modifier 處理重新進 ibus-setup,確認 Modifiers 完全沒勾
切換到中文後切不回英文快捷鍵設成 <Control>Shift_L 等 modifier 組合,IBus 對這類組合切換不穩定改回單獨 Shift_L,或改用 <Shift>space<Super>space
螢幕中央跳出選單但右上角不變IBus 與桌面環境通訊不同步重啟 IBus(ibus restart),必要時重新登入 session
Shift+字母 變成切換而不是大寫同上(modifier 處理錯誤)重新檢查 ibus-setup 的設定

備註:為什麼 XFCE 可以這樣設,GNOME 不行

  • GNOME Shell 會強制攔截輸入法熱鍵,並要求快捷鍵至少包含一個非 modifier 鍵,因此單按 Shift 在 GNOME 上做不到
  • XFCE 不會攔截熱鍵,IBus 可以完整接管,所以單按 Shift_L 切換才有機會穩定運作。
  • 如果一定要在 GNOME 上實現單按 Shift 切換,需要改用 Fcitx5 框架(它自己接管熱鍵處理,可繞過 GNOME 的限制)。