Merci pour cette longue description qui permettra à tout un chacun chacune d'estimer son appétence envers la syntaxe Perl. Pour ma part 🤢
J’ai plus fait le tour des particularités à connaître quand on vient d’un autre langage que des trucs sympas.
Par exemple, si on veut un tableau d’entiers allant de 1 à 10 : my @t = 1 .. 10;
Il y a des choix inusuels qui permettent une certaine souplesse.
Par exemple, si une fonction attend des paramètres fixes et un nombre variable d’autres paramètres, on peut les récupérer avec my ($a, $b, $c, @val) = @_;
Il y a certaines fonctionnalités bien pratiques, comme la fonction map, qui remplace ses arguments par le résultat du bloc de commandes ou de la chaîne passée en premier paramètre, appliquée à chacun un par un, et retourne cela en liste. C’est plus court et moins lourd à lire qu’un for avec un ajout dans un tableau. Mais on ne commence pas forcément par ça en venant d’un autre langage.
C’est moins gratifiant de commencer par s’assurer de pouvoir faire ce qu’on savait déjà faire dans d’autres langages, mais ça cause sûrement moins de frictions.
Ne le fait pas avec Python si tu peux le faire avec Perl
Bonne idée : du coup, il n’y a aucune raison d’utiliser Python ;-) (OK, NumPy).
En plus, ça évite de devoir se coltiner des virtualenv parce que la bibliothèque truc nécessite la bibliothèque bidule 15, mais ne fonctionne pas avec la 16, parce que la notion de compatibilité ascendante n’a malheureusement pas pénétré l’écosystème Python.
Ne le fait pas avec Perl si tu peux le faire avec Awk
Je regrette vraiment qu’AWK ait été cantonné à du parcours de fichier. À mon sens, il aurait mérité de remplacer le shell.
Ne le fait pas avec Awk si tu peux le faire avec Sed
Oui, enfin au delà de la substitution, sed devient vite ésotérique (un peu entre les CSS et la configuration de sendmail). Utiliser sed à fond disqualifie pour se plaindre de la lisibilité de Perl.
Ne le fait pas avec Sed si tu peux le faire avec Grep
Bon, j’utilise aussi grep pour les cas triviaux.
J’ai des collègues qui pensent comme ça aussi.
Le problème, c’est que parfois les besoins évoluent.
On commence à faire un truc en shell en « pipant » des commandes, et on s’aperçoit que ce serait bien de traiter une autre donnée en parallèle, sauf que ce n’est pas très pratique à faire dans des pipes, et donc on finit par refaire le traitement dans un vrai script avec une logique très différente.
Ou on commence par écrire un script shell, puis on le complexifie jusqu’au stade où on se dit que ce n’est pas très pratique ou très rapide (n’importe quel langage qui n’appelle pas des programmes externes pour des commandes de base est beaucoup plus rapide que le shell) et qu’on ferait mieux de le refaire en Python.
Alors que Perl est évolutif. Tu commences par une uniligne pas plus longue que celle avec des pipes (en utilisant les options comme -n et sans déclarer les variables). Puis s’il tu dois passer à un vrai script, tu ajoutes use strict;, tu déclares les variables, tu remplaces les options par leur équivalent explicite, mais tu n’as pas à refaire ton code, juste à le compléter. Et si un script doit devenir plus complexe, pas besoin de changer de langage, tu as déjà un langage bien plus puissant que le shell.
Et j'ajouterai que AWK faisant partie du standard Posix, cela en fait une dépendance sur laquelle on peut quasiment toujours compter, même dans des environnements restreints.
Attention, awk, c’est comme l’eau Cristaline, ce ne sont pas tous le même. Et certaines fonctionnalités utiles ne font pas partie de la version de base.
Commet le shell et contrairement à tous les autres langages de scripts.
C’est pire pour le shell. Si tu ne sais pas si ton script sera exécuté sur bash ou sur un vieux ksh même pas Posix (la dernière fois que j’ai essayé OpenIndiana, c’était le cas de son /bin/sh, pour ne pas casser la compatibilité de vieux scripts écrits il y avait déjà plusieurs décennies), ça limite beaucoup.
Et il y a des « bashismes » qui sont vraiment utiles, comme "﹩@" (j’ai remplacé les dollars par leur version mini dans ce paragraphe, parce qu’autrement, Markdown me remplace la suite par du Mathjax ou au mieux par la chaîne {mathjax} quand je tente de le quoter avec \ ; seule une lettre derrière le dollar semble empêcher ce comportement pénible) pour passer les arguments de la fonction courante à une autre fonction ou commande sans connaître leur nombre et sans se prendre un gros bug si certains contiennent des espaces. Les shells moins évolués ne disposent que de ﹩*. Tel quel, il met tous les arguments dans la ligne de commande sans guillemets, et "﹩*" les passe tous comme un seul argument entre guillemets. Dans les deux cas, s’il y en avait qui contenaient des espaces, il n’y a plus moyen de les séparer de manière fiable. Alors que "﹩@" fait comme s’ils étaient passés chacun entre guillemets. C’est moins logique par rapport à la syntaxe, mais c’est le comportement dont on a réellement besoin.
Si on en vient à devoir installer bash, autant installer Perl.
Et est‐ce que ça compense le temps que tu mets à écrire [:digit:] plutôt que \d dans une expression régulière plus complexe ?
Perl est considéré comme une référence concernant les expressions régulières pour leur richesse et beaucoup ont choisi de le copier, par exemple Python ou cette bibliothèque pour C qui y fait explicitement référence.
Je me fiche un peu de savoir de savoir si grep ou AWK sont plus rapides, vu que leurs limitations me gênent rapidement.
Je sais qu’il y en a qui ont fait une implémentation sensiblement plus rapide qui reprend presque toutes les possibilités de Perl sauf une ou deux identifiées comme sources de ralentissement. Je ne me rappelle malheureusement plus laquelle c’est (peut-être une implémentation en Go voire celle fournie avec le langage).
Ça vaut sûrement plus le coup que celle d’AWK. D’un autre côté, si c’est un langage compilé, on ne va pas l’utiliser pour une petite commande rapide en une ligne…
Ce n’est pas étonnant, puisque quand Larry Wall, alors administrateur système, a créé Perl, il s’est inspiré de ces outils (sûrement pas mal d’AWK) pour créer un langage polyvalent, mais conservant leurs possibilités.
Concernant AWK, il y a des options pour simuler son comportement avec Perl :
-n pour parcourir ligne à ligne les fichiers passés en arguments,
-e pour exécuter le programme passé en paramètre de la ligne de commande (plutôt qu’un fichier ; avec awk, c’est l’inverse, le premier argument est considéré par défaut comme le programme à exécuter, sauf si un fichier est précisé avec l’argument -f),
-a pour séparer les lignes en champs selon les espaces (ou un autre séparateur passé en argument avec -F, comme awk)
(voir man perlfunc pour les options).
Et dans cette utilisation, ça supporte aussi les blocs BEGIN et END, comme awk.
Alors pour un traitement simple, il y a effectivement trois options à passer en plus.
Seulement si le traitement à effectuer se complexifie, avec la lecture d’autres fichiers dans un format différent à analyser, des recoupements à faire, ça devient moins évident avec AWK, alors que Perl fournit les possibilités d’un langage généraliste.
man perlrun nous apprend que l’option -n correspond à la construction :
while(<>){traitement;}
donc dans un programme plus complet (sans -n, mais non plus la nécessité d’utiliser BEGIN ni END), on parcourra un fichier avec une construction comme :
la fin de ligne ne vaut pas fin d’instruction, il faut un point‐virgule pour séparer les instructions ;
les variables sont toujours préfixées (par $ pour les variables scalaires) ;
la ligne courante est dans la variable $_ (avec l’option -n ou while(<>)), les champs dans $F[0], $F[1] (avec l’option -a)…
else if est contracté en elsif.
Il y a une commande pour traduire un script AWK en Perl, malheureusement un peu tombée en désuétude (elle a longtemps été intégrée à la bibliothèque Perl de base).
comme en shell, les variables sont interprétées dans les chaînes entre guillemets ", pas dans les chaînes entre quotes ' ;
les variables locales se déclarent avec my (si on commence son programme par use strict; les variables doivent être déclarées, ça évite d’avoir des bugs à cause d’une typo, c’est donc fortement conseillé pour tout ce qui est plus gros qu’un uniligne) ;
les variables scalaires sont préfixées par $, les tableaux par @, les tableaux associatifs par %, mais un élément d’un tableau @t s’accède avec $t[indice] et un élément d’un tableau associatif %a avec $a{chaîne} ; il faut voir @ et % comme des marques de pluriel (Larry Wall est aussi linguiste…) ;
$0 contient la ligne de commande, @ARGV ses arguments ;
for (@tableau) permet de traiter tous les éléments d’un tableau (affectés à $_), mais for supporte aussi la syntaxe du langage C ;
des éléments entre parenthèses et séparés par des virgules forment une liste, qui peut être utilisée pour initialiser un tableau ou un tableau associatif (un élément sur deux est l’indice et l’autre la valeur) ;
le type des variables scalaires est déterminé par le contexte et la conversion faite si possible ; par exemple . l’opérateur de concaténation considère ses arguments comme des chaînes de caractères, + comme des nombres, && comme des booléens ;
par défaut vrai correspond à 1 et faux à 0, mais la chaîne vide et la liste vide sont aussi considérées comme des valeurs fausses, les autres comme vraies ;
les fonctions se définissent avec sub, les paramètres se récupèrent dans @_.
Par exemple le code AWK,
function styles(pat, tag) {
l = length(pat)
se traduira par
substyles{my($pat,$tag)=@_;my$l=length$pat;
Note : comme on le voit, on peut aussi affecter un tableau à une liste, les éventuelles valeurs surnuméraires sont ignorées. Mais si la fonction attend une liste de longueur indéterminée d’arguments de rôle équivalent, on peut aussi les traiter directement avec for (@_) { traitement sur $_ }.
Je me suis concentré sur les particularités, le reste ressemble plus aux autres langages, notamment au langage C ou au shell.
C’est censé être un câble OTG.
Je me suis posé la question aussi au moment, mais il ne m’est pas venu à l’idée d’autre périphérique que je puisse tester pour en être sûr (et là, je ne sais pas où j’ai mis le câble).
Les câbles OTG ont‐ils quelque chose de spécial, à part une association de prises éventuellement inusuelle (par exemple deux micro‐USB) ?
tu peux brancher n'importe quel clavier USB via un câble usb OTG.
J’ai essayé, ça ne fonctionne pas avec mon vieux clou (enfin je peux brancher un clavier, mais le téléphone s’en fiche complètement).
Quand je veux taper un SMS assez long (j’ai quelques proches qui me demandent des nouvelles par SMS), je branche le téléphone sur l’ordinateur et j’utilise scrcpy (déjà empaqueté par les bonnes distributions). Comme son nom l’indique, il duplique l’écran du téléphone sur l’ordinateur, mais il permet aussi d’utiliser son clavier (en s’adaptant à la disposition qu’on utilise).
Il y a quelques caractères relativement courants qui ne passent pas (et qu’il faut donc faire au clavier virtuel), mais globalement, il se débrouille pas mal.
Éventuellement, pour du texte existant, on peut faire un copier‐coller avec Alt+v sur les téléphones à partir d’Android 7 ou Alt+Maj+v sur les plus vieux. Dans ce dernier cas, scrcpy simule des frappes au clavier virtuel ; pour le coup, il y a probablement moins de risques de perdre certains caractères avec QRNote, s’il supporte le copier‐coller.
Cela dit, pour du texte existant, une fois le téléphone branché à l’ordinateur, le plus simple est de transférer un fichier texte.
Bon, ça ne m’arrangerait pas forcément tant que je n’aurai pas porté ma disposition sur Android, puisqu’en toute logique, ça utiliserait celle du téléphone.
Quoiqu’il en soit, ça ne marche pas avec mon téléphone :
ERROR: SEND_HID_EVENT: libusb error: Pipe error
WARN: Could not send HID event to USB device
Cela dit, il est obsolète (Android 6…), ça peut expliquer que tout ne fonctionne pas.
Je retiens l’idée pour le jour au j’aurais porté ma disposition et un nouveau téléphone.
Et scrcpy est assez pratique aussi pour d'autres trucs, notamment pour taper des SMS avec son ordinateur, avec l'interface du téléphone.
Merci de la suggestion, c’est génial, il s’adapte à la disposition de clavier qu’on utilise, même personnalisée !
Bon, autant qu’il le peut :
[server] WARN: Could not inject char u+00ab
[server] WARN: Could not inject char u+00a0
Je ne suis donc pas là d’envoyer des SMS avec une typographie soignée, mais ça me permettra d’affronter sereinement la réponse à des messages de deux kilomètres de long que m’envoient parfois certains proches…
L’utilisation de touches mortes fonctionne mieux (au moins pour mon téléphone) avec l’option --prefer-text. Sans ça, accent circonflexe + o produit « oô ».
J'aurais dû percuter sur le fait que 00b7, c'est b7 et donc étonnant , car censé se trouver dans la table ascii étendue 8 bits. Mais ça servait peut-être à adoucir les lignes en ascii-art, qui sait.
Toujours d’après Wikipédia, il est utilisé en catalan (langue officielle unique de la principauté d’Andorre et avec l’espagnol de plusieurs territoires d’Espagne), en sarde, en occitan gascon, en franco‐provençal et en gallo (langue de la Haute‐Bretagne, apparentée aux langues régionales romanes de la moitié nord de la France et non au breton).
Un lien vers une page web permettant de visualiser tous les caractères UNICODE + leurs différents formats d'encodages + leur nom + entités HTML, etc.
Effectivement, elle est très complète, je la retiens. Dommage qu’elle ne propose pas de recherche.
Si j’avais cité Wikipédia, c’était pour mettre le lien… et je l’ai oublié !
La Table de caractères de Gnome indique aussi des formats d’encodage dans l’onglet « Détails du caractère » ; moins que ta page web, mais par contre, elle supporte aussi bien une recherche sur la description que directement avec le caractère, si on peut le produire au clavier ou avec un copier‐coller.
Mais s’il s’agit juste d’identifier des caractères d’une chaîne et qu’on préfère les points de codes Unicode à la description, on peut convertir l’UTF-8 en points de code en hexadécimal avec la commande suivante (02 dans le format pour indiquer qu’on veut les codes sur deux chiffres minimum, 04 si on en voulait quatre ; chercher sprintf dans man perlfunc pour plus d’informations sur le format ; -Mutf8 spécifie que les chaînes de caractères du code source sont en UTF-8) :
$ perl -Mutf8 -e 'printf "%*v02X\n", " ", "L’aîné·e des 🐧"'
4C 2019 61 EE 6E E9 B7 65 20 64 65 73 20 1F427
Ou si on veut garder la commande dans un fichier exécutable (ça peut être plus pratique que de l’apprendre par cœur…) pour analyser l’entrée standard ou des fichiers (-n demande de parcourir la sortie standard ou les fichiers passés en paramètres, façon awk ; -C31 spécifie que tous les flux d’entrées/sorties sont en UTF-8 ; voir man perlrun) :
Dans un environnement où tu maîtrises les fontes, tu peux aussi utiliser la Linux Biolinum Keyboard :
Déjà disponible dans toutes les bonnes crèmeries distributions, généralement dans le paquet de la Linux Libertine (l’auteur de ces polices a manifestement une affinité pour Linux).
Unicode fournit une possibilité : il y a un caractère « combining enclosing keycap », U+20E3 (à taper après le caractère qu’on veut affecter, comme pour tout caractère combinant).
Exemple : B⃣ É⃣ O⃣ P⃣
Et, là, j’ai ajouté des espaces entre les caractères, sinon ça se chevauchait vraiment vu de mon navigateur. Si on met deux espaces entre chaque, l’interpréteur Markdown les réduit à une seule, à moins d’utiliser des espaces insécables : B⃣ É⃣ O⃣ P⃣
* Sauf sous KDE, à condition de paramétrer son environnement pour utiliser la méthode de saisie classique xim.
Dans ton optique d’usage, ce n’est peut-être pas très utile, mais ça l’est paradoxalement plus pour l’usage de base d’AutoTexte, à savoir les formules de politesse.
Par exemple, sans même définir de touche Compose, on peut créer un fichier .XCompose contenant :
# On charge la configuration de Compose de la locale
include "%L"
<dead_circumflex> <dead_circumflex> <t> <e> <x> : "Des pas derrière lui… Très mauvais signe… Mais qui pourrait bien le suivre au beau milieu de la nuit, dans cette rue étroite dans le fin fond du port ? Et ce alors qu’il vient de réussir le coup dont il a rêvé toute sa vie ! Qu’il ne lui reste plus qu’à disparaître avec son butin sans laisser de trace ! Serait-ce l’un de ses nombreux collègues qui a eu la même idée que lui, l’a observé en secret et a attendu cet instant précis pour lui dérober le fruit de son travail ? Ou bien seraient-ce plutôt les pas de l’un des innombrables gardiens de la paix de Marseille, prêt à faire claquer d’étincelantes menottes autour de ses poignets ? Son ordre – « Ne bougez plus ! » – résonne déjà dans ses oreilles ! Se sentant traqué, il se retourne brusquement et aperçoit un étroit passage. Sauvé ? En un éclair, il vire à droite et disparaît entre les deux bâtiments, manquant de justesse de trébucher sur la poubelle renversée en plein milieu de la ruelle. Il tâtonne dans l’obscurité, cherchant désespérément une issue. Tout à coup, son sang se fige : il vient de comprendre que la seule et unique façon de s’échapper de la petite cour intérieure au milieu de laquelle il se trouve est… de faire demi-tour et de repasser par le passage qu’il vient d’emprunter. Mais pendant ce temps, les bruits de pas se rapprochent inexorablement. Déjà, une sombre silhouette apparaît au coin de la rue. Ses yeux scrutent nerveusement l’obscurité, à la recherche du salut. Va-t-il vraiment échouer, maintenant, si près du but, après tant d’efforts et toutes ces années passées à forger son plan ? Il s’adosse au mur contre lequel il s’aplatit comme il le peut, dans l’espoir de pouvoir échapper aux regards de son poursuivant. Soudain, il décèle le grincement presque imperceptible d’une porte qui bat tout près de lui au vent nocturne. Serait-il enfin sauvé ? Il avance à pas feutrés en direction de la porte… Mais sur quoi va-t-elle s’ouvrir ?"
Taper deux fois l’accent circonflexe puis tex produira le texte (note : il faut relancer les logiciels pour que ce soit pris en compte). Accessoirement, ça écrase la règle de composition standard qui définit que taper deux fois l’accent circonflexe produit ^ mais on l’a déjà sur le clavier.
Pour ceux qui sont passés à des claviers alternatifs, comment vivez-vous la cohabitation ?
Changer de disposition, c’est une bonne occasion d’apprendre aussi la frappe dactylographique, dite aussi « à l’aveugle », parce qu’en principe, on ne regarde pas les touches.
Du coup, il n’y a pas la nécessité d’avoir un clavier spécial. Le clavier n’a aucune idée de ce qui est imprimé sur ses touches, il renvoie les mêmes codes de touches qu’il soit sérigraphié en Azerty ou Qwertz. Il suffit donc de configurer le système pour la disposition que tu veux utiliser.
Pour le cas où il est utile que quelqu’un d’autre puisse taper sur ma machine, j’ai configuré Xkb pour reconnaître mes claviers et les configurer en Béop, mais configurer tous les autres en Azerty. Donc il suffit que la personne branche son clavier (les deux claviers sont utilisables en même temps avec chacun sa disposition).
Pour ce qui est d’utiliser la machine de quelqu’un d’autre, j’avais appris la frappe dactylographique en Azerty, et même si je suis assez rouillé, j’y arrive encore.
En fait, que je sois plutôt rouillé en Azerty a réglé un problème auquel on ne s’attendrait pas : la frappe dactylographique fait appel à la mémoire musculaire, ce qui est un processus subconscient. D’un côté, c’est bien, ça libère l’esprit pour autre chose, notamment réfléchir à ce qu’on va écrire. Mais d’un autre côté, ce n’est pas si évident de choisir consciemment entre deux processus subconscients ; parfois, on n’y arrive pas du premier coup. Mais comme je ne suis plus aussi à l’aise en Azerty, j’ai repris l’habitude de regarder le clavier pour repasser en Azerty. Maintenant, le fait de regarder le clavier me fait repasser en Azerty. Rien que baisser les yeux peut suffire si ça ne fait pas longtemps que j’ai utilisé cette disposition. Lever les yeux en faisant un peu le vide me fait repasser en Béop. Mais si tu tapes en Azerty sans méthode dactylographique et que tu apprends le Bépo ou une autre disposition en méthode dactylographique, changer de position de mains devrait faire l’affaire pour passer d’une disposition à l’autre.
Parmi les nombreuses options de Xkb¹ dont malheureusement les environnements graphiques ne proposent qu’une petite partie, il y en a une qui fait ce que tu veux. En ligne de commande :
setxkbmap -option kpdl:kposs
Évidemment, il reste la nécessité de lancer cette commande à l’ouverture de session²… à moins de configurer l’environnement graphique pour conserver le réglage clavier du système³ et de configurer le clavier dans /etc/X11/xorg.conf.d.
En créant dans ce répertoire par exemple un fichier nommé 90-keyboard_layout.conf contenant :
Pour avoir l’ensemble des options proposées par Xkb : man xkeyboard-config (puis /kpdl pour voir les possibilités concernant la touche point du pavé numérique).
Les définitions des touches se trouvent dans /usr/share/X11/xkb/symbols (et plus précisément concernant les options de cette touche dans /usr/share/X11/xkb/symbols/kpdl).
Certains environnements graphiques lancent le fichier .xprofile à l’ouverture de session et pour les autres, il faut chercher une autre solution.
Il y a les environnements graphiques arrangeants et il y a Gnome, pour lequel je n’ai trouvé comme solution que de remplacer l’exécutable de son service de configuration du clavier par un lien vers /bin/true (ça fait un certain temps et je n’ai pas vérifié si ça a évolué)…
Sinon, avec un langage qui n’est pas assez idiot pour interpréter ses variables avant d’analyser la ligne de commande, ça évite quand même bien des surprises et incertitudes :
#!/usr/bin/perl -wusestrict;useCwd;useFile::Find;@ARGV==2ordie"Recrée une arborescence avec des fichiers vides.\nUtilisation : $0 repertoire_source repertoire_destination\n";my($src,$dst)=@ARGV;# Avant de se placer dans le répertoire source, il faut s’assurer d’avoir le# chemin absolu du répertoire destination.$dst=~m{^/}or$dst=getcwd."/$dst";chdir$srcordie"Impossible d’accéder à $src\n";-d$dstormkdir$dstordie"Impossible de créer $dst\n";subcree{# Attention, les liens symboliques ne sont pas gérés !if(-d){-d"$dst/$File::Find::name"ormkdir"$dst/$File::Find::name"orwarn"Impossible de créer le répertoire $dst/$File::Find::name\n";}elsif(-f){openmy$fich,'>',"$dst/$File::Find::name"orwarn"Impossible de créer le fichier $dst/$File::Find::name\n";}# Les pipes, devices ou autres sont ignorés.}find(\&cree,'.');
Si tu utilises fcitx, peut‐être es‐tu sous KDE. Si c’est le cas, est‐ce que les raccourcis définis dans .XCompose et produisant une chaîne de plus d’un caractère fonctionnent pour toi ?
Il m’a fallu un peu de temps pour tester (je ne trouvais plus de clé USB disponible et avec une machine qui n’est pas un foudre de guerre, faire tourner une machine virtuelle avec KDE ou pire Gnome, c’est à mourir de vieillesse…).
Y a-t-il des problèmes particuliers pour les utilisateurs de GNOME ? Comment déterminer (peut-être par une ligne de commande utilisant strace et grep (?)) s'il faut ajouter export GTK_IM_MODULE=xim à ~/.xprofile, ~/profile ou ~/.bash_profile ?
Ça a beaucoup fluctué (comme beaucoup de choses sur Gnome…). À une époque, il fallait utiliser .gnomerc, puis il fallait spécifier un fichier à lancer au démarrage dans les paramètres, puis il n’était plus possible de définir aucune variable au démarrage de Gnome/Wayland, même pas le PATH (!), celui-ci se lançant directement sans lancer de shell.
Apparemment maintenant, gnome-session lance à nouveau un login shell avant de démarrer Gnome (pas clair de savoir quel est le patch finalement retenu, donc si c’est le shell configuré pour l’utilisateur ou systématiquement bash).
Il faut donc définir la variable dans le fichier exécuté par le shell quand il est lancé avec l’option -l. Pour bash, c’est .bash_profile.
Pour les applications Qt, ça a fluctué aussi. À un moment, il fallait définir QT_IM_MODULE.
À l’essai, ça ne semble plus avoir d’influence maintenant.
Avec l’éditeur Tea, le logiciel basé sur Qt que j’utilise pour tester, tout fonctionne pour moi directement sans problème… sous Xfce !
Sous KDE, c’est plus mitigé. fcitx a pris la place des autres méthodes d’entrées en permettant de mixer leurs possibilités et il semble aussi supporter directement .XCompose… sauf la possibilité de produire plus d’un caractère.
Adieu les raccourcis si pratiques (avec mon raccourci pour la formule de politesse, je n’obtiens que la lettre V) !
J’ai essayé avec deux distributions différentes, openSUSE et Kubuntu, même problème.
Définir "export GTK_IM_MODULE=xim" sauve la mise pour les logiciels GTK (même sous KDE).
Mais pour les logiciels KDE sous KDE, je n’ai trouvé aucune issue. Ni sélectionner la bonne vieille méthode d’entrée de X11 (xim) avec im-config, ni désinstaller fcitx n’ont résolu le problème à l’essai (j’ai bien fermé et rouvert la session pour que ce soit pris en compte, au cas où quelqu’un se poserait la question).
J’ai l’impression que les développeurs actuels les plus prolifiques sous Linux n’apprécient pas ou même ne connaissent pas les petits plus historiques apparus dans le monde Unix ou X11 et qui l’ont rendu bien agréable à utiliser (la touche Compose, l’affichage distant, la sélection automatique de la fenêtre sous le pointeur souris…).
Du coup, quand ils refont quelque chose (ce qui arrive souvent avec Gnome et KDE, moins avec les environnements graphiques qui ont moins de développeurs), on perd éventuellement ces petits plus (ou carrément la possibilité de définir le PATH !), au moins jusqu’à ce qu’il y ait assez de gens qui s’en plaignent (je ne sais pas où en est la possibilité d’affichage distant sous Wayland)…
Un commentaire plus haut a pointé vers cette page où on peut notamment lire :
“To create your own set of compose keys copy the file /usr/share/X11/locale/en_US.UTF-8/Compose … to your home directory as .XCompose … and edit this file.”
Je n’ai pas trouvé le dit commentaire, tu es sûr que c’était un lien direct ?
Il serait contre‐productif de copier le Compose du système …
Oui, j’avais vu ça, c’est bien documenté dans man 5 Compose, c’est pourquoi baser un commentaire sur la page susmentionnée — ce que j’avais entrepris avant de lire Compose(5) — aurait été du pinaillage.
C’est peut-être sur cette page qu’il faut aller pinailler (bon, il faut d’abord se faire accepter parmi les éditeurs du wiki d’Ubuntu)…
En parlant de touche inutile il reste pourtant cette curieuse touche ² qui résiste.
Quand il n’y a pas l’option qu’on souhaiterait, il y a toujours la solution de modifier la disposition.
Crée un fichier fr.patch avec le code ci‐dessous et applique‐le avec la commande (sous root ou avec sudo) patch -b /usr/share/X11/xkb/symbols/fr < fr.patch
Du côté d’Xkb, ça ne semble pas changer pour l’instant.
À ma connaissance, les membres du projet Bépo ne sont pas en relation avec les développeurs d’Xkb, donc ceux‐ci feront ce qu’ils estiment le mieux de leur point de vue.
La question que je me pose d’abord est de savoir si les règles de composition étendues de la nouvelle version de la disposition Bépo et spécifiques à elle finiront par être prise en charge par Xkb. Parce que pour l’instant, ce n’est pas le cas. Voir les UFDDx dans la section bepo_afnor du fichier symbols/fr, qui sont des caractères utilisés temporairement en attendant qu’un symbole de composition soit défini.
J’ai l’impression que l’évolution de l’implémentation de la norme AFNOR suis l’intérêt que cette dernière suscite et qui est bien retombé. La nouvelle disposition Azerty n’est pas plus avancée, elle contient des vides à la place des symboles de composition manquants.
Pas pour l'instant mais ça risque fort d'arriver. Car à moins que Xorg accepte de laisser immuablement la version 1.0 en fr bepo, les changements effectués pour la 1.1 (= la version AFNOR) et les suivantes seront intégrés tôt ou tard en remplacement.
Est‐ce juste un ressenti, ou as‐tu des éléments allant dans ce sens ?
As-tu vu le nombre de variantes de l’Azerty français définies dans le fichier /usr/share/X11/xkb/symbols/fr ?
L’une des deux dernières ajoutées étant la reproduction fidèle de l’Azerty de Windows dans toute sa médiocrité (cela dit, ça peut éviter des surprises aux habitués de Windows, notamment pour taper un mot de passe en Verr. Maj. qui n’est pas réellement ce qu’ils pensent).
Pour moi, seul l’Azerty OSS fait sens, hormis l’Azerty AFNOR du fait de la norme, même si c’est peut-être la disposition la moins utilisée (le fait qu’il semble n’y avoir qu’un seul clavier du commerce qui suive la norme n’aide pas).
Ça vaudrait peut-être le coup de faire évoluer l’Azerty OSS en reprenant les caractères proposés par l’Azerty AFNOR (bon, ça ferait une version de plus de l’Azerty). Ça en ferait un remplacement intéressant pour les claviers Azerty existants, qui resterait pertinent quand la norme sera enterrée faute de volonté politique (comme auparavant la NF XP E55-060 et la NF E55-070).
serait de la “délocalisation” du paramétrage mais ce serait un troll déguisé …
Où as‐tu vu ça ?
Il serait contre‐productif de copier le Compose du système dans .XCompose, l’instruction include "%L" fait ce qu’il faut bien plus proprement (ça évite d’encombrer le fichier et ça prend en compte ses éventuelles mises à jour).
Quant à la génération automatique de longues incantations, c’est effectivement pratique ; je vois ça comme un moyen de généraliser :command Agréer… (vim) ou équivalent.
Tu peux avoir besoin d’une même formule dans un traitement de texte, dans un mail, dans un webmail (à supposer que tu utilises par exemple un client mail « lourd » pour tes messages perso et un webmail pour le boulot), dans un système de suivi de ticket… Autant utiliser un mécanisme général pour la produire.
Qui plus est, si tu prévois des raccourcis pour ton nom, ton adresse, etc., ça peut simplifier le remplissage de formulaires en évitant le risque de coquilles qui pourraient avoir des conséquences ennuyeuses ultérieurement (bon, des fois le navigateur reconnaît l’intitulé d’un champ et propose ce que tu as mis précédemment dans un champ de même intitulé, mais ça ne fonctionne pas toujours).
Quand on en est au point de paramétrer des chemins menant vers /usr/share/X11,
Paramétrer ? Où ça ?
J’ai juste suggéré de jeter un coup d’œil à l’existant, parce que l’existant peut déjà fournir ce qu’on cherche.
Après, il faut bien aller le regarder là où il est…
quel est l’avantage de la méthode « compose » par rapport à une personnalisation directe d’un fichier /usr/share/X11/xkb/symbols/FOO ?
Ce n’est pas le même usage. On a effectivement intérêt à avoir les caractères très courants directement sur la disposition (et encore, peut-être pas tous les caractères accentués, par exemple mettre tous les caractères avec un accent circonflexe ou un tréma prendrait pas mal de place).
Par contre, pour un caractère qu’on utilise deux ou trois fois par mois, utiliser une règle de composition a les avantages de pouvoir être mnémotechnique et de ne pas encombrer le clavier.
Bon, et puis Compose permet de produire plus d’un caractère.
Donc on peut l’utiliser pour produire les formules d’usage courant, aussi longues soient-elles (c’est probablement l’usage le plus courant que j’en ai). Je reproduis mon exemple :
<Multi_key> <e> <s> : "Veuillez agréer, Madame, Monsieur, l’expression de mes sincères salutations,"
Non seulement ça évite de passer du temps à taper des trucs sans intérêt, mais ça garantit de ne pas y faire de coquille. Bon, dans le cas de mon exemple, si tu sais à qui tu t’adresses, il faut quand même effacer la mention inutile entre « Madame » et « Monsieur » (ou ajouter d’autres règles).
Je n’ai pas essayé la dernière méthode, ni sur du matériel diversifié, ni dans diverses distributions, mais dans tous les cas où je l’ai appliquée, elle a bien fonctionné sans nécessiter de variables d’environnements supplémentaires ou autre désactivation de protocoles (ibus, …).
Malheureusement, il y a des développeurs qui prennent du temps pour refaire l’existant en moins bien (bon, la version Windows de Gtk peut l’expliquer, mais de là à activer et même compiler ça sous Linux…) et des distributions qui t’installent et t’activent par défaut des trucs plus gênants qu’utiles pour le français (une méthode de saisie, ça a une réelle utilité… pour le chinois).
[^] # Perl or not Perl
Posté par _Laurent_ (site web personnel) . En réponse au journal écriture d'un script AWK de transformation de Markdown en HTML. Évalué à 6 (+5/-0).
J’ai plus fait le tour des particularités à connaître quand on vient d’un autre langage que des trucs sympas.
Par exemple, si on veut un tableau d’entiers allant de 1 à 10 :
my @t = 1 .. 10;Il y a des choix inusuels qui permettent une certaine souplesse.
Par exemple, si une fonction attend des paramètres fixes et un nombre variable d’autres paramètres, on peut les récupérer avec
my ($a, $b, $c, @val) = @_;Il y a certaines fonctionnalités bien pratiques, comme la fonction
map, qui remplace ses arguments par le résultat du bloc de commandes ou de la chaîne passée en premier paramètre, appliquée à chacun un par un, et retourne cela en liste. C’est plus court et moins lourd à lire qu’unforavec un ajout dans un tableau. Mais on ne commence pas forcément par ça en venant d’un autre langage.C’est moins gratifiant de commencer par s’assurer de pouvoir faire ce qu’on savait déjà faire dans d’autres langages, mais ça cause sûrement moins de frictions.
Bonne idée : du coup, il n’y a aucune raison d’utiliser Python ;-) (OK, NumPy).
En plus, ça évite de devoir se coltiner des virtualenv parce que la bibliothèque truc nécessite la bibliothèque bidule 15, mais ne fonctionne pas avec la 16, parce que la notion de compatibilité ascendante n’a malheureusement pas pénétré l’écosystème Python.
Je regrette vraiment qu’AWK ait été cantonné à du parcours de fichier. À mon sens, il aurait mérité de remplacer le shell.
Oui, enfin au delà de la substitution, sed devient vite ésotérique (un peu entre les CSS et la configuration de sendmail). Utiliser sed à fond disqualifie pour se plaindre de la lisibilité de Perl.
Bon, j’utilise aussi grep pour les cas triviaux.
J’ai des collègues qui pensent comme ça aussi.
Le problème, c’est que parfois les besoins évoluent.
On commence à faire un truc en shell en « pipant » des commandes, et on s’aperçoit que ce serait bien de traiter une autre donnée en parallèle, sauf que ce n’est pas très pratique à faire dans des pipes, et donc on finit par refaire le traitement dans un vrai script avec une logique très différente.
Ou on commence par écrire un script shell, puis on le complexifie jusqu’au stade où on se dit que ce n’est pas très pratique ou très rapide (n’importe quel langage qui n’appelle pas des programmes externes pour des commandes de base est beaucoup plus rapide que le shell) et qu’on ferait mieux de le refaire en Python.
Alors que Perl est évolutif. Tu commences par une uniligne pas plus longue que celle avec des pipes (en utilisant les options comme -n et sans déclarer les variables). Puis s’il tu dois passer à un vrai script, tu ajoutes
use strict;, tu déclares les variables, tu remplaces les options par leur équivalent explicite, mais tu n’as pas à refaire ton code, juste à le compléter. Et si un script doit devenir plus complexe, pas besoin de changer de langage, tu as déjà un langage bien plus puissant que le shell.Attention, awk, c’est comme l’eau Cristaline, ce ne sont pas tous le même. Et certaines fonctionnalités utiles ne font pas partie de la version de base.
C’est pire pour le shell. Si tu ne sais pas si ton script sera exécuté sur bash ou sur un vieux ksh même pas Posix (la dernière fois que j’ai essayé OpenIndiana, c’était le cas de son /bin/sh, pour ne pas casser la compatibilité de vieux scripts écrits il y avait déjà plusieurs décennies), ça limite beaucoup.
Et il y a des « bashismes » qui sont vraiment utiles, comme
"﹩@"(j’ai remplacé les dollars par leur version mini dans ce paragraphe, parce qu’autrement, Markdown me remplace la suite par du Mathjax ou au mieux par la chaîne {mathjax} quand je tente de le quoter avec \ ; seule une lettre derrière le dollar semble empêcher ce comportement pénible) pour passer les arguments de la fonction courante à une autre fonction ou commande sans connaître leur nombre et sans se prendre un gros bug si certains contiennent des espaces. Les shells moins évolués ne disposent que de﹩*. Tel quel, il met tous les arguments dans la ligne de commande sans guillemets, et"﹩*"les passe tous comme un seul argument entre guillemets. Dans les deux cas, s’il y en avait qui contenaient des espaces, il n’y a plus moyen de les séparer de manière fiable. Alors que"﹩@"fait comme s’ils étaient passés chacun entre guillemets. C’est moins logique par rapport à la syntaxe, mais c’est le comportement dont on a réellement besoin.Si on en vient à devoir installer bash, autant installer Perl.
Prendre une bonne disposition : beop.free.fr
[^] # Expressions régulières
Posté par _Laurent_ (site web personnel) . En réponse au journal écriture d'un script AWK de transformation de Markdown en HTML. Évalué à 1 (+1/-1). Dernière modification le 23 octobre 2025 à 00:33.
Et est‐ce que ça compense le temps que tu mets à écrire [:digit:] plutôt que \d dans une expression régulière plus complexe ?
Perl est considéré comme une référence concernant les expressions régulières pour leur richesse et beaucoup ont choisi de le copier, par exemple Python ou cette bibliothèque pour C qui y fait explicitement référence.
Je me fiche un peu de savoir de savoir si grep ou AWK sont plus rapides, vu que leurs limitations me gênent rapidement.
Je sais qu’il y en a qui ont fait une implémentation sensiblement plus rapide qui reprend presque toutes les possibilités de Perl sauf une ou deux identifiées comme sources de ralentissement. Je ne me rappelle malheureusement plus laquelle c’est (peut-être une implémentation en Go voire celle fournie avec le langage).
Ça vaut sûrement plus le coup que celle d’AWK. D’un autre côté, si c’est un langage compilé, on ne va pas l’utiliser pour une petite commande rapide en une ligne…
Prendre une bonne disposition : beop.free.fr
# AWK, c’est comme Perl en moins bien
Posté par _Laurent_ (site web personnel) . En réponse au journal écriture d'un script AWK de transformation de Markdown en HTML. Évalué à 10 (+11/-2).
Cette phrase s’applique aussi au shell.
Ce n’est pas étonnant, puisque quand Larry Wall, alors administrateur système, a créé Perl, il s’est inspiré de ces outils (sûrement pas mal d’AWK) pour créer un langage polyvalent, mais conservant leurs possibilités.
Concernant AWK, il y a des options pour simuler son comportement avec Perl :
-n pour parcourir ligne à ligne les fichiers passés en arguments,
-e pour exécuter le programme passé en paramètre de la ligne de commande (plutôt qu’un fichier ; avec awk, c’est l’inverse, le premier argument est considéré par défaut comme le programme à exécuter, sauf si un fichier est précisé avec l’argument -f),
-a pour séparer les lignes en champs selon les espaces (ou un autre séparateur passé en argument avec -F, comme awk)
(voir
man perlfuncpour les options).Et dans cette utilisation, ça supporte aussi les blocs BEGIN et END, comme awk.
En gros, un uniligne en AWK de la forme :
devient
Alors pour un traitement simple, il y a effectivement trois options à passer en plus.
Seulement si le traitement à effectuer se complexifie, avec la lecture d’autres fichiers dans un format différent à analyser, des recoupements à faire, ça devient moins évident avec AWK, alors que Perl fournit les possibilités d’un langage généraliste.
man perlrunnous apprend que l’option -n correspond à la construction :donc dans un programme plus complet (sans -n, mais non plus la nécessité d’utiliser BEGIN ni END), on parcourra un fichier avec une construction comme :
Quelques différences par rapport à AWK :
$pour les variables scalaires) ;$_(avec l’option -n ouwhile(<>)), les champs dans$F[0],$F[1](avec l’option -a)…else ifest contracté enelsif.Il y a une commande pour traduire un script AWK en Perl, malheureusement un peu tombée en désuétude (elle a longtemps été intégrée à la bibliothèque Perl de base).
Il y a une bibliothèque de base fournie, et énormément de modules complémentaires dans le CPAN pour interagir avec un annuaire LDAP, faire une interface graphique… C’est là que ça dépasse nettement les possibilités d’AWK.
Quelques autres choses à savoir :
", pas dans les chaînes entre quotes';my(si on commence son programme paruse strict;les variables doivent être déclarées, ça évite d’avoir des bugs à cause d’une typo, c’est donc fortement conseillé pour tout ce qui est plus gros qu’un uniligne) ;$, les tableaux par@, les tableaux associatifs par%, mais un élément d’un tableau@ts’accède avec$t[indice]et un élément d’un tableau associatif%aavec$a{chaîne}; il faut voir@et%comme des marques de pluriel (Larry Wall est aussi linguiste…) ;$0contient la ligne de commande,@ARGVses arguments ;for (@tableau)permet de traiter tous les éléments d’un tableau (affectés à$_), maisforsupporte aussi la syntaxe du langage C ;.l’opérateur de concaténation considère ses arguments comme des chaînes de caractères,+comme des nombres,&&comme des booléens ;1et faux à0, mais la chaîne vide et la liste vide sont aussi considérées comme des valeurs fausses, les autres comme vraies ;sub, les paramètres se récupèrent dans@_.Par exemple le code AWK,
se traduira par
Note : comme on le voit, on peut aussi affecter un tableau à une liste, les éventuelles valeurs surnuméraires sont ignorées. Mais si la fonction attend une liste de longueur indéterminée d’arguments de rôle équivalent, on peut aussi les traiter directement avec
for (@_) { traitement sur $_ }.Je me suis concentré sur les particularités, le reste ressemble plus aux autres langages, notamment au langage C ou au shell.
Prendre une bonne disposition : beop.free.fr
[^] # Mode HID non plus
Posté par _Laurent_ (site web personnel) . En réponse au journal QRNote pour copier coller du texte de son ordinateur au téléphone. Évalué à 1.
Oui. Comme le clavier physique, ça ne fonctionne pas, ce qui semble confirmer que c’est le téléphone qui ne le gère pas.
Par ailleurs, pour que ça améliore mon confort d’utilisation, il faudrait encore que je porte ma disposition sous Android…
Prendre une bonne disposition : beop.free.fr
[^] # OTG or not OTG ?
Posté par _Laurent_ (site web personnel) . En réponse au journal QRNote pour copier coller du texte de son ordinateur au téléphone. Évalué à 1.
C’est censé être un câble OTG.
Je me suis posé la question aussi au moment, mais il ne m’est pas venu à l’idée d’autre périphérique que je puisse tester pour en être sûr (et là, je ne sais pas où j’ai mis le câble).
Les câbles OTG ont‐ils quelque chose de spécial, à part une association de prises éventuellement inusuelle (par exemple deux micro‐USB) ?
Prendre une bonne disposition : beop.free.fr
[^] # scrcpy --prefer-text
Posté par _Laurent_ (site web personnel) . En réponse au journal QRNote pour copier coller du texte de son ordinateur au téléphone. Évalué à 5. Dernière modification le 28 octobre 2023 à 14:29.
J’ai essayé, ça ne fonctionne pas avec mon vieux clou (enfin je peux brancher un clavier, mais le téléphone s’en fiche complètement).
Quand je veux taper un SMS assez long (j’ai quelques proches qui me demandent des nouvelles par SMS), je branche le téléphone sur l’ordinateur et j’utilise scrcpy (déjà empaqueté par les bonnes distributions). Comme son nom l’indique, il duplique l’écran du téléphone sur l’ordinateur, mais il permet aussi d’utiliser son clavier (en s’adaptant à la disposition qu’on utilise).
Il y a quelques caractères relativement courants qui ne passent pas (et qu’il faut donc faire au clavier virtuel), mais globalement, il se débrouille pas mal.
Éventuellement, pour du texte existant, on peut faire un copier‐coller avec Alt+v sur les téléphones à partir d’Android 7 ou Alt+Maj+v sur les plus vieux. Dans ce dernier cas, scrcpy simule des frappes au clavier virtuel ; pour le coup, il y a probablement moins de risques de perdre certains caractères avec QRNote, s’il supporte le copier‐coller.
Cela dit, pour du texte existant, une fois le téléphone branché à l’ordinateur, le plus simple est de transférer un fichier texte.
scrcpy nécessite d’activer le mode debogage USB du téléphone.
Prendre une bonne disposition : beop.free.fr
[^] # Re: scrcpy s’adapte à la disposition clavier
Posté par _Laurent_ (site web personnel) . En réponse au lien Astuce pour continuer à se servir d'un ordiphone avec un écran cassé. Évalué à 1. Dernière modification le 01 février 2023 à 11:33.
Merci de la suggestion.
Bon, ça ne m’arrangerait pas forcément tant que je n’aurai pas porté ma disposition sur Android, puisqu’en toute logique, ça utiliserait celle du téléphone.
Quoiqu’il en soit, ça ne marche pas avec mon téléphone :
Cela dit, il est obsolète (Android 6…), ça peut expliquer que tout ne fonctionne pas.
Je retiens l’idée pour le jour au j’aurais porté ma disposition et un nouveau téléphone.
Prendre une bonne disposition : beop.free.fr
[^] # scrcpy s’adapte à la disposition clavier
Posté par _Laurent_ (site web personnel) . En réponse au lien Astuce pour continuer à se servir d'un ordiphone avec un écran cassé. Évalué à 2.
Merci de la suggestion, c’est génial, il s’adapte à la disposition de clavier qu’on utilise, même personnalisée !
Bon, autant qu’il le peut :
Je ne suis donc pas là d’envoyer des SMS avec une typographie soignée, mais ça me permettra d’affronter sereinement la réponse à des messages de deux kilomètres de long que m’envoient parfois certains proches…
L’utilisation de touches mortes fonctionne mieux (au moins pour mon téléphone) avec l’option
--prefer-text. Sans ça, accent circonflexe + o produit « oô ».Prendre une bonne disposition : beop.free.fr
[^] # Point médian
Posté par _Laurent_ (site web personnel) . En réponse au message Recherche Ingénieur Systèmes et Réseaux, POUR SES BESOINS INTERNES UN ADMINISTRATEUR SYSTÈMES / RÉSE. Évalué à 1. Dernière modification le 06 août 2022 à 01:25.
Toujours d’après Wikipédia, il est utilisé en catalan (langue officielle unique de la principauté d’Andorre et avec l’espagnol de plusieurs territoires d’Espagne), en sarde, en occitan gascon, en franco‐provençal et en gallo (langue de la Haute‐Bretagne, apparentée aux langues régionales romanes de la moitié nord de la France et non au breton).
Prendre une bonne disposition : beop.free.fr
[^] # Autres possibilités
Posté par _Laurent_ (site web personnel) . En réponse au message Recherche Ingénieur Systèmes et Réseaux, POUR SES BESOINS INTERNES UN ADMINISTRATEUR SYSTÈMES / RÉSE. Évalué à 2.
Effectivement, elle est très complète, je la retiens. Dommage qu’elle ne propose pas de recherche.
Si j’avais cité Wikipédia, c’était pour mettre le lien… et je l’ai oublié !
La Table de caractères de Gnome indique aussi des formats d’encodage dans l’onglet « Détails du caractère » ; moins que ta page web, mais par contre, elle supporte aussi bien une recherche sur la description que directement avec le caractère, si on peut le produire au clavier ou avec un copier‐coller.
Mais s’il s’agit juste d’identifier des caractères d’une chaîne et qu’on préfère les points de codes Unicode à la description, on peut convertir l’UTF-8 en points de code en hexadécimal avec la commande suivante (02 dans le format pour indiquer qu’on veut les codes sur deux chiffres minimum, 04 si on en voulait quatre ; chercher sprintf dans man perlfunc pour plus d’informations sur le format ; -Mutf8 spécifie que les chaînes de caractères du code source sont en UTF-8) :
Ou si on veut garder la commande dans un fichier exécutable (ça peut être plus pratique que de l’apprendre par cœur…) pour analyser l’entrée standard ou des fichiers (-n demande de parcourir la sortie standard ou les fichiers passés en paramètres, façon awk ; -C31 spécifie que tous les flux d’entrées/sorties sont en UTF-8 ; voir man perlrun) :
Prendre une bonne disposition : beop.free.fr
[^] # UTF-8
Posté par _Laurent_ (site web personnel) . En réponse au message Recherche Ingénieur Systèmes et Réseaux, POUR SES BESOINS INTERNES UN ADMINISTRATEUR SYSTÈMES / RÉSE. Évalué à 3.
Je dirais plutôt qu’un hexdump d’UTF-8 n’est pas extrêmement lisible (encore moins si tu n’as pas pensé que c’est de l’UTF-8).
D’après Wikipédia :
Ça apparaît bien dans ton hexdump.
Sinon, utf8-dump, trouvable ici, affiche les noms Unicode (dans une séquence d’échappement Perl) :
Prendre une bonne disposition : beop.free.fr
[^] # Linux Biolinum Keyboard
Posté par _Laurent_ (site web personnel) . En réponse au message [résolu] markdown indication touches. Évalué à 3.
Dans un environnement où tu maîtrises les fontes, tu peux aussi utiliser la Linux Biolinum Keyboard :

