2014年11月3日月曜日

GNOME 3.14でキーボードレイアウトがjpにならない (Keyboard layout not setting correctly after gnome 3.14 update)

*2015/01/10追記ここから
/usr/share/ibus/component/mozc.xmlの設定を変更することで、きれいに直ることが分かった。詳細は、以下のページ参照。
続・GNOME 3.14でキーボードレイアウトがjpにならない
*2015/01/10追記ここまで

結構前になるが、先日のアップデート後、キーボードレイアウトがusになって起動されるようになってしまった。キーボードレイアウトは自分の環境では/etc/X11/xorg.conf.d/10-keyboard.confで設定している。再度確認。
less /etc/X11/xorg.conf.d/10-keyboard.conf

Section "InputClass"
        Identifier "evdev keyboard catchall"
        MatchIsKeyboard "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
        Option "XkbModel" "hhk"
        Option "XkbLayout" "jp"
EndSection


Option "XkbLayout" "jp"の設定があるので、X11の設定までは問題ない。
さらに、IBusによってキーボードレイアウトが書き換えない設定が、有効になっているかを確認する。アクティビティから「IBusの設定」を起動して、詳細のタブに移動して、「システムのキーボードレイアウトを使用する」にチェックが入っているか確認。



X11の設定もIBusの設定も問題ない。ここで、現在のキーボードレイアウトの状態を確認してみる。
$ setxkbmap -query

rules:      evdev
model:      hhk
layout:     us,us
variant:    ,

または、
$ xprop -root | grep XKB

_XKB_RULES_NAMES(STRING) = "evdev", "hhk", "us,us", ",", ""


レイアウトがusになってしまっている。/etc/X11/xorg.conf.d/10-keyboard.confの設定が反映されていないこと、または、/etc/X11/xorg.conf.d/10-keyboard.confの設定が上書きされてしまっていることが原因なきがする。

この前、xorg-server 1.16のアップデートの記事[1]が公式ページに上がっていたので、それを読んでみると

" The default configuration files are now in /usr/share/X11/xorg.conf.d, all host configurations are still taking place in /etc/X11/xorg.conf.d/ directory. Please note that files 10-evdev.conf and 10-quirks.conf in /etc/X11/xorg.conf.d could be renamed with .pacsave suffix, which could break your configuration, then just rename them and remove the .pacsave suffix. "

らしい。自分のキーボードの設定を/usr/share/X11/xorg.conf.d/以下の設定とマージしたら治るのではないかと思って、/usr/share/X11/xorg.conf.d/10-evdev.confに今までの設定をマージすることに。/usr/share/X11/xorg.conf.d/10-evdev.confは、X11の入出力デバイスの設定ファイル。

/usr/share/X11/xorg.conf.d/10-evdev.confの設定ファイルにhhkとjpの行を追加。Option "XkbModel" "hhk"のhhkの部分は自分の使っているキーボードのモデルにあったものに変更する。(/usr/share/X11/xkb/rules/evdev.lst中に、キーボードのベンダー等の説明と、それに対応するXkbModelの行に書くべき文字列が載っている。)
$ sudo vim /usr/share/X11/xorg.conf.d/10-evdev.conf

#
# Catch-all evdev loader for udev-based systems
# We don't simply match on any device since that also adds accelerometers
# and other devices that we don't really want to use. The list below
# matches everything but joysticks.

Section "InputClass"
        Identifier "evdev pointer catchall"
        MatchIsPointer "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
EndSection

Section "InputClass"
        Identifier "evdev keyboard catchall"
        MatchIsKeyboard "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
        Option "XkbModel" "hhk" ←ここを追加
        Option "XkbLayout" "jp" ←ここを追加
EndSection
...


ついでに、以前設定した/etc/X11/xorg.conf.d/20-intel.conf も/usr/share/X11/xorg.conf.d/以下に移動させておく。
$ mv /etc/X11/xorg.conf.d/20-intel.conf /usr/share/X11/xorg.conf.d/


再起動後、setxkbmap -queryでキーボードレイアウトを確認したが、usのまま。setxkbmap -queryの出力を見ても、model: hhkは反映されているので、X11のキーボードレイアウトは読み込まれているが、その設定が上書きされているんだろう。
こういう場合に、悪さをするのはだいたいGNOME周辺の設定ツール。こう思ってから、いろいろ設定をいじって試行錯誤。結局以下の方法で解決することが判明。GNOME 3.14でIBusを使うと、キーボードレイアウトが自動でusに設定されてしまうことが問題。バグなのではないかと思う。

GNOME Settingsから設定する方法
GNOMEの「設定」をアクティビティから立ち上げる。「地域と言語」に移動。


ibus-mozcを使っている場合、「入力ソース」に「日本語 (Mozc)」と表示されているはず。この下に「日本語」というエントリを追加する。追加方法は「+」をクリックして、「日本語」を選択、選択肢の中からさらに「日本語」を選択。


これで、地域と言語の設定が以下のように、「日本語 (Mozc)」の下に、「日本語」のエントリが追加されていれば完了。



dconf editorから設定する方法
dconf editorをアクティビティから立ち上げる。org.gnome.desktop.input-sourcesに移動して、sourcesのエントリを以下のように編集。これで、Mozcの後にxkbの日本語キーボードレイアウトが反映される。


以前はxkbの設定がなくても、X11の日本語キーボードレイアウト設定が書き換えられることがなかったので、問題なかった。

以上のGNOMEの設定をいじるほうほうだと、jpの入力ソースが加わってしまうので、これが嫌ならOS起動後にxkbのコマンドを.bashrcとかに書いて、キーボードレイアウトを変更したほうが良い気もする。結局、IBusによってキーボードレイアウトが書き換えられてしまっているのが、原因な気がする。IBusのアップデートで治るのだろうか。IBusのバグとして上がってたりするのだろうか。

調べてみると、似たような話題のスレッドがあった。[2]

参考:
[1]xorg-server 1.16 is now available
[2][SOLVED] Keyboard layout not setting correctly after gnome 3.14 update

スポンサーリンク

スポンサーリンク

0 件のコメント:

コメントを投稿