FreeBSD / emacs / 家庭菜園 / 体力作り

80年代からemacsを90年代から家でFreeBSDを使用中。

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が起動することを確認

ようやく終わった!


Re: FreeBSD 12.1 デグレ バックスラッシュが入らいない

2020-03-01 10:03:00 | ノンジャンル
昨日のキーボードの問題は、直前に、ゲーム用の端末の問題として報告されており、その対処のコードで治っていた。バグ報告を送った後、ソースを更新したところ、USBキーボードのソース(ukbd.c?)が新しくなり、それをコンパイルしたら、症状は解消した。


昨日の朝にソースを更新してから、調査をしなかったために、4時間ぐらい損した。。。


FreeBSD 12.1 デグレ バックスラッシュが入らいない

2020-02-29 10:49:00 | パソコン・インターネット
FreeBSD のバグジラに以下を登録した。

FreeBSD 12.1-STABLEで、JP.106キーボードを使うと、バックスラッシュキーが入力できない。
FreeBSD 11.1 RC3 を起動すると、このキーは認識される。
明らかにデグレである。

現在、キーボード関係のソースだけ、11.1RC3に戻してコンパイル中。
うまくいくとよいが。。

そう簡単にはいかない。11.1は2016年頃のコードで、今は、開発者も変わっており、全面的に、ukbd.cは書き換わっていた。usb@freebsd.orgを見ると、結構アクティブなので、すぐに直してもらえるかも。

バックスラッシュキー

2020-02-24 11:46:00 | ノンジャンル
パソコンのキーボードは、日本語112キーボードで、Elecom製である。
これを使うのに、Linuxや
FreeBSDでは、jp.106を指定する。これで記号キーの殆どは、キーボードに印字された通りになるが、一番右端のパイプとバックスラッシュが入らない。この記事はFreeBSDで書いているのでまさにかけない。

CentOS 7が同じマシンに入っている。こちらは、きちんと入力できる。FreeBSDのXを立ち上げて、xevコマンドを立ち上げてこのキーを押すと、イベントが上がらない。すなわち、OSレベルでこのキーが認識されていないようである。

atkbc あたりがソースのようで、これのマンコマンドをみると、カーネルパラメータで、デフォルトのキーボードレイアウトを指定できる。そこで、その値を、jp.106xにしてコンパイルしてカーネルをつくった。このカーネルでは起動に失敗した。詳しいことを調べるのは次回にする。

Redmine on FreeBSD

2019-07-06 07:22:00 | ノンジャンル
苦労して、FreeBSDにRedmineをインストールした。
主要なインストールしたPKGなどのバージョンを以下に示す。


FreeBSD XXXXX 12.0-STABLE FreeBSD 12.0-STABLE r349280 GENERIC amd64

mysql80-client-8.0.16_1 Multithreaded SQL database (client)
mysql80-server-8.0.16 Multithreaded SQL database (server)
php73-mysqli-7.3.6 The mysqli shared extension for php
php73-pdo_mysql-7.3.6 The pdo_mysql shared extension for php
ruby-2.4.5_1,1 Object-oriented interpreted scripting language
ruby24-gems-3.0.3 Package management framework for the Ruby language
rubygem-passenger-apache-6.0.2 Modules for running Ruby on Rails and Rack applications
rubygem-rack-2.0.6,3 Rack, a Ruby Webserver Interface
rubygem-rake-12.3.2 Ruby Make
ImageMagick6-6.9.10.47,1 Image processing tools (legacy version)

苦労したのは、DBの最初のデータ登録の時のユーザ名(管理者でいれるとはいる)、Redmineの下のtmpのディレクトリのパーミッション

ーーー