AWS EC2 UbuntuインスタンスにNICE DCVで接続して開発している環境で、韓国語IME(kime)をインストールしたところ、一文字だけ入力されてすぐ英語モードに戻る問題に遭遇しました。
環境
- Ubuntu(GNOME、X11)
- NICE DCV 2025.0(Webクライアント)
- kime 3.1.1
症状
Shift+SpaceやHangulキーで韓国語モードに切り替えた後、一文字だけ入力されて即座に英語モードに戻る。例えば「안녕하세요」と入力しようとすると「ㅇ」だけが出力され、残りは英語で入力される。
原因分析
1. kime設定ファイルの文法エラー
システム設定/etc/xdg/kime/config.yamlにShift-Spaceと記述されていたが、kime 3.xではS-Spaceが正しい文法。
kime-check
# Config file ... Fail (Can't parse config.yaml: engine.global_hotkeys:
# invalid value: string "Shift-Space", expected Key)
2. GNOME ibus hangulとの競合
GNOME入力ソースに('ibus', 'hangul')が設定されているとkimeと競合する。
3. 根本原因:DCVによるキーボードイベントの横取り
上記2つを修正しても一文字だけ入力される症状が続いた。kimeデーモンのログをtraceレベルで確認したところ、韓国語モードへの切り替えが一度も記録されていなかった — インジケーターは常に「Latin」のみを表示。
DCVはキーボードイベントをクライアント側で解釈してからサーバーに転送するため、サーバーで動作しているkimeが正しくキーイベントを受け取れないことが根本原因だった。
解決方法
1. kimeユーザー設定の作成
~/.config/kime/config.yamlを作成してシステム設定の文法エラーを回避:
daemon:
modules:
- Xim
- Wayland
- Indicator
indicator:
icon_color: Black
engine:
default_category: Latin
global_category_state: true
global_hotkeys:
S-Space:
behavior: !Toggle
- Hangul
- Latin
result: Consume
AltR:
behavior: !Toggle
- Hangul
- Latin
result: Consume
Hangul:
behavior: !Toggle
- Hangul
- Latin
result: Consume
Esc:
behavior: !Switch Latin
result: Bypass
latin:
layout: Qwerty
preferred_direct: true
hangul:
layout: dubeolsik
word_commit: false
preedit_johab: Needed
主な変更点:Shift-Space → S-Space、global_category_state: true
2. GNOME入力ソースの整理
# ibus hangulを削除、USキーボードのみ
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us')]"
# im-configをkimeに設定
im-config -n kime
3. DCVサーバーサイドキーボード設定(核心!)
/etc/dcv/dcv.confに以下を追加:
[input]
use-server-keyboard-layout='always-on'
この設定により、DCVがキーボードイベントをクライアント側で解釈せず、サーバーにそのまま転送するようになる。
4. システム環境変数の登録
DCVセッションがkime環境変数を認識するよう/etc/environmentに追加:
GTK_IM_MODULE=kime
QT_IM_MODULE=kime
XMODIFIERS=@im=kime
5. 適用
sudo systemctl restart dcvserver
DCVクライアントから再接続すれば韓国語入力が正常に動作する。
結果
- **
Right Alt**キーで韓英切替:正常動作 Shift+Space:DCVウェブクライアントが依然横取りするため動作せずHangulキー:キーボードによる
DCV環境ではRight Altが最も安定した韓英切替キー。
まとめ
| 設定ファイル | 変更内容 |
|---|---|
~/.config/kime/config.yaml | ユーザー設定作成(文法修正 + global_category_state) |
/etc/dcv/dcv.conf | use-server-keyboard-layout='always-on' |
/etc/environment | kime環境変数3つ追加 |
| GNOME入力ソース | ('xkb', 'us')のみ |
DCVで韓国語入力ができない場合、高い確率でDCVがキーイベントを横取りしていることが原因。use-server-keyboard-layout='always-on'が核心的な解決策。