Comment définir une clé de composition dans un terminal (pas d'environnement de bureau)?

17

Je voudrais définir une composeclé sur mon système (Debian Sid "Wheezy"). Je n'ai pas de Xorg (et je ne veux aucun environnement de bureau). Uniquement dans le terminal.

Je voudrais le configurer sur ma Alt-Grclé (à droite Alt). J'ai essayé pendant un certain temps, mais je ne sais pas comment le configurer.

J'ai enquêté et trouvé des directions:

  • $ showkeyme donne le code Alt-Grclé de ma clé (# 100)

  • $ dumpkeyset $ dumpkeys --compose-onlyafficher "le contenu actuel du pilote du clavier", dans le format spécifié par keymaps, selon la manpage

  • $ loadkeys charger une table de traduction du clavier

Je suis sûr que ce n'est pas si difficile, mais je ne sais pas comment y faire face ...

cedbeu
la source
Hm, je ne suis pas à 100%, qu'aimeriez-vous que l'Alt-Gr fasse lorsque vous le frappez?
Emanuel Berg
Je voudrais que ce soit la clé de composition . En fait, je voudrais juste définir une clé de composition quelque part, et puisque j'ai l'habitude de l'avoir sur mon Alt-Gr, je voudrais la définir là-bas. Il est très facile à configurer avec une interface graphique , mais je devrais pouvoir le définir en mode console pur car je n'ai pas de système X installé (ce n'est pas une option). Je n'arrive pas à comprendre comment.
cedbeu

Réponses:

10

Sur les systèmes Debian et Ubuntu plus récents, vos paramètres de clavier sont placés /etc/default/keyboardet partagés entre X et la console. Il suffit de courir

sudo dpkg-reconfigure keyboard-configuration

et sélectionnez Compose key: Right Alt (AltGr)sur l'écran approprié.

Vous pouvez également mettre XKBOPTIONS=compose:ralten place /etc/default/keyboardet exécuter

sudo dpkg-reconfigure console-setup

Les systèmes plus anciens ont une clé Composer sur la console par défaut. Dans la usmise en page, appuyer simultanément sur les deuxAlt touches agit comme Compose. 1

Par exemple: Alt+ AltGr, ", A=> Ä

Si vous préférez AltGrseulement être Compose, vous devez changer

alt keycode 100 = Compose

dans votre carte de clavier active pour

keycode 100 = Compose

La façon la plus simple de procéder consiste à effectuer les modifications ci-dessus dans /lib/kbd/keymaps/i386/include/linux-with-alt-and-altgr.inc.

Une meilleure façon est de créer un nouveau fichier appelé /lib/kbd/keymaps/i386/include/altgr-is-compose.incavec la ligne ci-dessus, de créer un nouveau clavier qui l'inclut et de le définir sur votre clavier par défaut.

  1. PrtScnagit également comme Composepar défaut.
Mikel
la source
Je ne fais pas fonctionner ça. L' dpkg-reconfigureassistant demande en effet une clé de composition, mais il dit qu'elle ne fonctionne pas en "mode Unicode" (?). En outre, lorsqu'il n'est pas dans ce mode, il indique que la période Ctrl + fonctionne comme une touche de composition. Mais je ne réussis pas non plus à le faire fonctionner.
Emanuel Berg
Je pense que ce message d'avertissement fait référence unicode_start. Pour moi, ça marche toujours, pourvu que je cours setupconcomme dpkg-reconfiguredit.
Mikel
Lorsque je lance setupcondans mon terminal X ( urxvt), il est dit "Nous ne sommes pas sur la console, la console n'est pas configurée". Se showkeyplaint également "Impossible d'obtenir un descripteur de fichier sur la console". Dans tty, ces deux travaux, mais showkeydit (la première chose) que "le mode kb était UNICODE", c'est peut-être bien pourquoi cela ne fonctionne pas. Mais, la période Control + fonctionne tty. OK, ça a du sens maintenant.
Emanuel Berg
Votre question disait que vous n'en avez pas X? Vous devez exécuter setupconsur la console virtuelle Linux, par exemple Ctrl + Alt + F1.
Mikel
1
Il semble que la console-setupplupart des séquences de composition ne soient pas prises en charge par défaut. Vous pouvez courir dumpkeys --compose-onlypour voir lesquels. Vous devriez pouvoir modifier le console-setupscript init pour ajouter des règles de composition supplémentaires là où il s'exécute loadkeys.
Mikel
2

"composer" sur la console permet de taper deux caractères mais d'en sortir un troisième.

le problème est que les définitions de composition utilisent des octets , à la fois comme deux entrées (c'est-à-dire que vous ne pouvez pas définir la composition en termes de clés tapées mais uniquement en termes de symboles typés) et pour la sortie.

pour le faire fonctionner en UTF-8, qui est multi-octets (1 à 4 octets, au moins), il faudrait de grands changements dans la façon dont l'entrée de la console est gérée, et remplacer le simple tableau de caractères actuellement utilisé par quelque chose de plus complexe. Il semble qu'il n'y ait pas de plans pour le faire (le consensus parmi les développeurs de noyau est que la console devrait rester une console, quelque chose de simple, uniquement utilisée pour le dernier ressort; si vous avez réellement besoin d'unicode, vous aurez probablement aussi besoin de bidi, de mise en forme, etc.) il est préférable d'exécuter un terminal graphique (un xterm plein écran sur X11; mais il existe d'autres possibilités).

Donc, en effet, cela ne fonctionne pas, et ne fonctionnera pas, avec des caractères multi-octets sur la console. MAIS, cela fonctionne toujours si vous limitez les définitions de composition en ASCII ordinaire.

Et j'ai également découvert que cela fonctionne également si la sortie est en iso-8859-1 (qui correspond aux valeurs unicode jusqu'à 0x00ff); pour cela, vous pouvez mettre dans un script de démarrage une ligne:

    loadkeys / somepath / somefile

et mettez dans ce fichier les définitions de composition que vous souhaitez (faites attention à enregistrer le fichier dans le codage ISO-8859-1 et utilisez des caractères plus grands que 0x7f en sortie uniquement) la syntaxe d'un tel fichier est très simple, des lignes comme celle-ci:

    composer 'somechar' 'somotherchar' à 'outputout désiré'

par exemple:

    composer 'a' 'a' à 'å'
    composer 'a' 'e' à 'æ'

l'apostrophe doit être échappée.

l'effet des clés diacritiques mortes est également défini dans ce fichier; pour dead_acute + a vous définissez une ligne comme:

    composez '\' '' a 'à' á '

dead_grave utilise backtick (`), dead_diaeresis utilise doublequote ("), dead_circumflex utilise circumflex (^) et dead_tilde utilise tilde (~).

Pablo Saratxaga
la source
Merci, ça a fonctionné. Seulement, je devais changer compose 'a' 'a' to 'å'en compose 'o' 'a' to U+00E5, sinon loadkeysplaint d'une erreur de syntaxe.
Emanuel Berg
quand vous avez utilisé 'å', avez-vous écrit le fichier en iso-8859-1 (pas utf-8)?
Pablo Saratxaga
Je ne sais pas. Comment puis-je vérifier cela?
Emanuel Berg,
tester si un fichier est en utf-8: iconv -f utf-8 -t utf-8 filename s'il n'y a pas d'erreurs, c'est en utf-8
Pablo Saratxaga
Cela semble attraper le fichier, mais non, il n'y a pas d'erreurs echo $?au moins, et aucune sortie vers stderr. En outre, fileme dit que c'est UTF-8, donc cela a du sens.
Emanuel Berg