如何从命令行更改键盘?


64

如何从命令行更改键盘布局?例如,我想从英语切换到希伯来语。我可以通过lightdm的屏幕角落的小图标来完成此操作。

Answers:



51

您可以在以下位置找到所有不同的键盘映射:

/usr/share/keymaps/i386/
/usr/share/kbd/keymaps/i386/
/usr/share/X11/xkb/symbols/

要在Linux命令行中更改键盘布局(例如,更改为西班牙语),请键入以下命令:

loadkeys es

对于X:

setxkbmap es

要在系统范围内进行这些更改,假设您使用的是Ubuntu,则可以使用以下命令:

sudo dpkg-reconfigure console-setup

这对tty1,tty2等有影响,但在X中没有影响。我想在X中做,就像lightdm中的键盘切换器一样。
— 2012年

我在答案中添加了一条命令,这就是您想要的吗?
— Dr_Bunsen

是!谢谢。另外,您是否可以更新答案以提及带有“ s”的负载键?
— 2012年

2
是的,我会的,不用了,谢谢。只需标记为已解决,以便所有人都知道。
— Dr_Bunsen

对于Redhat用户而言,以下是有价值的部分:/usr/share/X11/xkb/symbols/和setxkbmap es
— Peter Butkovic

13

Ubuntu 13.10或更高版本

这比带有Gnome / Unity键盘布局指示器的setxkbmap更好。

gsettings set org.gnome.desktop.input-sources current 0

0是布局索引(默认为0或顶部布局)。从0开始索引的布局。

为了易于使用,请创建一个别名。


2
这个答案是优越的,因为它实际上改变了指标。正是我一直在寻找的东西。
— Ainar-G

1
谢谢。在这里也使用了您的答案:askubuntu.com/a/984981/6193
— Alexey

3
这在GNOME 3.26上不起作用。它说:“此密钥已被弃用和忽略”。
— hugomg '18

@hugomg,现在我还没有访问新的gnome。但您可以尝试使用dconf-editor工具并检查/org/gnome/desktop/。他们可能只是将其重命名。
— user.dz

12
setxkbmap us,il -option "lv3:ralt_alt,grp:alt_shift_toggle"

此命令使您只能通过right alt+ 在英语和希伯来语之间切换,并shift从left alt+中救出您shift。


3

似乎没有标准的CLI工具,但是xkb-switch是一个小型的开源工具来完成这项工作。刚刚在Ubuntu 16.04.4 LTS上进行了测试,它可以完美运行。

$ xkb-switch       # display current group
ua
$ xkb-switch -l    # list groups
us
ua
$ xkb-switch -s us # switch to a named group
$

这看起来比其他解决方案更好,因为会setxkbmap <name>破坏所有选项,并且setxkbmap -layout <name>,虽然保留了选项,但仍然无法更改任务栏指示器或grp_ledif设置。


警告

如果您~/.config/kxkbrc使用了LayoutLoopCount(例如,设置为少于中列出的布局总数LayoutList),则如下所示:

LayoutList=us,ua,th,de
LayoutLoopCount=2
Options=grp_led:scroll,grp:rwin_switch,compose:menu,lv3:ralt_switch,
        nbsp:level2,grp:rctrl_toggle,misc:typo

那么xkb-switch只会让您在当前组的布局之间切换。


调用屏幕锁定

我注意到您的评论:

在我的屏幕保护程序开启之前,我想切换到英语,以便在重新登录时轻松输入密码。

这正是我的目标,因此,这就是答案:
为此,您只需要将其包装到一个脚本中即可,dbus-monitor就像这里讨论的那样。


3

在Gnome中使用18.04+中的gsettings,您既可以添加添加键盘布局,也可以从命令行或桌面上的键盘布局切换器在它们之间进行切换。

1.当前的键盘布局和选项:

$ gsettings list-recursively org.gnome.desktop.input-sources
org.gnome.desktop.input-sources show-all-sources false
org.gnome.desktop.input-sources xkb-options ['terminate:ctrl_alt_bksp']
org.gnome.desktop.input-sources per-window false
org.gnome.desktop.input-sources current uint32 1
org.gnome.desktop.input-sources mru-sources @a(ss) []
org.gnome.desktop.input-sources sources [('xkb', 'es'), ('xkb', 'no')]

2.添加键盘布局:

$ gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us'), ('xkb', 'no'),('xkb','gr')]"
$ gsettings get org.gnome.desktop.input-sources sources
[('xkb', 'es'), ('xkb', 'no'), ('xkb', 'gr')]

3.从命令行更改当前键盘布局:

$ gsettings set org.gnome.desktop.input-sources current 1

由于我们现在有3种不同的语言,因此我们有3种选择,从0到2,其中1是西班牙语,2是挪威语,3是希腊语。因此,将current设置为1以上会使Norwegian成为当前的键盘布局。

4.列出所有可能的键盘布局:

cat //usr/share/X11/xkb/rules/base.lst

5.使用键盘快捷键更改键盘布局:

键盘快捷方式已预先配置,用于更改键盘布局。目前的捷径:

$ gsettings get org.gnome.desktop.wm.keybindings switch-input-source
['<Super>space']

可以使用gsetting set来设置新的快捷方式,但请注意不要使用已经使用的快捷方式。列出所有正在使用的快捷方式:

$ gsettings list-recursively org.gnome.desktop.wm.keybindings
org.gnome.desktop.wm.keybindings cycle-windows-backward ['<Shift><Alt>Escape']
org.gnome.desktop.wm.keybindings minimize ['<Super>h']
org.gnome.desktop.wm.keybindings move-to-workspace-7 @as []
org.gnome.desktop.wm.keybindings move-to-workspace-8 @as []
org.gnome.desktop.wm.keybindings move-to-workspace-9 @as []
org.gnome.desktop.wm.keybindings move-to-monitor-left ['<Super><Shift>Left']
...

这是最全面的答案,对此表示敬意。
— 朱利安·查普伊斯

1

对于Ubuntu 18.04 + Gnome,其他答案对我不起作用,但这确实可行:

gdbus call --session --dest org.gnome.Shell \
--object-path /org/gnome/Shell \
--method org.gnome.Shell.Eval \
 "imports.ui.status.keyboard.getInputSourceManager().inputSources[0].activate()"

“ inputSources [0]”中的参数是键盘布局的索引,与gsettings解决方案相同。

在Linux StackExchange上找到它。


-1

出于好奇,您为什么要这样做?当您可以通过简单的键盘快捷键进行操作时,为什么还要打开终端并输入命令来切换键盘布局!假设您使用Ubuntu,它会变成Windows+Space


2
这似乎更多是评论,而不是答案。
— WinEunuuchs2Unix

我的屏幕打开右键之前,我想切换到英语,所以,这将是容易输入我的密码,当我回去。
— 的Eyal

这对于制作自定义键盘快捷键也很有用
— Vassilis

这在virtualbox上的Ubuntu 16.04中不起作用。
— Juha Untinen
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.