如何从命令行更改键盘?

我如何从命令行更改键盘布局? 例如,我想从英语切换到希伯来语。 我可以从lightdm用屏幕一角的小图标做到这一点。

从终端

英语译成希伯来语,反之亦然,使用Alt + Shift

setxkbmap -option grp:alt_shift_toggle us,il 

您可以使用此命令查看所有语言环境别名

 cat /etc/locale.alias 

有关setxkbmap更多信息,请参见手册

 man setxkbmap 

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

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

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

 loadkeys es 

对于X:

 setxkbmap es 

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

 sudo dpkg-reconfigure console-setup 

Ubuntu 13.10或更高版本

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

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

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

为方便使用,请创建别名。

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

此命令使您只能通过右侧Alt + shift切换英语和希伯来语,并从左侧alt + shift中解救。

使用18.04+和Gnome中的gsetting,您可以添加添加键盘布局,并从命令行桌面上的键盘布局切换器之间切换。

1.Present键盘布局和选项:

 $ 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种是西class牙语,2种是挪威语,3种是希腊语。 因此,将电流设置为1使挪威语成为当前的键盘布局。

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

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

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

键盘快捷键已预先配置为更改键​​盘布局。 目前的捷径:

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

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

 $ gsettings list-recursively org.gnome.desktop.wm.keybindings org.gnome.desktop.wm.keybindings cycle-windows-backward ['Escape'] org.gnome.desktop.wm.keybindings minimize ['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 ['Left'] ... 

似乎没有标准的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 破坏所有选项,而setxkbmap -layout ,虽然它保留了选项,但它仍然无法更改任务栏指示符,也无法更改grp_led如果已设置)。


警告

如果~/.config/kxkbrc使用LayoutLoopCount (例如,它设置为小于LayoutList列出的布局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

出于好奇,你为什么要那样做? 为什么要打开一个终端,他们键入一个命令来切换你的键盘布局,当你可以通过一个简单的键盘快捷方式! 假设你使用Ubuntu,它就像Windows + Space