Ubuntu 14.04 中的无状态布局切换

uli*_*tko 4 keyboard keyboard-layout gnome-settings-daemon 13.10 14.04

截屏

我广泛使用两种键盘布局(英语为拉丁文,乌克兰语和俄语为西里尔文),并且由于 UI 状态的额外位:当前布局而使我感到模式错误

我曾经通过使用无状态布局切换来完全消除它们,其中一个没有next layout动作(因为这样的动作基于当前状态,用户很容易忘记,因此会导致错误),而只有两个动作:

  1. 启用拉丁布局;
  2. 启用西里尔文布局。

这在 Saucy 之前的版本中是可以轻松实现的。如上图所示。

但是,该设置窗口在 Saucy 中被破坏了。

我现在如何进行无状态切换?

use*_*.dz 5

此命令会将布局设置为第一个(它与 Unity/Gnome Indicator、Ubuntu 13.10/14.04 配合良好):

gsettings set org.gnome.desktop.input-sources current 0
Run Code Online (Sandbox Code Playgroud)

您可以使用调整工具、gnome 操作、compiz 操作插件等来为其创建键盘快捷键。

布局从 0 开始索引。因此您可以为列表中的任何布局创建快捷方式。

您可以使用它为最后一个布局创建复杂的脚本,而无需提供索引:

 gsettings get org.gnome.desktop.input-sources sources
Run Code Online (Sandbox Code Playgroud)

喜欢:

 gsettings set org.gnome.desktop.input-sources current $(($(gsettings get org.gnome.desktop.input-sources sources | grep -Po "'[[:alpha:]]+'\)" | wc -l)-1))
Run Code Online (Sandbox Code Playgroud)

  • 这是*某事*,但根据我以前使用“命令”快捷方式的经验,我怀疑生成进程不是切换键盘布局的最愉快方式。特别是在系统的那些*加载*时刻,当它疯狂地来回交换内存时;布局切换有*秒*的延迟是不可接受的。我肯定更喜欢能在内存中持久存在并且反应迅速的东西。 (2认同)

Glu*_*ate 5

Ubuntu 和 GNOME 中的键盘选项只不过是 X 键盘扩展 (XKB) 的前端。如果您愿意手动配置,您可以使用命令行轻松地重新启用所有现在缺少的选项setxkbmap

\n\n

例如,要在俄语和英语键盘布局之间设置非模式切换,可以使用以下命令:

\n\n
setxkbmap -layout us,ru -option grp:shift_caps_switch\n
Run Code Online (Sandbox Code Playgroud)\n\n

这将为当前会话启用这些 XKB 设置。如果您想让更改永久生效,您必须将上面的命令添加到您的启动应用程序中

\n\n

如果您对可以控制的各种其他设置感兴趣setxkbmap,我建议您仔细阅读手册 ( man setxkbmap) 并查看/usr/share/X11/xkb/rules/base.lst。后者记录了配置撰写键、键盘布局切换等的所有不同方法。

\n\n

以下是base.lst键盘布局切换部分:

\n\n
! option\n  grp                  Key(s) to change layout\n  grp:switch           Right Alt (while pressed)\n  grp:lswitch          Left Alt (while pressed)\n  grp:lwin_switch      Left Win (while pressed)\n  grp:rwin_switch      Right Win (while pressed)\n  grp:win_switch       Any Win key (while pressed)\n  grp:caps_switch      Caps Lock (while pressed), Alt+Caps Lock does the original capslock action\n  grp:rctrl_switch     Right Ctrl (while pressed)\n  grp:toggle           Right Alt\n  grp:lalt_toggle      Left Alt\n  grp:caps_toggle      Caps Lock\n  grp:shift_caps_toggle Shift+Caps Lock\n  grp:shift_caps_switch Caps Lock (to first layout), Shift+Caps Lock (to last layout)\n  grp:win_menu_switch  Left Win (to first layout), Right Win/Menu (to last layout)\n  grp:lctrl_rctrl_switch Left Ctrl (to first layout), Right Ctrl (to last layout)\n  grp:alt_caps_toggle  Alt+Caps Lock\n  grp:shifts_toggle    Both Shift keys together\n  grp:alts_toggle      Both Alt keys together\n  grp:ctrls_toggle     Both Ctrl keys together\n  grp:ctrl_shift_toggle Ctrl+Shift\n  grp:lctrl_lshift_toggle Left Ctrl+Left Shift\n  grp:rctrl_rshift_toggle Right Ctrl+Right Shift\n  grp:ctrl_alt_toggle  Alt+Ctrl\n  grp:alt_shift_toggle Alt+Shift\n  grp:lalt_lshift_toggle Left Alt+Left Shift\n  grp:alt_space_toggle Alt+Space\n  grp:menu_toggle      Menu\n  grp:lwin_toggle      Left Win\n  grp:rwin_toggle      Right Win\n  grp:lshift_toggle    Left Shift\n  grp:rshift_toggle    Right Shift\n  grp:lctrl_toggle     Left Ctrl\n  grp:rctrl_toggle     Right Ctrl\n  grp:sclk_toggle      Scroll Lock\n  grp:lctrl_lwin_rctrl_menu LeftCtrl+LeftWin (to first layout), RightCtrl+Menu (to second layout)\n
Run Code Online (Sandbox Code Playgroud)\n\n

各种 XKB 设置也记录在man 7 xkeyboard-config.

\n\n
\n\n

如果setxkbmap这对您不起作用,您可以尝试通过dconf以下方式设置 XKB 选项:

\n\n
    \n
  1. 安装dconf-editorsudo apt-get install dconf-editor
  2. \n
  3. 从仪表板打开 dconf 编辑器并导航到org \xe2\x86\x92 gnome \xe2\x86\x92 Desktop \xe2\x86\x92 input-sources
  4. \n
  5. 将您的 XKB 设置以xkb-options数组的形式添加。例如:[\'grp:shift_caps_switch\']
  6. \n
\n\n

来源:在启动时设置 setxkbmap 首选项

\n

  • 这对于 gnome 来说是一个很好的选择。AFAIK `xkb-options` 仅适用于 Gnome,Unity 不关心。我之前用 unity 测试过 `setxkbmap`,我确实工作了很短一段时间,然后它重置为 Unity 设置。通过卸载“指示器键盘”并禁用统一布局更改快捷方式,它确实可以很好地工作。 (2认同)