當前位置: 首頁>>技術教程>>正文


在 gnome/unity 中使用 setxkbmap 永久設置鍵盤布局選項

, , , ,

問題描述

Ubuntu 13.101(可能還有上遊 gnome)引入了 very annoying bug :按下鍵盤布局切換快捷鍵會使焦點移到某個係統窗口,然後回到按下快捷鍵的窗口。一些應用程序有一些動作必然會改變焦點,例如 twitter(在瀏覽器中)在失去焦點時關閉回複文本輸入字段等。所以 ubuntu 的本機鍵盤切換器不適合我,直到修複。

X內置了切換機製,而且好很多,除了不涉及焦點切換之外,它立即切換(gnome切換器有時也會滯後)。

如何設置 xkbmap 選項,以便在重新啟動後保留設置並且不會被 Gnome 重置?

我試過的:

首先,隻需執行 setxkbmap:

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

但它僅適用於:

  1. 對於當前會話

  2. 直到 Gnome 覆蓋它(例如觸摸 gconf 的 org.gnome.desktop.input-sources 中的某些內容會觸發重置)。

其次,在 Xorg 配置中添加 xkb 選項:

另一種選擇是將以下內容添加到 xorg 配置:

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

我在 org.gnome.desktop.input-sources 中設置了 xkb-optionssources ,但 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)" };
};

四、gconf中的另一個選項

設置 org.gnome.settings-daemon.peripherals.keyboard 對我也不起作用。沒有什麽變化。

更新 1: There is discussion 建議刪除 /usr/lib/gnome-settings-daemon-3.0/libkeyboard.so 。至少這修複了 xkbmap 的一些重置(即在鎖定屏幕之後)。

1 我使用的是 14.04,但是失去焦點的問題仍然沒有解決。 ( Unconfirmed report in upstream Gnome )

最佳思路

為了防止 gnome 在 X 中重置鍵盤設置,我使用以下命令:

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

這對我有用。

次佳思路

我和你一樣一直對此發瘋,但使用的是 Ubuntu 14.04 (LTS)、Xubuntu、xfce 4.12 和 xkbd(來自 xfce goodies)。 Ctrl+Space 更改鍵盤布局有效,但 Alt+Shift 無效(modifier-only 鍵)。

終於設法使事情奏效-

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 更改鍵盤布局。

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/12652.html,未經允許,請勿轉載。