お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2021-06-19 17:44:17

hidenaga
新しいメンバ
登録日: 2021-06-19

仮想コンソール(Ctrl+Alt+F3)に切り替えた後にGUIに復帰するとキーボードの設定がリセット?されてしまいます

当フォーラム初投稿です。マナー違反等もしありましたら是非ご指南頂けましたら幸いです。

該当バージョン:ubuntu-ja-20.04.1-desktop-amd64.isoよりブートUSBを作り、最小インストールを行いました
PC: HP t520  CPU、AMD GX-212JC 2コア2スレッド  4GB   SSD、16GB  Video、AMD Radeon HD graphics

X-Windowにて起動を完了し、一通りの動作確認を行いました。(特に不具合等見当たりませんでした)
キーボードのCapsとCtrlの入れ替えを行いたく検索を重ねた結果、
/etc/default/keybord というファイルにオプションを指定する方法を見つけ設置。うまく動作していました
 (XKBOPTIONS=""  → XKBOPTIONS="ctrl:nocaps" 等、いくつか)
 (問題をシンプルにするため、とりあえずCaps_Lockを左Controlにするだけに限定します)

ところが、件名の通り仮想コンソールに切り替えた後に復帰すると上記オプションがリセットされてしまい、
なにも設定していない状態(CapsがCapsに戻る)のキーボードになってしまい困っています


●試したこと
Ubuntuはxkbという仕組みらしいのでxkbが読んでいるであろうファイルを調査

$ setxkbmap -print

xkb_keymap {
        xkb_keycodes  { include "evdev+aliases(qwerty)" };
        xkb_types     { include "complete"      };
        xkb_compat    { include "complete"      };
        xkb_symbols   { include "pc+jp+us:2+inet(evdev)"      };
        xkb_geometry  { include "pc(pc105)"     };
};

どこかでこのsymbolsは左から読まれ上書きされると見かけたので右から順に
inetファイル、usファイル、jpファイル、pcファイルとチェックしました。
結果、jpファイルpcファイルにCaps,Controlに該当する箇所を見つけたので
順に直で書き換えを行いました(本当はあまり望ましくないそうですね)

結果、
 jpファイル47行目を変更 → 再起動 → 期待通りの動作 → やはりリセットされる
 pcファイル23行目を変更 → 再起動 → 期待通りの動作 → やはりリセットされる


なにぶんUbuntuは初心者なものでトンチンカンなテストの可能性もあり、手詰まりとなっています
なにかお分かりになる方おられましたらご教示のほどよろしくお願いいたします。


補足:
この問題とは関係が薄いと判断しましたが念のため補足
A・自動ログインを使用。通常のGUI画面はF2になる模様。F1はいつもログイン画面になっている
B・CUIのコンソールはF3~F6まで。F7はCUI起動途中の表示で止まっている
   /dev/sha2: clean, 186114/944704 files, 1854407/3778304 blocks
  [  OK  ] Started OpenBSD Secure Shell server.
  [  OK  ] Starting Hold until boot process finishes up...
  [  OK  ] Starting Terminate Plymouth Boot Screen...


CUI起動を試みた。(sudo systemctl set-default multi-user.target)
なぜか login: のプロンプトが出ない。上記Bと同じ表示で止まってしまう
起動失敗かと思ったがsshでログインでき、動作にも問題なし
後になってわかったがこれも仮想コンソールで切り替えればちゃんと
ログインプロンプトが出てくれる
(つまり、GUI時のF7がF1画面になっている?)

オフライン

 

#2 2021-06-21 16:21:54

hidenaga
新しいメンバ
登録日: 2021-06-19

Re: 仮想コンソール(Ctrl+Alt+F3)に切り替えた後にGUIに復帰するとキーボードの設定がリセット?されてしまいます

いくつかの実験を行ってわかってきたことを記します

あの後、どうやっても状況が好転せず、また様々な手法を試しすぎてワケワカメに陥ってしまったので
再インストールを行い、順を追いなおすことにしました

●/etc/defaulb/keybordファイル
このファイルのXKBOPTIONSにキースワップのオプションを書き込む方法は明確に問題があることがわかりました
 1、このファイルはGUIの 設定→地域と言語→入力ソースを少し変更しただけで内容が変化してしまう
   変化した場合にXKBOPTIONS等の値は破壊されるらしい(キーの入れ替え設定等がトんでしまう)
 2、未確認だがおかしな現象が起こった(設定の残留?)
   インストールしたばかりの時、実験としてXKBOPTIONS="ctrl:nocaps" を設定。うまく動作した
   その後、別の設定をしたくてXKBOPTIONS="ctrl:swapcaps" と書き直すもまったく効かない
   その過程でいろいろ弄ったせいか、/etc/defaulb/keybordの内容は初期値とまったく違うものになっていた
   新しい/etc/defaulb/keybordにはXKBOPTIONSが書かれていないにも関わらず、キーボードはnocapsの
   状態のままで標準の状態に戻らない

●解決策
dconf-editorをインストールし、org→gnome→desktop→input-sources→xkb-optionsと表示
ここに「カスタム値」として['ctrl:nocaps']が残っていた
この値を削除または一旦「デフォルト値を使用する」にスイッチするとようやっとすっぴんのキーボードに戻ってくれた

● setxkbmap -print > .xkb/symbols/mykbd  ← これらをカスタムして自動実行でキーマップを変更する方法
これも問題が出ました
この方法でちゃんと期待通りの動作をしてくれたのですが、件の「仮想コンソールを往復するとリセットされてしまう」
という症状が確認できました

