gnome / unityでsetxkbmapを使用してキーボードレイアウトオプションを永続的に設定する


28

Ubuntu 13.10 1(およびおそらくアップストリームのgnome)は非常に迷惑なバグを導入しました。キーボードレイアウトスイッチのショートカットを押すと、システムウィンドウにフォーカスが移動し、ショートカットが押されたウィンドウに戻ります。一部のアプリケーションには、フォーカスの変更にバインドされたアクションがいくつかあります。たとえば、Twitter(ブラウザー内)は、フォーカスを失ったときに返信テキスト入力フィールドを閉じます。

Xには組み込みの切り替えメカニズムがあり、フォーカス切り替えを含まないことに加えて、すぐに切り替えます(gnome switcherも遅れることがあります)。

再起動後も設定が保持され、Gnomeによってリセットされないようにxkbmapオプションを設定するにはどうすればよいですか?

私が試したこと:

まず、setxkbmapを実行するだけです:

setxkbmap -layout "us,ru"
setxkbmap -option "grp:caps_toggle,grp_led:scroll,compose:ralt"

しかし、それだけで動作します:

  1. 現在のセッション
  2. Gnomeがそれを上書きするまで(たとえば、gconfのorg.gnome.desktop.input-sourcesトリガーで何かに触れるとリセットされます)。

次に、xkbオプションをXorg構成に追加します。

別のオプションは、xorg configに以下を追加することです:

Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout" "us,ru"
        Option "XkbModel" "pc105"
        Option "XkbVariant" "pc105"
        Option "XkbOptions" "grp:rctrl_toggle,grp_led:scroll"
EndSection

Xorgは、起動時に次のことを理解します。

[    33.791] (**) Option "xkb_rules" "evdev"
[    33.791] (**) Option "xkb_model" "pc105"
[    33.791] (**) Option "xkb_layout" "us,ru"
[    33.791] (**) Option "xkb_variant" "pc105"
[    33.791] (**) Option "xkb_options" "grp:rctrl_toggle,grp_led:scroll"

ただし、おそらくgnomeによって、スイッチング設定は後でリセットされます。

第三に、gconf

ここに画像の説明を入力してください

私は持っxkb-optionssources設定してorg.gnome.desktop.input-sourcesいますが、Gnomeはまだxkbを単一の英語レイアウトに設定しています:

$ setxkbmap -print -verbose 10
Setting verbose level to 10
locale is C
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules:      evdev
model:      pc105
layout:     us
options:    grp_led:scroll
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwerty)
types:      complete
compat:     complete+ledscroll(group_lock)
symbols:    pc+us+inet(evdev)
geometry:   pc(pc105)
xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwerty)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete+ledscroll(group_lock)"    };
    xkb_symbols   { include "pc+us+inet(evdev)" };
    xkb_geometry  { include "pc(pc105)" };
};

4番目に、gconfの別のオプション

ここに画像の説明を入力してください

org.gnome.settings-daemon.peripherals.keyboard私にとっても設定は機能しません。何も変わりません。

UPD 1:削除することを推奨する議論があり/usr/lib/gnome-settings-daemon-3.0/libkeyboard.soます。少なくともこれにより、xkbmapのいくつかのリセット(つまり、ロック画面後)が修正されます。

