如何从命令行更改当前选择的键盘布局?


12

我有键盘布局(其中两个),并通过以下命令在它们之间进行切换:

setxkbmap -layout us,ru -option -option "grp:lctrl_lshift_toggle,ctrl:nocaps"

现在,我想us使用一些命令行命令切换到布局。那可能吗?

Answers:


13

您可以使用xkb-switch-n切换到下一个布局):

xkb-switch -n

xkblayout-stateset +1在您的情况下,可以使用环绕):

xkblayout-state set +1

xtexautomation模拟Control_L+ Shift_L按下/释放:

xte 'keydown Control_L' 'keydown Shift_L' 'keyup Shift_L' 'keyup Control_L'

xkblayout-state很棒,谢谢!我只要使用xkblayout-state set 1,就可以立即获得us布局。
Rogach 2013年

2

在Stack Exchange中搜索kbdmap会发现此页面,但没有提及该词。为了清楚起见,这是一个答案(与问题的X11标记不完全匹配,但是应该可以帮助某人)…

仅限虚拟控制台时

不带 X。

kbdmap(1)

kbdmapvidfont-syscons和vt的前端

…允许轻松设置可用的键盘映射表…

确实,这很容易,并且(对我而言,更改为英国键盘布局)有效。

使用X时

–例如,基于FreeBSD的TrueOS桌面。

帖子5的更改键盘布局”下?| FreeBSD论坛(2015-08-03):

kbdmap用于控制台。setxkbmap是X11所需的实用程序。…

有变化的时候是一个警告,例如ü nited王国:

$ kbdmap
kbdcontrol: getting keymap: Inappropriate ioctl for device
You are not on a virtual console - expect certain strange side-effects
lang_default = en
dialect = en_...UTF-8
lang_abk = en

…

keymap="uk.kbd"
$ 

1

根据键盘布局的发行版,命令为

loadkeys <path/to/file>

loadkey /lib/kbd/keymaps/i386/qwerty/pt_PT.map.gz

如果我没记错的话。如果要将特定的键分配给特定的行为,也请查阅手册页中的loadkeys。


问题是(例如)执行后loadkeys us,它将重置我使用setxkbmap创建的设置(两个布局并在它们之间切换)
Rogach 2013年

据我所知,这是更改布局的命令,如果您有特定的命令,那么我猜最好的方法是在您的外壳中使用一个别名,该别名将使用您的设置调用loadkeys。例如:load_us将加载美国键盘,实际上将调用/key/lib/kbd/keymaps/i386/qwerty/us.map.gz或类似的加载键。与其他布局相同。
BitsOfNix

但是之后我该如何更改键盘设置?目前,我通过使用Ctrl键和Shift键将其拧紧来更改布局。
Rogach 2013年

让我们回到命令行,我假设您提到的是tty终端。这意味着您没有使用xterm / terminology / gnome-terminal或任何其他仿真器,但实际上您处于没有X服务器的环境中。考虑到这一点,您需要使用loadkeys,根据您的问题,我给了您命令行,您实际上想要的似乎是一个快捷键。如果您有要映射的特定键,则需要创建自己的布局并从CLI的角度根据请求加载键。如果您要使用快捷方式,请更新您的问题。
BitsOfNix

不,我确实在使用图形环境,尤其是gnome-terminal。只是我需要以编程方式更改X布局,以响应某些事件-因此,tty东西将无法工作。
Rogach 2013年

0

请参阅此howforforge文章,标题为:在各种发行版上更改语言和键盘布局,其中提供了用于在不同发行版上更改键盘布局的各种命令。

这些命令大多数都以GUI的形式出现,但是如果您看其中的大多数,也可以从命令行运行。例如,我正在使用Fedora(基于Red Hat的发行版)。system-config-keyboard当不带任何参数运行时,该命令会显示一个GUI。

但是,如果我运行system-config-keyboard --help它,也可以从命令行运行它:

$ system-config-keyboard --help
Usage: system-config-keyboard [--help] [--noui] [--text] [<keyboardtype>]
       --help            Print out this message.
       --noui            Run in command line mode.
       --text            Run in text interface mode.

       <keyboardtype> options are: ar-azerty, ar-azerty-digits, ar-digits, ar-qwerty, ar-qwerty-digits, be-latin1, ben, ben-probhat, bg_bds-utf8, bg_pho-utf8, br-abnt2, cf, croat, cz-lat2, cz-us-qwertz, de, de-latin1, de-latin1-nodeadkeys, dev, dk, dk-latin1, dvorak, es, et, fi, fi-latin1, fr, fr-latin1, fr-latin9, fr-pc, fr_CH, fr_CH-latin1, gr, guj, gur, hu, hu101, ie, is-latin1, it, it-ibm, it2, jp106, ko, la-latin1, mk-utf, nl, no, pl2, pt-latin1, ro, ro-cedilla, ro-std, ro-std-cedilla, ru, sg, sg-latin1, sk-qwerty, slovene, sr-cy, sr-latin, sv-latin1, tj, tml-inscript, tml-uni, trq, ua-utf, uk, us, us-acentos

因此,要将键盘布局更改为俄语,我可以运行以下命令:

$ system-config-keyboard ru
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.