Déjà disponible dans toutes les bonnes
crèmeriesdistributions, généralement dans le paquet de la Linux Libertine (l’auteur de ces polices a manifestement une affinité pour Linux).Prendre une bonne disposition : beop.free.fr
# U+20E3
Posté par _Laurent_ (site web personnel) . En réponse au message [résolu] markdown indication touches. Évalué à 5.
Unicode fournit une possibilité : il y a un caractère « combining enclosing keycap », U+20E3 (à taper après le caractère qu’on veut affecter, comme pour tout caractère combinant).
Exemple : B⃣ É⃣ O⃣ P⃣
Et, là, j’ai ajouté des espaces entre les caractères, sinon ça se chevauchait vraiment vu de mon navigateur. Si on met deux espaces entre chaque, l’interpréteur Markdown les réduit à une seule, à moins d’utiliser des espaces insécables : B⃣ É⃣ O⃣ P⃣
Prendre une bonne disposition : beop.free.fr
# Compose
Posté par _Laurent_ (site web personnel) . En réponse au journal LibreOffice Writer: utiliser AutoTextes pour écrire autre chose que des formules de politesse. Évalué à 3.
Compose permet aussi de produire des chaînes de caractères* éventuellement longues sans se limiter à un seul logiciel.
* Sauf sous KDE, à condition de paramétrer son environnement pour utiliser la méthode de saisie classique xim.
Dans ton optique d’usage, ce n’est peut-être pas très utile, mais ça l’est paradoxalement plus pour l’usage de base d’AutoTexte, à savoir les formules de politesse.
Par exemple, sans même définir de touche Compose, on peut créer un fichier .XCompose contenant :
Taper deux fois l’accent circonflexe puis
texproduira le texte (note : il faut relancer les logiciels pour que ce soit pris en compte). Accessoirement, ça écrase la règle de composition standard qui définit que taper deux fois l’accent circonflexe produit ^ mais on l’a déjà sur le clavier.Prendre une bonne disposition : beop.free.fr
[^] # Re: Double vie
Posté par _Laurent_ (site web personnel) . En réponse au journal Alexandre Astier est un bépoiste convaincu. Évalué à 10.
Changer de disposition, c’est une bonne occasion d’apprendre aussi la frappe dactylographique, dite aussi « à l’aveugle », parce qu’en principe, on ne regarde pas les touches.
Du coup, il n’y a pas la nécessité d’avoir un clavier spécial. Le clavier n’a aucune idée de ce qui est imprimé sur ses touches, il renvoie les mêmes codes de touches qu’il soit sérigraphié en Azerty ou Qwertz. Il suffit donc de configurer le système pour la disposition que tu veux utiliser.
Pour le cas où il est utile que quelqu’un d’autre puisse taper sur ma machine, j’ai configuré Xkb pour reconnaître mes claviers et les configurer en Béop, mais configurer tous les autres en Azerty. Donc il suffit que la personne branche son clavier (les deux claviers sont utilisables en même temps avec chacun sa disposition).
Pour ce qui est d’utiliser la machine de quelqu’un d’autre, j’avais appris la frappe dactylographique en Azerty, et même si je suis assez rouillé, j’y arrive encore.
En fait, que je sois plutôt rouillé en Azerty a réglé un problème auquel on ne s’attendrait pas : la frappe dactylographique fait appel à la mémoire musculaire, ce qui est un processus subconscient. D’un côté, c’est bien, ça libère l’esprit pour autre chose, notamment réfléchir à ce qu’on va écrire. Mais d’un autre côté, ce n’est pas si évident de choisir consciemment entre deux processus subconscients ; parfois, on n’y arrive pas du premier coup. Mais comme je ne suis plus aussi à l’aise en Azerty, j’ai repris l’habitude de regarder le clavier pour repasser en Azerty. Maintenant, le fait de regarder le clavier me fait repasser en Azerty. Rien que baisser les yeux peut suffire si ça ne fait pas longtemps que j’ai utilisé cette disposition. Lever les yeux en faisant un peu le vide me fait repasser en Béop. Mais si tu tapes en Azerty sans méthode dactylographique et que tu apprends le Bépo ou une autre disposition en méthode dactylographique, changer de position de mains devrait faire l’affaire pour passer d’une disposition à l’autre.
Prendre une bonne disposition : beop.free.fr
# Déjà prévu dans Xkb
Posté par _Laurent_ (site web personnel) . En réponse au message virgule avec pavé numérique : lancement de la configuration. Évalué à 5. Dernière modification le 29 mars 2021 à 18:41.
Parmi les nombreuses options de Xkb¹ dont malheureusement les environnements graphiques ne proposent qu’une petite partie, il y en a une qui fait ce que tu veux. En ligne de commande :
Évidemment, il reste la nécessité de lancer cette commande à l’ouverture de session²… à moins de configurer l’environnement graphique pour conserver le réglage clavier du système³ et de configurer le clavier dans
/etc/X11/xorg.conf.d.En créant dans ce répertoire par exemple un fichier nommé
90-keyboard_layout.confcontenant :Pour avoir l’ensemble des options proposées par Xkb :
man xkeyboard-config(puis/kpdlpour voir les possibilités concernant la touche point du pavé numérique).Les définitions des touches se trouvent dans
/usr/share/X11/xkb/symbols(et plus précisément concernant les options de cette touche dans/usr/share/X11/xkb/symbols/kpdl).Certains environnements graphiques lancent le fichier .xprofile à l’ouverture de session et pour les autres, il faut chercher une autre solution.
Il y a les environnements graphiques arrangeants et il y a Gnome, pour lequel je n’ai trouvé comme solution que de remplacer l’exécutable de son service de configuration du clavier par un lien vers
/bin/true(ça fait un certain temps et je n’ai pas vérifié si ça a évolué)…Prendre une bonne disposition : beop.free.fr
# En Perl
Posté par _Laurent_ (site web personnel) . En réponse au message Recréation d'arborescence et de contenu. Évalué à 1.
Sinon, avec un langage qui n’est pas assez idiot pour interpréter ses variables avant d’analyser la ligne de commande, ça évite quand même bien des surprises et incertitudes :
Prendre une bonne disposition : beop.free.fr
[^] # KDE ?
Posté par _Laurent_ (site web personnel) . En réponse au journal Qu’on pose. Évalué à 2.
Si tu utilises fcitx, peut‐être es‐tu sous KDE. Si c’est le cas, est‐ce que les raccourcis définis dans .XCompose et produisant une chaîne de plus d’un caractère fonctionnent pour toi ?
Prendre une bonne disposition : beop.free.fr
[^] # Gnome et KDE
Posté par _Laurent_ (site web personnel) . En réponse au journal Qu’on pose. Évalué à 2.
Il m’a fallu un peu de temps pour tester (je ne trouvais plus de clé USB disponible et avec une machine qui n’est pas un foudre de guerre, faire tourner une machine virtuelle avec KDE ou pire Gnome, c’est à mourir de vieillesse…).
Ça a beaucoup fluctué (comme beaucoup de choses sur Gnome…). À une époque, il fallait utiliser
.gnomerc, puis il fallait spécifier un fichier à lancer au démarrage dans les paramètres, puis il n’était plus possible de définir aucune variable au démarrage de Gnome/Wayland, même pas le PATH (!), celui-ci se lançant directement sans lancer de shell.Apparemment maintenant, gnome-session lance à nouveau un login shell avant de démarrer Gnome (pas clair de savoir quel est le patch finalement retenu, donc si c’est le shell configuré pour l’utilisateur ou systématiquement bash).
Il faut donc définir la variable dans le fichier exécuté par le shell quand il est lancé avec l’option
-l. Pour bash, c’est.bash_profile.Pour les applications Qt, ça a fluctué aussi. À un moment, il fallait définir
QT_IM_MODULE.À l’essai, ça ne semble plus avoir d’influence maintenant.
Avec l’éditeur Tea, le logiciel basé sur Qt que j’utilise pour tester, tout fonctionne pour moi directement sans problème… sous Xfce !
Sous KDE, c’est plus mitigé. fcitx a pris la place des autres méthodes d’entrées en permettant de mixer leurs possibilités et il semble aussi supporter directement
.XCompose… sauf la possibilité de produire plus d’un caractère.Adieu les raccourcis si pratiques (avec mon raccourci pour la formule de politesse, je n’obtiens que la lettre V) !
J’ai essayé avec deux distributions différentes, openSUSE et Kubuntu, même problème.
Définir "export GTK_IM_MODULE=xim" sauve la mise pour les logiciels GTK (même sous KDE).
Mais pour les logiciels KDE sous KDE, je n’ai trouvé aucune issue. Ni sélectionner la bonne vieille méthode d’entrée de X11 (xim) avec im-config, ni désinstaller fcitx n’ont résolu le problème à l’essai (j’ai bien fermé et rouvert la session pour que ce soit pris en compte, au cas où quelqu’un se poserait la question).
J’ai l’impression que les développeurs actuels les plus prolifiques sous Linux n’apprécient pas ou même ne connaissent pas les petits plus historiques apparus dans le monde Unix ou X11 et qui l’ont rendu bien agréable à utiliser (la touche Compose, l’affichage distant, la sélection automatique de la fenêtre sous le pointeur souris…).
Du coup, quand ils refont quelque chose (ce qui arrive souvent avec Gnome et KDE, moins avec les environnements graphiques qui ont moins de développeurs), on perd éventuellement ces petits plus (ou carrément la possibilité de définir le PATH !), au moins jusqu’à ce qu’il y ait assez de gens qui s’en plaignent (je ne sais pas où en est la possibilité d’affichage distant sous Wayland)…
Prendre une bonne disposition : beop.free.fr
[^] # Pinailler
Posté par _Laurent_ (site web personnel) . En réponse au journal Qu’on pose. Évalué à 1. Dernière modification le 16 juillet 2020 à 15:10.
Je n’ai pas trouvé le dit commentaire, tu es sûr que c’était un lien direct ?
C’est peut-être sur cette page qu’il faut aller pinailler (bon, il faut d’abord se faire accepter parmi les éditeurs du wiki d’Ubuntu)…
Prendre une bonne disposition : beop.free.fr
[^] # ²
Posté par _Laurent_ (site web personnel) . En réponse au journal Qu’on pose. Évalué à 1.
Quand il n’y a pas l’option qu’on souhaiterait, il y a toujours la solution de modifier la disposition.
Crée un fichier
fr.patchavec le code ci‐dessous et applique‐le avec la commande (sous root ou avec sudo)patch -b /usr/share/X11/xkb/symbols/fr < fr.patchPrendre une bonne disposition : beop.free.fr
[^] # Re: Nouvelle version de Bépo
Posté par _Laurent_ (site web personnel) . En réponse au journal Qu’on pose. Évalué à 1. Dernière modification le 16 juillet 2020 à 12:20.
Parles‐tu de fichiers d’Xkb ou du site de la disposition Bépo ?
Du côté d’Xkb, ça ne semble pas changer pour l’instant.
À ma connaissance, les membres du projet Bépo ne sont pas en relation avec les développeurs d’Xkb, donc ceux‐ci feront ce qu’ils estiment le mieux de leur point de vue.
La question que je me pose d’abord est de savoir si les règles de composition étendues de la nouvelle version de la disposition Bépo et spécifiques à elle finiront par être prise en charge par Xkb. Parce que pour l’instant, ce n’est pas le cas. Voir les UFDDx dans la section bepo_afnor du fichier symbols/fr, qui sont des caractères utilisés temporairement en attendant qu’un symbole de composition soit défini.
J’ai l’impression que l’évolution de l’implémentation de la norme AFNOR suis l’intérêt que cette dernière suscite et qui est bien retombé. La nouvelle disposition Azerty n’est pas plus avancée, elle contient des vides à la place des symboles de composition manquants.
Prendre une bonne disposition : beop.free.fr
[^] # Re: Nouvelle version de Bépo
Posté par _Laurent_ (site web personnel) . En réponse au journal Qu’on pose. Évalué à 2.
Est‐ce juste un ressenti, ou as‐tu des éléments allant dans ce sens ?
As-tu vu le nombre de variantes de l’Azerty français définies dans le fichier
/usr/share/X11/xkb/symbols/fr?L’une des deux dernières ajoutées étant la reproduction fidèle de l’Azerty de Windows dans toute sa médiocrité (cela dit, ça peut éviter des surprises aux habitués de Windows, notamment pour taper un mot de passe en Verr. Maj. qui n’est pas réellement ce qu’ils pensent).
Pour moi, seul l’Azerty OSS fait sens, hormis l’Azerty AFNOR du fait de la norme, même si c’est peut-être la disposition la moins utilisée (le fait qu’il semble n’y avoir qu’un seul clavier du commerce qui suive la norme n’aide pas).
Ça vaudrait peut-être le coup de faire évoluer l’Azerty OSS en reprenant les caractères proposés par l’Azerty AFNOR (bon, ça ferait une version de plus de l’Azerty). Ça en ferait un remplacement intéressant pour les claviers Azerty existants, qui resterait pertinent quand la norme sera enterrée faute de volonté politique (comme auparavant la NF XP E55-060 et la NF E55-070).
Prendre une bonne disposition : beop.free.fr
[^] # Re: Intérêt
Posté par _Laurent_ (site web personnel) . En réponse au journal Qu’on pose. Évalué à 1.
Où as‐tu vu ça ?
Il serait contre‐productif de copier le
Composedu système dans.XCompose, l’instructioninclude "%L"fait ce qu’il faut bien plus proprement (ça évite d’encombrer le fichier et ça prend en compte ses éventuelles mises à jour).Tu peux avoir besoin d’une même formule dans un traitement de texte, dans un mail, dans un webmail (à supposer que tu utilises par exemple un client mail « lourd » pour tes messages perso et un webmail pour le boulot), dans un système de suivi de ticket… Autant utiliser un mécanisme général pour la produire.
Qui plus est, si tu prévois des raccourcis pour ton nom, ton adresse, etc., ça peut simplifier le remplissage de formulaires en évitant le risque de coquilles qui pourraient avoir des conséquences ennuyeuses ultérieurement (bon, des fois le navigateur reconnaît l’intitulé d’un champ et propose ce que tu as mis précédemment dans un champ de même intitulé, mais ça ne fonctionne pas toujours).
Prendre une bonne disposition : beop.free.fr
[^] # Intérêt
Posté par _Laurent_ (site web personnel) . En réponse au journal Qu’on pose. Évalué à 3.
Paramétrer ? Où ça ?
J’ai juste suggéré de jeter un coup d’œil à l’existant, parce que l’existant peut déjà fournir ce qu’on cherche.
Après, il faut bien aller le regarder là où il est…
Ce n’est pas le même usage. On a effectivement intérêt à avoir les caractères très courants directement sur la disposition (et encore, peut-être pas tous les caractères accentués, par exemple mettre tous les caractères avec un accent circonflexe ou un tréma prendrait pas mal de place).
Par contre, pour un caractère qu’on utilise deux ou trois fois par mois, utiliser une règle de composition a les avantages de pouvoir être mnémotechnique et de ne pas encombrer le clavier.
Bon, et puis Compose permet de produire plus d’un caractère.
Donc on peut l’utiliser pour produire les formules d’usage courant, aussi longues soient-elles (c’est probablement l’usage le plus courant que j’en ai). Je reproduis mon exemple :
Non seulement ça évite de passer du temps à taper des trucs sans intérêt, mais ça garantit de ne pas y faire de coquille. Bon, dans le cas de mon exemple, si tu sais à qui tu t’adresses, il faut quand même effacer la mention inutile entre « Madame » et « Monsieur » (ou ajouter d’autres règles).
Malheureusement, il y a des développeurs qui prennent du temps pour refaire l’existant en moins bien (bon, la version Windows de Gtk peut l’expliquer, mais de là à activer et même compiler ça sous Linux…) et des distributions qui t’installent et t’activent par défaut des trucs plus gênants qu’utiles pour le français (une méthode de saisie, ça a une réelle utilité… pour le chinois).
Prendre une bonne disposition : beop.free.fr