J'ai quelques configurations de clavier de langue installées dans 12.04. j'utilise Ctrl-Shift raccourci clavier pour basculer entre les dispositions de langue. Une telle méthode de commutation prend beaucoup de temps.
Est-il possible de configurer un raccourci clavier différent pour chaque disposition de clavier linguistique?
Par exemple:
Ctrl-Shift-1 (Mise en page anglaise),
Ctrl-Shift-2 (Mise en page en polonais),
Ctrl-Shift-3 (Mise en page italienne), etc.
Simple: allez dans les paramètres du clavier, cliquez sur "Raccourcis" et ajoutez "Raccourci personnalisé". Pour chaque raccourci, ajoutez la commande respective qui choisit une disposition. Les commandes sont
setxkbmap -layout en
setxkbmap -layout pl
setxkbmap -layout it
etc.
Le problème avec la solution de janvier est que cela ne fonctionne pas bien avec l'indicateur de Unity.
Vous trouverez ci-dessous un petit script python que vous pouvez utiliser à la place 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
Enregistrez-le dans $HOME/.local/bin
(ou à un autre endroit de votre choix), puis chmod +x
. Ajoutez tous les keymaps que vous voulez via l'écran de configuration standard de keymap d'Ubuntu.
Ensuite, la question initiale pourrait être résolue en liant un raccourci pour chacune des commandes suivantes:
keymap_cycle --keymap en
keymap_cycle --keymap pt
keymap_cycle --keymap it
Mais ça peut faire encore plus! Par exemple, keymap_cycle --keymap en,it
effectuerait un cycle des keymaps comme ceci: en-> it-> en-> it ... à chaque appel.
Pour afficher toutes les keymaps disponibles que vous avez ajoutées via l'écran de configuration de keymap d'Ubuntu, exécutez keymap_cycle --show
.
Félicitations à @bjonen et son réponse pour la perspicacité magique de gsettings.
Vous pouvez utiliser la commande gsettings avec des raccourcis personnalisés. Lisez plus de détails ici: https://askubuntu.com/a/984981/619