我在 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