2019年12月31日火曜日

Linuxでキーボードレイアウトが日本語配列にならない時の対処法

Linuxでキーボードレイアウトが日本語配列にならない
Linuxのインストールした直後や、ソフトウェアアップデートをした直後にキーボードレイアウトが英語キーボードの配列になってしまい、日本語のレイアウトにできないことがある。

Linuxのキーボードレイアウトの設定は、様々なソフトウェアが関与しているので設定がややこしい。さらに最近は、XorgからWaylandにウィンドウサーバーが変更されており、昔と設定方法が変わってきている。

かく言う私も、Linuxのアップデート後にキーボードレイアウトが日本語にならないトラブルに何度もあっており、最近もそのトラブルにあった。トラブル解決のために色々と調べてみて、分かったことを記事にしようと思う。

この記事では、Linux環境でキーボードレイアウトを日本語にする際にチェックするポイントをまとめておく。


Linuxの環境
今回キーボードレイアウトの設定をしたのは、以下の環境。
  • OS:Arch Linux
  • デスクトップ環境:GNOME
  • ウィンドウサーバー:Wayland (GNOMEのデフォルト)
  • 日本語入力ソフト:Fcitx - Mozc
  • 入力デバイスのドライバ:libinput

最近の日本語入力環境について
設定の説明の前に、最近のデスクトップ環境についてちょっと説明をしておく。

以前はウィンドウサーバーとしてXorgが主に使われていたが、現在はWaylandが使われるようになっている。この変更に伴い、キーボードレイアウトの設定方法も大きく変わってきている。

したがって、以前Xorg向けに書いていたキーボードレイアウトの設定は、ほとんど実際の入力環境に反映されていない。自分もこのことがあまり分かっておらず、昔の設定ファイルを見直したりしてかなりハマってしまった。

また、ウィンドウサーバーだけではなく、入力デバイスのドライバも変わっている。以前はevdevが使われていたが、最近はlibinputが使われているようだ。

そして、Wayland環境でキーボードレイアウト設定する時のポイントは以下の2つ。
  • Wayland環境では、キーボードレイアウトの設定は、他のアプリケーションに任せている。例えば、GNOMEの「設定アプリケーション」、「日本語入力ソフト(Fcitx)」が設定を担っている。
  • Wayland環境では、Xorgで使っていたキーボードレイアウト設定はほとんど使われない。マニュアルにはXorg設定の解説が書かれていたりするが、設定を書いても自分の環境では反映されなかった。

「What is libinput? — libinput 1.14.3 documentation」「FAQs - Frequently Asked Questions — libinput 1.14.3 documentation」のページに少し詳しい説明が書いてある。

libinputが使われているか確認する方法
以前は、evdevが入力デバイスのドライバとして使われていたが、最近はlibinputが使われている。以下のコマンドで、xorgのログファイルを確認することで、libinputが使われているか確認できる。

