|
|
|
|
||||||
| fr.comp.os.unix Système UNIX. |
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Bonjour !
J'utilise un clavier qwerty modèle réduit très pratique, avec touche control et meta bien placées. J'ai un fichier modmap qui défini correctement toutes ces touches. Pour écrire des textes avec des caractères accentués j'ai pris l'habitude d'utiliser le modificateur Mode_shift (que j'attribue à la touche Meta_L). Voici un exemple de la configuration de xmodmap : ! Mode_shift + e donne "é" par exemple keycode 26 = e E egrave Egrave .... ! Meta_L est la touche diamand de gauche keycode 131 = Meta_L .... ! Mode_shift est sur la même touche keysym Meta_L = Mode_switch Meta_L .... ! OpenBox utilise mod1, utiliser Alt_L pour cela add mod1 = Alt_L Bref, mon clavier et moi vivions heureux comme ça depuis des années, lorsque soudain l'envie me pris d'installer emacs pour apprendre le lisp (j'utilise vi comme éditeur d'habitude). Première surprise : la touche meta ne fonctionne pas. Lorsque j'appuis sur Alt_L et 'a', je m'attend à faire un [M-a], mais emacs affiche sobrement 'a' (si je vérifie avec [C-h l], j'ai bien seulement 'a'). Bon, c'est pas grave, j'ai bien tapper sur Esc. Plus grave : lorsque j'envoie Mode_shift+e, je m'attends à ce qu'il affiche 'é', mais non : il me fait quelquechose d'équivalent à [M-h] (selon [C-h l]). Je n'y comprend rien ! J'ai essayé pendant des heures de changer ma configuration clavier sous X mais rien n'y fait. Quelqu'un peut-il m'aider à comprendre ce qui se passe entre mon clavier et emacs ? Informations complémentaires : emacs est la version 21, compilée sans X11, sous debian Etch, tournant dans un screen (TERM=screen, mais j'ai essayé avec "xterm" et ça ne change rien), dans un xterm, dans un X-org, avec la configuration de xmodmap décrite ci-dessus, en locales C. Toute information est bienvenue ! |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
rixed@happyleptic.org writes:
> Bonjour ! > > J'utilise un clavier qwerty modèle réduit très pratique, avec touche > control et meta bien placées. J'ai un fichier modmap qui défini > correctement toutes ces touches. Pour écrire des textes avec des > caractères accentués j'ai pris l'habitude d'utiliser le modificateur > Mode_shift (que j'attribue à la touche Meta_L). Voici un exemple de la > configuration de xmodmap : > > ! Mode_shift + e donne "é" par exemple > keycode 26 = e E egrave Egrave > ... > ! Meta_L est la touche diamand de gauche > keycode 131 = Meta_L > ... > ! Mode_shift est sur la même touche > keysym Meta_L = Mode_switch Meta_L > ... > ! OpenBox utilise mod1, utiliser Alt_L pour cela > add mod1 = Alt_L > > > Bref, mon clavier et moi vivions heureux comme ça depuis des années, > lorsque soudain l'envie me pris d'installer emacs pour apprendre le lisp > (j'utilise vi comme éditeur d'habitude). > > Première surprise : la touche meta ne fonctionne pas. Lorsque j'appuis > sur Alt_L et 'a', je m'attend à faire un [M-a], mais emacs affiche > sobrement 'a' (si je vérifie avec [C-h l], j'ai bien seulement 'a'). > Bon, c'est pas grave, j'ai bien tapper sur Esc. > > Plus grave : lorsque j'envoie Mode_shift+e, je m'attends à ce qu'il > affiche 'é', mais non : il me fait quelquechose d'équivalent à [M-h] > (selon [C-h l]). > > Je n'y comprend rien ! J'ai essayé pendant des heures de changer ma > configuration clavier sous X mais rien n'y fait. Quelqu'un peut-il > m'aider à comprendre ce qui se passe entre mon clavier et emacs ? > > Informations complémentaires : emacs est la version 21, compilée sans > X11, sous debian Etch, tournant dans un screen (TERM=screen, mais j'ai > essayé avec "xterm" et ça ne change rien), dans un xterm, dans un X-org, > avec la configuration de xmodmap décrite ci-dessus, en locales C. > > Toute information est bienvenue ! Je crois que les applications peuvent utiliser soit les bits shift, lock, control, mod1, ..., mod5, soit les keysyms comme Meta_L ou Alt_R. Le problème étant que si il n'y a pas synchronization entre les deux, deux applications peuvent sembler avoir un point de vue différent. Tu devrais pouvoir mêtre en concordance les applications qui utilisent les bits avec les applications qui utilisent le keysym en bidouillant ~/.Xmodmap. Tu peux aussi t'aider de xev(1) qui te permet de vérifier les keysyms et bits envoyés avec chaque évènement. Sinon la correspondance entre les keycodes et les keysyms (lignes keycode) devrait être totalement indépendante de ce problème, pour ce que j'en sais. Voici ce que j'ai à la fin de mon ~/.Xmodmap: clear shift clear lock clear control clear mod1 clear mod2 clear mod3 clear mod4 clear mod5 ! Leave Num_Lock on mod2, because this version of WMaker hardwires it... add shift = Shift_L Shift_R add lock = Caps_Lock add control = Control_L Control_R add mod1 = Alt_L Alt_R add mod2 = Num_Lock add mod3 = Meta_L Meta_R add mod4 = Super_L Super_R add mod5 = Mode_switch ISO_Level3_Shift -- __Pascal Bourguignon__ http://www.informatimago.com http://pjb.ogamita.org |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
Merci.
Je viens de me rendre compte que le problème n'a rien à voir avec Mode_switch, puisque si je mappe un keysym accentué sur une touche quelconque sans modifier, ou si je copie-colle dans emacs un caractère accentué le comportement d'emacs est le même. Il s'agit donc d'une question spécifique emacs. Désolé pour le bruit. Ceci dit, si quelqu'un connait un bon article ou livre dans lequel le traitement des touches est bien expliqué, je suis prenneur (entre les terminaux, X11, les différents encodages et les bibliothèques style termios...) |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
rixed@happyleptic.org wrote:
> Merci. > > Je viens de me rendre compte que le problème n'a rien à voir avec > Mode_switch, puisque si je mappe un keysym accentué sur une touche > quelconque sans modifier, ou si je copie-colle dans emacs un caractère > accentué le comportement d'emacs est le même. > > Il s'agit donc d'une question spécifique emacs. > > Désolé pour le bruit. > > Ceci dit, si quelqu'un connait un bon article ou livre dans lequel le > traitement des touches est bien expliqué, je suis prenneur (entre les > terminaux, X11, les différents encodages et les bibliothèques style > termios...) > Le clavier produit des "scancodes". Le driver du clavier (Linux, etc. ) convertit ces scancodes en keycodes. Xwindow utilise des "keycode", et les convertit en "keysym", c'est là que xmodmap intervient. Sous Linux, la commande loadkeys permet d'accéder aux scancodes et de modifier l'association aux keycodes. Sous FreeBSD il faut carrément hacker le driver. Tu trouveras de l'information sur les scancodes ici: http://www.win.tue.nl/~aeb/linux/kbd...odes.html#toc1 et sur le driver Linux ici: http://www.win.tue.nl/~aeb/linux/kbd/ http://www.linuxjournal.com/article/1080 Pour ce qui est de Xwinow c'est trivial, il suffit de jouer avec xmodmap. Sauf qu'il peut être nécessaire de jouer avec les fichiers de définition de clavier /usr/X11R6/lib/X11/xkb/keycodes/xfree86 /usr/X11R6/lib/X11/xkb/symbols/fr par exemple. -- Michel TALON |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
À (at) 11 Apr 2007 11:53:24 GMT, rixed@happyleptic.org écrivait (wrote): [... plein de choses sur la configuration X11...] > Informations complémentaires : emacs est la version 21, compilée sans > X11, sous debian Etch, tournant dans un screen (TERM=screen, mais j'ai > essayé avec "xterm" et ça ne change rien), dans un xterm, dans un X-org, > avec la configuration de xmodmap décrite ci-dessus, en locales C. Là, j'ai un doute. Comment tourne emacs ? En mode X11 ou dans un terminal ? Les manières de configurer ces deux modes n'ont strictement rien à voir l'une avec l'autre. Or vous indiquez « emacs 21 compilé *sans* X11 » ! Dans ce cas, vous utilisez emacs en mode terminal et vos règlages X11 importent peu. -- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
Paul Gaborit <Paul.Gaborit@invalid.invalid> writes:
> À (at) 11 Apr 2007 11:53:24 GMT, > rixed@happyleptic.org écrivait (wrote): > [... plein de choses sur la configuration X11...] >> Informations complémentaires : emacs est la version 21, compilée sans >> X11, sous debian Etch, tournant dans un screen (TERM=screen, mais j'ai >> essayé avec "xterm" et ça ne change rien), dans un xterm, dans un X-org, >> avec la configuration de xmodmap décrite ci-dessus, en locales C. > > Là, j'ai un doute. Comment tourne emacs ? En mode X11 ou dans un > terminal ? Les manières de configurer ces deux modes n'ont strictement > rien à voir l'une avec l'autre. > > Or vous indiquez « emacs 21 compilé *sans* X11 » ! Dans ce cas, vous > utilisez emacs en mode terminal et vos règlages X11 importent peu. Sauf qu'en général, le terminal utilisé est xterm... -- __Pascal Bourguignon__ http://www.informatimago.com http://pjb.ogamita.org |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
[Je redirige sur fr.comp.applications.emacs qui me parait plus adapté]
rixed@happyleptic.org : > J'utilise un clavier qwerty modèle réduit très pratique, avec touche > control et meta bien placées. J'ai un fichier modmap qui défini > correctement toutes ces touches. Pour écrire des textes avec des > caractères accentués j'ai pris l'habitude d'utiliser le modificateur > Mode_shift (que j'attribue à la touche Meta_L). Voici un exemple de la > configuration de xmodmap : > > ! Mode_shift + e donne "é" par exemple > keycode 26 = e E egrave Egrave > ... > ! Meta_L est la touche diamand de gauche > keycode 131 = Meta_L > ... > ! Mode_shift est sur la même touche > keysym Meta_L = Mode_switch Meta_L Mon dieu quelle horreur! > ... > ! OpenBox utilise mod1, utiliser Alt_L pour cela > add mod1 = Alt_L Mouarf. La convention habituelle est plutôt de considérer que Mod1=Meta et Mod2=Alt. Normalement, ça ne devrait avoir aucune importance, mais les programmes modernes hardcodent cette correspondance > Première surprise : la touche meta ne fonctionne pas. Lorsque j'appuis > sur Alt_L et 'a', je m'attend à faire un [M-a], mais emacs affiche > sobrement 'a' (si je vérifie avec [C-h l], j'ai bien seulement 'a'). C'est parfaitement normal. Ton xterm reçoit le Alt-a, et il le traduit en a tout court. Ce qu'il te faut, c'est que le keysym Meta_L ou Meta_R soit associée à un modificateur, et appuyer sur une touche générant le keysym en question en même temps que «a». Là, xterm devrait le traduire en «^[ a», que emacs comprendra comme M-a. (Enfin, encore faut-il que ton xterm soit configuré pour ça, parce qu'il peut aussi être configuré pour traduire le meta en +=128. Assure-toi d'avoir «XTerm*eightBitInput:false» dans ton ..Xresources.) > Bon, c'est pas grave, j'ai bien tapper sur Esc. Ça devient vite insupportable quand tu dois le faire plein de fois d'affilée (une série de M-f par exemple). > Plus grave : lorsque j'envoie Mode_shift+e, je m'attends à ce qu'il > affiche 'é', mais non : il me fait quelquechose d'équivalent à [M-h] > (selon [C-h l]). Par défaut, emacs traduit un caractère supérieur à 128 comme le -=128 métaifié. Il faut mettre «(set-input-mode nil nil 1)» dans le .emacs pour le calmer. |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
À (at) Thu, 12 Apr 2007 18:07:30 +0200, Pascal Bourguignon <pjb@informatimago.com> écrivait (wrote): >> Or vous indiquez « emacs 21 compilé *sans* X11 » ! Dans ce cas, vous >> utilisez emacs en mode terminal et vos règlages X11 importent peu. > > Sauf qu'en général, le terminal utilisé est xterm... Dans ce cas, si c'est les paramètres X11 influent, ce n'est plus un problème de configuration de emacs mais un problème de configuration de xterm avec X11... Petite question : connaissez-vous beaucoup de programmes tournant dans un terminal qui sachent distinguer la touche control gauche de la touche control droite ? ou qui connaisse la touche meta ? etc. -- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> |
|
|
|
#9 |
|
Messages: n/a
Hébergeur: |
Paul Gaborit <Paul.Gaborit@invalid.invalid> writes:
> Petite question : connaissez-vous beaucoup de programmes tournant dans > un terminal qui sachent distinguer la touche control gauche de la > touche control droite ? ou qui connaisse la touche meta ? etc. D'ailleurs, y'a jamais eu de projet pour faire des terminaux (et des applies) qui pourraient justement faire ce genre de distinction ? -- Matthieu |
|
|
|
#10 |
|
Messages: n/a
Hébergeur: |
On 2007-04-12, Luc Habert <lhabert@clipper.ens.fr> wrote:
>> configuration de xmodmap : >> >> ! Mode_shift + e donne "é" par exemple >> keycode 26 = e E egrave Egrave >> ... >> ! Meta_L est la touche diamand de gauche >> keycode 131 = Meta_L >> ... >> ! Mode_shift est sur la même touche >> keysym Meta_L = Mode_switch Meta_L > > Mon dieu quelle horreur! Pourquoi ? C'est plus rapide que d'utiliser la touche compose pour avoir des caractères accentués, et je m'y suis habitué. >> ... >> ! OpenBox utilise mod1, utiliser Alt_L pour cela >> add mod1 = Alt_L > > Mouarf. La convention habituelle est plutôt de considérer que Mod1=Meta et > Mod2=Alt. Normalement, ça ne devrait avoir aucune importance, mais les > programmes modernes hardcodent cette correspondance Ça n'a aucune importance, et en plus c'est faut : openbox utilise en fait mod1 ou mod3 ou mod4. Juste pour corriger, mais c'est HS. >> Première surprise : la touche meta ne fonctionne pas. Lorsque j'appuis >> sur Alt_L et 'a', je m'attend à faire un [M-a], mais emacs affiche >> sobrement 'a' (si je vérifie avec [C-h l], j'ai bien seulement 'a'). > > C'est parfaitement normal. Ton xterm reçoit le Alt-a, et il le traduit en a > tout court. Ce qu'il te faut, c'est que le keysym Meta_L ou Meta_R soit > associée à un modificateur, et appuyer sur une touche générant le keysym en > question en même temps que «a». Là, xterm devrait le traduire en «^[ a», > que emacs comprendra comme M-a. (Enfin, encore faut-il que ton xterm soit > configuré pour ça, parce qu'il peut aussi être configuré pour traduire le > meta en +=128. Assure-toi d'avoir «XTerm*eightBitInput:false» dans ton > .Xresources.) OK, je comprend. Mais si je configure Xterm pour qu'il transforme les code > 128 en séquence escape+lettre je crains qu'alors je ne puisse plus afficher de caractères accentués dans xterm (ni dans vi, mutt, slrn, et tout les outils habituels), à moins peut être d'avoir recours à de la magie noire spécifique à chacun de ces programmes ? Il n'y a pas moyen pour xterm de passer le meta à emacs tout en autorisant les inputs sur 8bits ? Genre demander à xterm de ne convertir que les modifieurs en séquence escape, mais d'accepter par ailleurs les caractères 8bits ? Actuellement lorsque j'envoie des Meta+lettres à xterm il m'affiche des tas de caractères exotiques genre lettres accentuées nordiques ou espagnoles. Comme je ne parle aucune de ces langues ça ne me sert à rien :-) Gagné, ca existe et apparement ça s'appelle 'metaSendsEscape'. Je viens de tester : sous le terminal, je peut toujours écrire des caractères accentués grace à Mode_switch, et la touche Meta fait biper xterm. L'ennuis c'est que ça fait aussi biper emacs. :-/ Et si j'utilise [C-h l] après un M-x par exemple, je vois que mon M-x à donné "ESC ø" (esc suivit d'un o barré). Je sens que ça brule... > Par défaut, emacs traduit un caractère supérieur à 128 comme le -=128 > métaifié. Il faut mettre «(set-input-mode nil nil 1)» dans le .emacs pour > le calmer. Oui c'était exactement ça le problème comme Google avait fini par me le dire. |
|
![]() |
| Outils de la discussion | |
|
|