
Ubuntu日本語フォーラム

ログインしていません。
Ubuntu16.04でxkbでキー設定を変える方法について質問があります。
はじめに私がxkbを使おうとした経緯について説明します。Gnome Tweak Toolでキー設定を変えることができ、左Winキーと左Ctrlキーを恒久的に入れ替えることはできました。しかし、右WinキーをEscapeにする項目がないようなのでxmodmapを使おうとしました。しかし、xmodmapはすでにdeprecatedであり今はxkbが推奨されているという情報を見つけたため、xkbで設定しようとしました。
xkbで右WinキーにEscapeキーを設定しようとしています。
(状態)Tweak ToolでLWinとLCtrlを入れ替えている。
試したこと:
(1)まず、ホームディレクトリに.xkbディレクトリを作成し、その中にkeymapディレクトリとsymbolsディレクトリを作成しました。
(2)keymapディレクトリにmykbdファイル、symbolsディレクトリにmysettingsファイルを作成しました。ファイルの中身は以下の通りです。
---------------------------
~/.xkb/keymap/mykbd
--------以下内容----------
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+inet(evdev)+ctrl(swap_lwin_lctl)+mysettings(rwin_esc)" };
xkb_geometry { include "pc(pc105)" };
};
---------------------------
~/.xkb/symbols/mysettings
--------以下内容----------
partial modifier_keys
xkb_symbols "rwin_esc" {
replace key <RWIN> { [ Escape, Escape ] };
};
(3)中身のあんまりよくわかっていない呪文をターミナルで唱えます。
xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY 2> /dev/null
(4)無事、右WinキーがEscキーとして機能するようになるのですが、文字入力切り替えをすると、元の右Winキーとしての機能に戻ってしまいます。
現在のセッション?でしか反映されなさそうだというのはわかっているのですが、文字入力切り替えでセッション?がリセットされてしまう?ので困っています。文字入力切り替えでリセットされなければ上記のコマンドをログイン時に自動で走らせれば大丈夫だろうと考えています。
以上の設定はこのブログ(http://ill-identified.hatenablog.com/entry/2014/09/14/143337)を参考に行いました。
xkbで文字入力切り替えをするとリセットされてしまうという情報は調べるといくらか載っているのですが、解決策は見つかりませんでした。
文字入力切り替えをしてもxkbがリセットされない方法、もしくはTweak Toolでは設定できないキー入れ替えなども詳細に設定できる、xkbの代替となるようなソフトウェアなどがあれば教えていただけると嬉しいです。
オフライン
私自身試したわけではないので参考意見ということですが、日本語入力にfcitxを使っているとキーボード設定を上書きするアドオン(X Keyboard Integration)があって
それにより設定が戻されてしまうようです(そのアドオンがどのタイミングで動作するのかによるとは思いますが)。
FAQ - Fcitx
アドオンの変更については以下のサイトの情報が参考になると思います。
http://poor-user.blogspot.jp/2016/05/fcitx.html
http://www.twintail.nu/~reika/diary/?date=20140313
ただこの設定を行なっても解決しなかったとしている情報もあったので、これで解決するかはわかりませんが。
またアドオンを無効にした場合に他に何か影響があるかも見ておいた方がいいかと思います。
オフライン
情報ありがとうございます。実際に試してみて、X Keyboard Integrationで上書きを可能にするのところをfalseにしたり、逆にtrueにしてxmodmapのコマンドを指定したりしましたが、依然として入力を入れ替えるとリセットされてしまいました。
オフライン
そうですね。試してみたところ、アドオンを無効にしていてもfcitxの入力を切り替えるとリセットされました。
以下のように簡単に設定して
$ setxkbmap -option ctrl:nocaps
以下で確認しながら操作すると
$ setxkbmap -print
入力の切り替えで、xkb_symbolsの値がリセットされてました。
http://blog.goo.ne.jp/ikunya/e/86c7c228 … c1a4e31ef3
こちらのサイトの本文ではなくコメント欄に書かれた情報だと、
dconf-editorで設定する値があるタイミングで上書きされるようですので、fcitxに関してもそこが関与していそうです。
org > gnome > desktop > input-sources> xkb-options
に記述した値になるようです。
Gnome Tweak Toolに関してはここを変更しているので、その部分の設定はfcitxの入力切り替えでも変更されないのだろうと思います。
上書きされるかどうかは以下の項目がactiveかどうかで判断しているようです。
org > gnome > settings-daemon > plugins > keyboard
冒頭で上げたテストで試したところ、fcitxの入力入れ替えでもそのような挙動になりました。
このへんを探っていけばxkbでの設定を保てるかも知れませんが、ちょっと私にはこれらの設定の安全性などが判断出来ないので、ここまでにしたいと思います。
オフライン
yutarineさんが書かれているように、
yutarine による投稿:
コード:
org > gnome > settings-daemon > plugins > keyboard
の値がtrueだとxkbの設定がリセットされます。
ですので、xkbの設定をする前に端末で、
gsettings set org.gnome.settings-daemon.plugins.keyboard active false
と実行しておくとxkbの設定が維持されるようになるはずです。
私の環境の場合、以下のようにして左Winキーと右AltキーをESCキーにしてみたところ、
文字入力切り替えを行っても大丈夫なようです。
$ gsettings set org.gnome.settings-daemon.plugins.keyboard active false
$ cat ~/.xkb/keymap/mykbd
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete+japan" };
xkb_symbols { include "pc+jp+inet(evdev)+terminate(ctrl_alt_bksp)+setmykey(mymenu)" };
xkb_geometry { include "pc(pc105)" };
};$ cat ~/.xkb/symbols/setmykey
partial modifier_keys
xkb_symbols "mymenu" {
replace key <SCLK> {[ Menu ] };
replace key <RALT> {[ Escape, Escape ] };
replace key <LWIN> {[ Escape, Escape ] };
};$ xkbcomp -I/home/no2/.xkb /home/no2/.xkb/keymap/mykbd :0 2> /dev/null
キーコードの確認は以下のページで行いました。
キーコード一覧 【JavaScript 動的サンプル】
https://web-designer.cman.jp/javascript_ref/keyboard/keycode/
オフライン