Atalhos de teclado separados para alternar entre layouts de teclado

4

Eu tenho alguns layouts de teclado de idiomas instalados em 12.04. Eu estou usando o atalho de teclado Ctrl - Shift para alternar entre os layouts de idioma. Esse método de troca leva muito do meu tempo.

Existe alguma possibilidade de configurar um atalho de teclado diferente para o layout de teclado de cada idioma?

Por exemplo:

Ctrl - Deslocamento - 1 (layout em inglês),

Ctrl - Deslocamento - 2 (layout polonês),

Ctrl - Deslocamento - 3 (layout italiano), etc.

    
por Vitaliy 30.09.2012 / 16:05

3 respostas

2

Simples: vá para as configurações do teclado, clique em "Atalhos" e adicione "Atalho personalizado". Para cada atalho, adicione o respectivo comando que escolhe um layout. Os comandos são

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

etc.

    
por January 30.09.2012 / 17:26
3

O problema com a solução de janeiro é que ele não funciona muito bem com o indicador da Unity.

Abaixo está um pequeno script python que você pode usar em vez de 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

Salve-o em $HOME/.local/bin (ou qualquer outro lugar que você goste) e, em seguida, chmod +x it. Adicione todos os mapas de teclado que você deseja por meio da tela de configuração de mapa de teclado padrão do Ubuntu.

Em seguida, a pergunta original pode ser resolvida vinculando um atalho para cada um dos seguintes comandos:

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

Mas pode fazer ainda mais! Por exemplo, keymap_cycle --keymap en,it ciclaria os mapas de teclado como este en- > it- > en- > it ... em cada invocação.

Para mostrar todos os keymaps disponíveis que você adicionou através da tela de configuração de keymaps do Ubuntu, execute keymap_cycle --show .

Parabéns ao @bjonen e sua resposta para a percepção mágica dos gsettings.

    
por Ihor Kaharlichenko 06.09.2014 / 20:47
0

Você pode usar o comando gsettings com atalhos personalizados. Leia mais detalhes aqui: link

    
por Alexey 10.12.2017 / 16:18