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

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

我在 12.04 中安装了几种语言键盘布局。我使用Ctrl-Shift键盘快捷键在语言布局之间切换。这种切换方法耗费了我很多时间。

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

例如:

Ctrl- Shift- 1(英文布局),

Ctrl- Shift- 2(波兰布局),

Ctrl- Shift- 3(意大利布局)等等

答案1

简单:进入键盘设置,点击“快捷键”,添加“自定义快捷键”。对于每个快捷键,添加选择一个布局的相应命令。命令如下

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

ETC。

答案2

January 的解决方案的问题在于它不能与 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 的神奇之处。

答案3

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

相关内容