gooブログはじめました!

写真付きで日記や趣味を書くならgooブログ

FreeBSD 12.1 文字化け

2020-05-03 14:40:00 | パソコン・インターネット

1. 問題
・FreeBSD 12.1-STABLE r360560あたりを入れると、Xorgを起動した後のキーボードを打つとランダムな文字が表示される。表示は同じキーを押しても異なる文字になる。要は文字が無茶苦茶になる。
・いろいろ対処したが、途中段階では、jp106の右端のキーである、「バー」「バックスラッシュ」「アンダーバー」が入力できない問題や、emacsでは、mozcで日本語入力できるが、Mate terminalでは日本語入力に切り替わらないという問題が発生した。
・以下の対処によって、上記のすべての問題は解決している。

2. 現状のバージョン
- X.Org : X Server 1.20.8
- OS : FreeBSD 12.1-STABLE r360560 GENERIC amd64

3. 参考にしたWebサイト
- https://forums.freebsd.org/threads/keyboard-configuration-disaster.74850/
- https://forums.freebsd.org/threads/new-xorg-switch-from-devd-to-udev.74144/page-4

4. 原因と対処の概要
・原因は、FreeBSDが12.1からUDEVに変わったこと。なぜか、12.1-RELEASEp3 は問題ないのだが。。
・対処としては、以下を行う。
- X関係のモジュールのUDEV対応・最新化
- sysctl の設定
- Xの設定ファイルの最新化(UDEV対応)

5. 対処
5.1 Xorg関係のイカをportsから再インストール。
devel/libudev-devd
x11-server/xorg-server
x11/libinput
x11-drivers/xf86-input-libinput
その後、各行に対して以下を実行する。
# cd /usr/ports/上記のディレクトリ
# make clean; make rmconfig ; make ; make deinstall ; make reinstall

5.2 sysctlの設定
kern.evdev.rcpt_maskを初期値の3から12に変更
- file: /etc/sysctl.conf
- 追加行:
kern.evdev.rcpt_mask=12

5.3 Xの設定ファイル
- /etc/X11/xorg.conf.dの下と/usr/local/etc/X/xorg.conf.d/の下に
存在する設定ファイルをマージする。具体的には、前者の下のinput.confは
削除した。後者の下の 99-myinput.conf に内容をマージした。

Section "InputClass"
Identifier "libinput keyboard catchall + jp106x"
MatchIsKeyboard "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
Option "XkbRules" "evdev"
Option "XkbModel" "jp106"
Option "XkbLayout" "jp"
Option "XkbOptions" "ctrl:nocaps"
EndSection
Section "InputClass"
Identifier "libinput touchpad catchall"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
Option "MiddleEmulation" "on"
Option "DisableWhileTyping" "off"
EndSection

5.4 念のためのカーネルの確認
上記の設定を有効にするには、kernelがEVDEVをサポートするようになっていないといけない。デフォルトはサポートするようになっている。すなわち、GENERICファイルを編集していなければ問題ない。念のため、カーネルの設定ファイルを確認することを進める。以下の2行があればよい。標準のGENERICは、/usr/src/sys/amd64/confの下にある。削除していた場合は補ってカーネルを再インストールすることが必要。

# evdev interface
options EVDEV_SUPPORT # evdev support in legacy drivers
device evdev # input event device support


6. 再起動
(1) キーボード設定の確認のために、setxkbmapを実行。xkb_keycodesの中に"evdev"が入ればOK。

% setxkbmap -print
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete+japan" };
xkb_symbols { include "pc+jp+inet(evdev)+ctrl(nocaps)" };
xkb_geometry { include "pc(pc104)" };
};

(2) /var/log/Xorg.0.log の確認。
設定ファイルに設定した、キーボードのモデル名がログに入っていることを確認する。
% grep xkb_model /var/log/Xorg.0.log
[ 36.524] (**) Option "xkb_model" "jp106"
[ 36.624] (**) Option "xkb_model" "jp106"
[ 36.625] (**) Option "xkb_model" "jp106"
[ 36.626] (**) Option "xkb_model" "jp106"
[ 36.628] (**) Option "xkb_model" "jp106"

7. 動作確認
(1) Terminalを起動して、CTRL-スペース及び全角/半角キーでmozcが起動することを確認
(2) アンダーバー、バー、バックスラッシュが入ることを確認
(3) emacsを起動して、CTRL-スペースではmozcが起動しないこと、全角/半角キー及びCTRL-バックスラッシュでmozcが起動することを確認

ようやく終わった!


最新の画像もっと見る

コメントを投稿