单独的键盘快捷键,用于在键盘布局之间切换

我在12.04安装了一些语言键盘布局。 我使用CtrlShift键盘快捷键在语言布局之间切换。 这种切换方法需要我很多时间。

是否有可能为每种语言键盘布局设置不同的键盘快捷键?

例如:

CtrlShift1 (英文版面),

CtrlShift2 (波兰布局),

CtrlShift3 (意大利布局)等

简单:转到键盘设置,单击“快捷方式”,然后添加“自定义快捷方式”。 对于每个快捷方式,添加选择一个布局的相应命令。 命令是

setxkbmap -layout en setxkbmap -layout pl setxkbmap -layout it 

等等

1月份解决方案的问题在于它与Unity的指标不能很好地协调。

下面是一个小python脚本,您可以使用它而不是setxkbmap:

 #!/usr/bin/env python import argparse from gi.repository import Gio setting = Gio.Settings.new("org.gnome.desktop.input-sources") keymaps = [keymap for (_, keymap) in setting['sources']] parser = argparse.ArgumentParser(prog='keymap_cycle', description='Cycle through a subset of enabled keymaps.') group = parser.add_mutually_exclusive_group(required=False) group.add_argument('-s', '--show', action='store_true', help='show available keymaps') group.add_argument('-k', '--keymaps', default=','.join(keymaps), help='cycle through keymaps (default: %(default)s)') arguments = parser.parse_args() if arguments.show: print 'Available keymaps: %s' % ', '.join(keymaps) else: cycle = arguments.keymaps.split(',') current_language = keymaps[setting['current']] try: current_cycle_index = cycle.index(current_language) desired_cycle_index = (current_cycle_index + 1) % len(cycle) except ValueError: desired_cycle_index = 0 desired_language = cycle[desired_cycle_index] try: desired_language_index = keymaps.index(desired_language) setting['current'] = desired_language_index except ValueError: pass 

将它保存到$HOME/.local/bin (或者你喜欢的任何其他地方),然后chmod +x它。 通过标准的Ubuntu键盘配置屏幕添加所需的所有键盘映射。

然后可以通过绑定以下每个命令的快捷方式来解决原始问题:

 keymap_cycle --keymap en keymap_cycle --keymap pt keymap_cycle --keymap it 

但它可以做得更多! 例如keymap_cycle --keymap en,it会在每次调用时循环使用像这样的en-> it-> en-> it …的键盘映射。

要显示您通过Ubuntu的键盘配置屏幕添加的所有可用键盘图,请运行keymap_cycle --show

感谢@bjonen和他对gsettings魔术洞察力的回答 。

您可以将gsettings命令与自定义快捷方式一起使用。 在此处阅读更多详细信息: https : //askubuntu.com/a/984981/6193