PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Forums Hébergement > Forum Serveur - Sécurité et techniques > fr.comp.os.unix > Du clavier à emacs : que devient Mode_shift ?
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
fr.comp.os.unix Système UNIX.

Du clavier à emacs : que devient Mode_shift ?

Réponse
 
LinkBack Outils de la discussion
Vieux 11/04/2007, 12h53   #1
rixed@happyleptic.org
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Du clavier à emacs : que devient Mode_shift ?

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 !

  Réponse avec citation
Vieux 11/04/2007, 15h08   #2
Pascal Bourguignon
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Du clavier à emacs : que devient Mode_shift?

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
  Réponse avec citation
Vieux 11/04/2007, 18h10   #3
rixed@happyleptic.org
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Du clavier à emacs : que devient Mode_shift?

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...)

  Réponse avec citation
Vieux 11/04/2007, 21h37   #4
Michel Talon
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Du clavier à emacs : que devient Mode_shift?

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

  Réponse avec citation
Vieux 12/04/2007, 13h55   #5
Paul Gaborit
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Du clavier à emacs : que devient Mode_shift?


À (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/>
  Réponse avec citation
Vieux 12/04/2007, 17h07   #6
Pascal Bourguignon
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Du clavier à emacs : que devient Mode_shift?

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
  Réponse avec citation
Vieux 12/04/2007, 17h26   #7
Luc Habert
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Du clavier à emacs : que devient Mode shift ?

[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.
  Réponse avec citation
Vieux 12/04/2007, 17h45   #8
Paul Gaborit
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Du clavier à emacs : que devient Mode_shift?


À (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/>
  Réponse avec citation
Vieux 12/04/2007, 17h59   #9
Matthieu Moy
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Du clavier à emacs : que devient Mode_shift ?

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
  Réponse avec citation
Vieux 13/04/2007, 08h25   #10
rixed@happyleptic.org
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Du clavier à emacs : que devient Mode shift?

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.


  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 03h26.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,20598 seconds with 18 queries