Отдельные сочетания клавиш для переключения между раскладками клавиатуры

У меня есть несколько языковых раскладок клавиатуры, установленных в 12.04. Я использую сочетание клавиш Ctrl - Shift для переключения между языковыми раскладками. Такой метод переключения занимает много моего времени.

Есть ли возможность настроить разные сочетания клавиш для каждой языковой раскладки клавиатуры?

Например:

Ctrl - Shift - 1 (английская раскладка),

[ 114] Ctrl - Shift - 2 (польская раскладка),

Ctrl - Shift - 3 (итальянская раскладка) и т. Д.

4
задан 8 October 2012 в 16:00

3 ответа

Просто: перейдите в настройки клавиатуры, нажмите «Ярлыки» и добавьте «Пользовательские ярлыки». Для каждого ярлыка добавьте соответствующую команду, которая выбирает один макет. Команды:

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

и т. Д.

0
ответ дан 8 October 2012 в 16:00

Вы можете использовать команду gsettings с пользовательскими ярлыками. Подробнее читайте здесь: https://askubuntu.com/a/984981/6193

0
ответ дан 8 October 2012 в 16:00

Проблема с решением в январе состоит в том, что оно не играет приятно с индикатором Единицы.

Ниже маленький сценарий 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-> это-> en-> это... на каждом вызове.

Для показа всех доступных контурных карт, Вы добавили через выполненный экран конфигурации контурной карты Ubuntu keymap_cycle --show.

Благодарность @bjonen и его ответу для понимания волшебства gsettings.

3
ответ дан 8 October 2012 в 16:00

Другие вопросы по тегам:

Похожие вопросы: