お知らせ

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

#1 2016-07-07 02:28:52

Paalon
新しいメンバ
登録日: 2016-07-07

xkbでキー設定を変えたいが、文字入力方法を切り替える度にリセットされてしまう

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の代替となるようなソフトウェアなどがあれば教えていただけると嬉しいです。

オフライン

 

#2 2016-07-07 19:26:08

yutarine
メンバ
登録日: 2011-10-15

Re: xkbでキー設定を変えたいが、文字入力方法を切り替える度にリセットされてしまう

私自身試したわけではないので参考意見ということですが、日本語入力にfcitxを使っているとキーボード設定を上書きするアドオン(X Keyboard Integration)があって
それにより設定が戻されてしまうようです(そのアドオンがどのタイミングで動作するのかによるとは思いますが)。
FAQ - Fcitx

アドオンの変更については以下のサイトの情報が参考になると思います。
http://poor-user.blogspot.jp/2016/05/fcitx.html
http://www.twintail.nu/~reika/diary/?date=20140313

ただこの設定を行なっても解決しなかったとしている情報もあったので、これで解決するかはわかりませんが。
またアドオンを無効にした場合に他に何か影響があるかも見ておいた方がいいかと思います。

オフライン

 

#3 2016-07-07 21:00:18

Paalon
新しいメンバ
登録日: 2016-07-07

Re: xkbでキー設定を変えたいが、文字入力方法を切り替える度にリセットされてしまう

情報ありがとうございます。実際に試してみて、X Keyboard Integrationで上書きを可能にするのところをfalseにしたり、逆にtrueにしてxmodmapのコマンドを指定したりしましたが、依然として入力を入れ替えるとリセットされてしまいました。

オフライン

 

#4 2016-07-08 00:58:55

yutarine
メンバ
登録日: 2011-10-15

Re: xkbでキー設定を変えたいが、文字入力方法を切り替える度にリセットされてしまう

そうですね。試してみたところ、アドオンを無効にしていても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での設定を保てるかも知れませんが、ちょっと私にはこれらの設定の安全性などが判断出来ないので、ここまでにしたいと思います。

オフライン

 

#5 2016-07-08 13:15:33

aaabbbcccdddeeefffggghhh
メンバ
登録日: 2008-02-25

Re: 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/

オフライン

 

Board footer

Powered by FluxBB