●現在の実験
dconf-editorからカスタム値としてnocapsやswapcapsを指定するとキチンと動作し、
またここを書き換えるとほぼ即座に反映+仮想コンソール往復にも影響が出ないことが
わかりました(まだ検証中)
現在、ここを利用して様々なキーマップの変更を行うのが順当ではないかと仮定しています

引き続き実験を続けます
なにかツッコミやヒント等ありましたらよろしくお願いいたします

オフライン

 

#3 2021-06-21 17:51:07

elliptic
メンバ
登録日: 2020-03-05

Re: 仮想コンソール(Ctrl+Alt+F3)に切り替えた後にGUIに復帰するとキーボードの設定がリセット?されてしまいます

Gnome 3 用カスタマイズ ユーティリティ Gnome Tweaks を用いた場合の
挙動はどうなるでしょうか?

LinuxでCtrlキーとCapsロックキーを入れ替える方法 | TECH+
https://news.mynavi.jp/article/20181125-728707/

# パッケージ gnome-tweaks を インストールする。
$ sudo apt install gnome-tweaks
# Gnome Tweaksを起動する。
$ gnome-tweaks
# (GUIなら  アイコン名「Tweaks」のアプリケーションをクリック)

# 'キーボードとマウス' タブ  →  [追加のレイアウトオプション]ボタン
# →'Ctrl position' グループ  →  'Ctrl と Caps Lock を入れ替える' にチェックを入れる

# Gnome Tweaks を終了させ、 ログアウト、再ログインで設定を反映させる。

# Gnome Tweaks での選択は Gsettings に登録されている。
$ gsettings get org.gnome.desktop.input-sources xkb-options
['ctrl:swapcaps']

オフライン

 

#4 2021-06-22 07:47:46

hidenaga
新しいメンバ
登録日: 2021-06-19

Re: 仮想コンソール(Ctrl+Alt+F3)に切り替えた後にGUIに復帰するとキーボードの設定がリセット?されてしまいます

ヒントに感謝です。 Gnome Tweaks を導入しました。
とりあえずキーボード関連のことに限定して進めています

Gnome Tweaks にはいくつかのプリセットされた設定があり、簡単にそれらを効かせることができますね
例えば「CtrlとCaps_Lockを入れ替える」はctol:swakcapsのことだと思うんですが、これを有効にした後に
dconf-editorをのぞいてみると['ctrl:swapcaps']が入っており、動作+仮想コンによる解除なしである
ことを確認いたしました。
自分が確認した範囲なので間違いかもしれませんが、機能の内容(Gnome Tweaksでの表記)とコマンド(ctrl:swapcaps等)が
わかっていれば、どちらを使っても同じ状態になるのではと思います

ちなみに
これら設定は setxkbmap -print に即座に反映されることがわかりました。
ctrl:swapcaps設置 → xkb_symbols   { include "pc+jp+us:2+inet(evdev)+ctrl(swapcaps)"      };
ctrl:swapcaps解除 → xkb_symbols   { include "pc+jp+us:2+inet(evdev)"      };

どこかに設定が記憶なされているのだろうと探しましたが見つけることができませんでした。
日付を頼りに探した結果、~/.config/dconf/ 以下にピッタリなファイルを見つけたのですが、
内容はバイナリとなっており、読んだり編集したりはむずかしいようです

※浅く検索しただけの情報ですが、gnome(gtk3)はクロスプラットフォームを目指したため
 あらゆるOSでも設定等が共有できるようにWindowsのレジストリに近い構造の設定ファイルを
 採用しているなる話を見つけました。これが本当だとすると、エディタでチョイチョイという
 方法が使えないためキチンと専用のコマンドなりで設定を行うべく勉強する必要があることになりますね
 (教えていただいたgetsettings等がそれにあたるっぽいですね)

この検証中に仮定が少し進みました
setxkbmap -printによる表記はキチンと効き、また、dconfやGnome Tweakとも連携しています。
また、ここに記載された設定や効果は仮想コン往復にも影響されません
/etc/defaulb/keybordや.xkb/symbolsによる設定は一時的には効いてくれますが、効いている場合でも
setxkbmap -printには表示されません。(表示されない設定は仮想コン往復で消えてしまう)
もしや仮想コンソールから復帰した時というのは
 × 設定が消えてしまう
 〇 setxkbmap -printの内容に従って再設定される
なのではないかと思い始めました


まだ仮定段階ですが、どうすれば効き、どうすれば消えてしまうのかをあぶりだすことができたようです
以降この仮定を前提に検証を進めていきます
以降自分は
 ・setxkbmap -printに表記される他の設定(pcやjpやus:2等)の意味、変更した場合の状態
 ・そもそもpcやらjpやらは誰がどこで設定し、どこに記憶されているのか
 ・CUI起動をした場合の状態
 ・gnome以外の環境ではどうなるのか
を検証しながら勉強していく予定です


なお、このスレッド?のタイトル(仮想コン往復による設定消失)に関しては上記通り
「こうすれば起こらないっぽい」というところまで見つけることが出来たかなと思い始めたので
話題を閉じたほうがいいかなと考えておりますが、ご指摘やヒント等ございましたら是非


長文申し訳ありませんでした。ありがとうございました。

オフライン

 

Board footer

Powered by FluxBB