キーボードのデバイス名(ここでは、Chicony PFU-68 USB Keyboard')が表示されれば、libinputがドライバとして使われている。最近のLinuxではlibinputが主流なので、ほとんど問題ないと思う。
$ grep -e "Using input driver 'libinput'" .local/share/xorg/Xorg.0.log

[   126.435] (II) Using input driver 'libinput' for 'Power Button'
[   126.454] (II) Using input driver 'libinput' for 'Video Bus'
[   126.456] (II) Using input driver 'libinput' for 'Power Button'
[   126.463] (II) Using input driver 'libinput' for 'Chicony PFU-68 USB Keyboard'
[   126.466] (II) Using input driver 'libinput' for 'Avago USB LaserStream(TM) Mouse'
[   126.471] (II) Using input driver 'libinput' for 'Eee PC WMI hotkeys'

GNOMEのキーボードレイアウトの設定
GNOMEでのキーボードレイアウトの設定は、「設定(GNOME Settings)」から変更できる。(OSのインストール時に、ロケールの日本語設定はできているものとする。)

まず、アクティビティから「設定」を開く。



次に、左の「地域と言語」を開く。


「地域と言語」の言語と入力ソースが、以下の画像のように「日本語」になっていれば、GNOMEの設定は問題ない。


Fcitxのキーボードレイアウトの設定
GNOME上で日本語設定をすると、GNOME関連のアプリケーションのキーボードレイアウトはほとんど日本語配列になる。しかし、FirefoxやGoogle Chrome (Chromium)などは設定が反映されず、日本語配列にならなかった。

FirefoxやChromiumなどは、XWayland上で動作しているようで、これらのアプリケーションのキーボードレイアウトを変更するには、Fcitxの設定を変える必要があった。

自分の環境では、入力メソッドを2つ用意してその2つを切り替える方法が、「直接入力」と「かな入力」の切り替えが一番スムーズであった。

※ Wayland上で、Fcitxを使うには「WaylandでFcitxを使う | 普段使いのArch Linux」の設定が必要なので、設定していない場合は要変更。

Fcitxのキーボードレイアウトを設定するために、Fcitxのバーを右クリックしてメニューを表示させ、「設定」をクリック。


自分の環境では、以下の画像のように「キーボード - 英語(US)」と「Mozc」が登録されていた。この「キーボード - 英語(US)」が登録されていると、キーボードレイアウトが英語配列になってしまう。


そこで、まず「キーボード - 英語(US)」を削除する。「キーボード - 英語(US)」が青色に選択された状態で、ウィンドウ下の「ー(マイナス)」ボタンをクリック。


以下のように、「キーボード - 英語(US)」が削除されたら、ウィンドウ下の「+(プラス)」ボタンをクリック。


「入力メソッドの追加」ウィンドウが開くので、「キーボード - 日本語」をクリックして、「OK」をクリック。


「キーボード - 日本語」が選択された状態で、「^(アップアロー)」ボタンをクリック。


以下のように、「キーボード - 日本語」、「Mozc」の順番で登録されれば設定は完了なので、ウィンドウを閉じる。これで、日本語配列のキーボードレイアウトで文字入力ができるようになった。


その他の設定
以前使われていた、Xorgのキーボード設定関連のファイルなどの中身を載せておく。以下の設定はほとんど使われていないので、英語のレイアウトであっても日本語のレイアウトであっても入力環境には反映されないが、一応参考のために載せておく。

/etc/X11/xorg.conf.d/00-keyboard.conf
$ cat /etc/X11/xorg.conf.d/00-keyboard.conf 

# Written by systemd-localed(8), read by systemd-localed and Xorg. It's
# probably wise not to edit this file manually. Use localectl(1) to
# instruct systemd-localed to update it.
Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout" "jp"
EndSection

/usr/share/X11/xorg.conf.d/40-libinput.conf
$ cat /usr/share/X11/xorg.conf.d/40-libinput.conf 

...
Section "InputClass"
        Identifier "libinput keyboard catchall"
        MatchIsKeyboard "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
EndSection
...

setxkbmap
$ setxkbmap -query

rules:      evdev
model:      pc105
layout:     us

localectl
$ localectl status

   System Locale: LANG=ja_JP.UTF-8
       VC Keymap: jp106
      X11 Layout: jp

xinput

「WARNING: running xinput against an Xwayland server. See the xinput man page for details.」ってエラーが出ていて、マニュアルに書いてある
In most instances, using xinput with an Xwayland device is indicative of a bug in a shell script and xinput will print a warning. Use the Wayland Compositor's native device configuration methods instead.

という理由でエラーが出ていることは何となく分かったけど、特にキーボードレイアウトの問題に影響は無さそうなので、エラーはスルー。
$ xinput list

WARNING: running xinput against an Xwayland server. See the xinput man page for details.
⎡ Virtual core pointer                     id=2 [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer               id=4 [slave  pointer  (2)]
⎜   ↳ xwayland-pointer:17                      id=6 [slave  pointer  (2)]
⎜   ↳ xwayland-relative-pointer:17             id=7 [slave  pointer  (2)]
⎣ Virtual core keyboard                    id=3 [master keyboard (2)]
    ↳ Virtual core XTEST keyboard              id=5 [slave  keyboard (3)]
    ↳ xwayland-keyboard:17                     id=8 [slave  keyboard (3)]

dconf (org.gnome.desktop.input-sources)



参考:

[1]libinput - ArchWiki
[2]アップデート後Fcitxで日本語入力ができなくなる | 普段使いのArch Linux
[3]GNOMEのアップデート後に日本語入力できない | 普段使いのArch Linux
[4]別のキーボードレイアウトを使用する

スポンサーリンク

スポンサーリンク


関連コンテンツ


この記事をシェアする

0 件のコメント:

コメントを投稿