1 14.04を使用していますが、フォーカスを失う問題はまだ修正されていません。(上流Gnomeの未確認レポート


gnomeでレイアウトを正しく設定してsetxkbmapから、2つのコマンドを追加しようとしました~/.profileか?そうすれば、ログインするたびに実行され、Gnomeにも同じ設定があるため、リセットしても何も変更されません。
テルドン14

1
@terdonは、画面ロックの後でもリセットされます。そして、で定義された設定ではなく、「us-only、no switch」状態にリセットされorg.gnome.desktop.input-sourcesます。
kolen 14

奇妙な。あなたは確かにあなたがユニティGnomeのを使用していませんか?代わりに通常のGUIを使用して設定を変更しようとしましたdconf-editorか?
テルドン14

@terdonはい、それは統一されていますが、キーマップをリセットする可能性のあるgnome-settings-daemonなどのgnomeのものを失います。
コーレン14

では、Unity GUIから正しい設定を設定しようとしましたか?
テルドン14

回答:


19

X iでgnomeがキーボード設定をリセットしないようにするには、次のコマンドを使用します。

gsettings set org.gnome.settings-daemon.plugins.keyboard active false

これは私のために動作します。


4
Ubuntu 14.04でこれを試しましたが、何もしません。説明がありますか?これはどのように機能するはずですか?
ニコライ・レショフ

2
14.04での私の作品
ndemou

2
他のすべてを試した後、16.04に私のために働く。
レオナルドカストロ

1
17.04で動作することがわかった唯一の方法。
Cnly

1
Ubuntuは実際にunity-settings-daemonを一定期間作成していましたが、Gnomeに再び戻っているので、これは機能し続ける可能性があります。
dragon788

6

私はあなたと同じようにこれに夢中になっていますが、Ubuntu 14.04(LTS)、Xubuntu、xfce 4.12、およびxkbd(xfce goodiesから)です。キーボードレイアウトを変更するCtrl + Spaceは機能しましたが、Alt + Shiftは機能しませんでした(修飾子のみのキー)。

ようやく物事が機能するようになりました

1. Run ibus-setup (Keyboard Input Methods application).
2. Goto Advanced tab.
3. Check 'Use system keyboard layout'.
4. Click 'Close'

5. Run xfce4-keyboard-settings (Keyboard application).
6. Goto Layout tab.
7. Uncheck 'Use system defaults'
8. Select 'Keyboard model' (typically 'Generic 105-key (Intl) PC' will do)
9. Set 'Change layout option' to your required switching keys combination (typically Alt+Shift will do).
10. Add languages to 'Keyboard layout'.
11. Click 'Close'.
12. Restart the computer

できました!Alt + Shiftを使用してキーボードレイアウトを変更します。


1
xfce4-keyboard-settings具体的には、gnome / unityの支援を求める質問での使用を推奨するのはなぜですか?
ニコライレショフ

2

関連するスクリーンロックに関するこの記事を読んだところです。記事によると、スクリーンロックは入力デバイスをブロックし、ロケールを操作するという意図的な結果をもたらします。いくつかのオプションがあるようです:

  1. 画面のロックを停止します。おそらくこれには、同様の機能を果たすグリーティング画面も含まれます。
  2. さまざまな電源管理ツールを使用する
  3. im-switchingでのibusの使用を停止します(おそらくFCITX?)
  4. ここで説明するように、画面ロック解除イベントのフックを作成します。

これに関する興味深い議論があり、ubuntu-devメーリングリストで見つけることができる関連イベント:https : //lists.ubuntu.com/archives/ubuntu-devel/2013-November/037768.html


1

Ubuntu 14.10でgxkbを使用しているUbuntuバグトラッカーのユーザーwofによる回避策:

https://bugs.launchpad.net/gnome-settings-daemon/+bug/1244090/comments/39

この回避策は、ubuntu 14.10で機能しました。

  • 設定->テキスト入力ですべての入力ソースを削除し、英語のみを残します
  • gxkb(レイアウトスイッチャー)のインストール:sudo apt-get install gxkb
  • gnome-tweak-toolを介してgxkbを起動アプリケーションに追加します
  • 〜/ .config / gxkbにgxkbホットキーを設定します(デフォルトはalt_shiftですが、14.10では機能しません。ctrl_shiftは正常に動作します)

ps gxkbの新しいバージョンには、ubuntu用のインジケータがあります。ppa:zen-root / gxkb-stableからインストールできます


(まだ試していない)
kolen

E:パッケージgxkbを見つけることができません
e18r

0

まず、setxkbmapを実行するだけです:

setxkbmap -layout "us、ru" setxkbmap -option "grp:caps_toggle、grp_led:scroll、compose:ralt"

しかし、それだけで動作します:

For current session
Until Gnome will overwrite it (for example touching something in gconf's org.gnome.desktop.input-sources triggers reset).

Gnomeが「リセット」する限り、私は知らない。私はLogitechのマウスに対してまったく同じタイプのことをしなければならなかったので、どのように再起動するたびにとどまることができるか知っています。特定の方法で再マップしたい複数のボタンがあり、再起動時に設定する必要がありました。

そのために、テキストファイルを作成します。次に、そのテキストファイルタイプで:

#!/bin/bash

そしてそのすぐ下にコマンドを入力します。例として、私のマウスは次のようになります。

#!/bin/bash
xinput set-button-map "Logitech USB-PS/2 Optical Mouse" 1 2 3 4 5 8 9 6 7 10 11 12 13 14 15 16

次に、それを任意の名前で保存し、ホームディレクトリなどの場所に移動します。「永遠に」そこに留まらなければなりません。

次に、スタートアップアプリケーションを開いて、ファイルをスタートアップに追加するだけで、セッション中だけ持続することを心配する必要はありません。追加したファイルを介して設定が戻されるため、コンピューターを再起動しても構いません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.