web-dev-qa-db-ja.com

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

Ubuntu 13.101 (そしておそらく上流の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

enter image description here

xkb-optionsorg.gnome.desktop.input-sourcessourcesを設定していますが、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の別のオプション

enter image description here

org.gnome.settings-daemon.peripherals.keyboardの設定も機能しません。何も変わりません。

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

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

27
kolen

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

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

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

18
Iasha102

私はあなたと同じようにこれに夢中になっていますが、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を使用してキーボードレイアウトを変更します。

5
Oron Port

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

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

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

2
Hawk

ユーザーによる回避策wofUbuntuバグトラッカー、 gxkb を使用するUbuntu 14.10の場合:

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は正常に動作します)

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

1
kolen

まず、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

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

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

0
David