Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

emacs -nw, problèmes de clavier

5 réponses
Avatar
christophe
J'essaye d'utiliser "emacs -nw".
Et =E7a marche pas du tout.

Mes "locales", a priori sont bien r=E9gl=E9es.
Je suis sous sarge avec KDE 3.5 en backports.
Et =E7a fait pareil avec Konsole ou Xterm.

le Probl=E8me :
"=E0" est identifi=E9 par \340, et pas n'importe quoi
Cependant, les "describe-key donnent :
"=E0" =3D "M-`"
"=E9" =3D "M-i"
"=E8" =3D "M-h"
C-h c "=E7" -->
"Set face: default (M-g d), bold (M-g b), italic (M-g i)... "
"=F9" =3D "M-y"

En fait, c'est m=EAme pas des associations, puisque
si je fais "C-h c" "=EE", il me dit "M-n is undefined".

Ch.

Rq : =E7a marche parfaitement avec X.
Q : Y a-t-il des fichiers de configuration particuliers en nox,
(oui, bien s=FBr). Savez vous quels sont ils, o=F9 sont ils?

5 réponses

Avatar
Pascal Bourguignon
"christophe" writes:

J'essaye d'utiliser "emacs -nw".
Et ça marche pas du tout.

Mes "locales", a priori sont bien réglées.
Je suis sous sarge avec KDE 3.5 en backports.
Et ça fait pareil avec Konsole ou Xterm.

le Problème :
"à" est identifié par 340, et pas n'importe quoi
Cependant, les "describe-key donnent :
"à" = "M-`"
"é" = "M-i"
"è" = "M-h"
C-h c "ç" -->
"Set face: default (M-g d), bold (M-g b), italic (M-g i)... "
"ù" = "M-y"

En fait, c'est même pas des associations, puisque
si je fais "C-h c" "î", il me dit "M-n is undefined".

Ch.

Rq : ça marche parfaitement avec X.



Oui. Ça ne te donne pas une idée?

C'est quoi terminal?
Comment ça communique avec un ordinateur?

Un terminal, c'est un clavier, un écran et une liaison série pour le
connecter à l'ordinateur.

Le protocole de communication avec l'ordinateur est basé sur
l'encodage ASCII des caractères de codes de controle.

L'ASCII permet d'encoder les caractères suivants:

(espace)
! " # $ % & ' ( ) * + , - . /
0 1 2 3 4 5 6 7 8 9 : ; < = > ?
@ A B C D E F G H I J K L M N O
P Q R S T U V W X Y Z [ ] ^ _
` a b c d e f g h i j k l m n o
p q r s t u v w x y z { | } ~

plus les codes de controles suivants:

NUL SOH STX ETX EOT ENQ ACK BEL BS TAB LF VT FF CR SO SI
DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US

DEL

C'est tout.

Pour envoyer un code de controle, on peut taper sur certaines touches
comme TAB, BACKSPACE ou RETURN, ou utiliser une combinaison avec la
touche CONTROL, et une lettre ou @[]_


Il n'y a pas d'accent, pas de meta, pas de alt, pas de super, ni
d'hyper, top, bottom, greek, etc.


Maintenant comme le code ASCII n'utilise que 7 bits, on peut utiliser
8e bit de chaque octets de différentes manières. Par exemple, c'était
intéressant quand on avait de vrais cables séries ou des modems,
d'utiliser le 8e bit comme bit de parité.

Mais quand on ne s'en sert pas comme bit de parités, on peut s'en
servir pour encoder Meta. Quand on tape sur M-x, on envoit le code
pour x (120), plus 128 = 248. À l'autre bout, emacs quand il voit un
code supérieur à 128, il soustrait 128 pour savoir de quel caractère
il s'agit, et il suppose que c'est une combinaison avec Meta.

D'où ton problème: tu as un clavier X qui au lieu de générer seulement
des caractères ASCII, génère des caractères ISO-8859-1 avec des codes
supérieurs à 160. Alors quand tu tapes M-x, ou ø, tu obtiens le même
code, 248.


ISO_8859-1:1997 = ISO-8859-1 + C0 + C1

0 NUL 1 SOH 2 STX 3 ETX 4 EOT 5 ENQ 6 ACK 7 BEL
8 BS 9 TAB 10 LF 11 VT 12 FF 13 CR 14 SO 15 SI
16 DLE 17 DC1 18 DC2 19 DC3 20 DC4 21 NAK 22 SYN 23 ETB
24 CAN 25 EM 26 SUB 27 ESC 28 FS 29 GS 30 RS 31 US
32 SPC 33 ! 34 " 35 # 36 $ 37 % 38 & 39 '
40 ( 41 ) 42 * 43 + 44 , 45 - 46 . 47 /
48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7
56 8 57 9 58 : 59 ; 60 < 61 = 62 > 63 ?
64 @ 65 A 66 B 67 C 68 D 69 E 70 F 71 G
72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O
80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W
88 X 89 Y 90 Z 91 [ 92 93 ] 94 ^ 95 _
96 ` 97 a 98 b 99 c 100 d 101 e 102 f 103 g
104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o
112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w
120 x 121 y 122 z 123 { 124 | 125 } 126 ~ 127 DEL
128 PAD 129 HOP 130 BPH 131 NBH 132 IND 133 NEL 134 SSA 135 ESA
136 HTS 137 HTJ 138 VTS 139 PLD 140 PLU 141 RI 142 SS2 143 SS3
144 DCS 145 PU1 146 PU2 147 STS 148 CCH 149 MW 150 SPA 151 EPA
152 SOS 153 SGCI 154 SCI 155 CSI 156 ST 157 OSC 158 PM 159 APC
160   161 ¡ 162 ¢ 163 £ 164 ¤ 165 ¥ 166 ¦ 167 §
168 ¨ 169 © 170 ª 171 « 172 ¬ 173 ­ 174 ® 175 ¯
176 ° 177 ± 178 ² 179 ³ 180 ´ 181 µ 182 ¶ 183 ·
184 ¸ 185 ¹ 186 º 187 » 188 ¼ 189 ½ 190 ¾ 191 ¿
192 À 193 Á 194 Â 195 Ã 196 Ä 197 Å 198 Æ 199 Ç
200 È 201 É 202 Ê 203 Ë 204 Ì 205 Í 206 Î 207 Ï
208 Ð 209 Ñ 210 Ò 211 Ó 212 Ô 213 Õ 214 Ö 215 ×
216 Ø 217 Ù 218 Ú 219 Û 220 Ü 221 Ý 222 Þ 223 ß
224 à 225 á 226 â 227 ã 228 ä 229 å 230 æ 231 ç
232 è 233 é 234 ê 235 ë 236 ì 237 í 238 î 239 ï
240 ð 241 ñ 242 ò 243 ó 244 ô 245 õ 246 ö 247 ÷
248 ø 249 ù 250 ú 251 û 252 ü 253 ý 254 þ 255 ÿ

http://en.wikipedia.org/wiki/Iso-8859-1


Tu as deux choix.

Soit tu essaye de faire en sorte que sur la liaison entre le terminal
et l'ordinateur ne passent que des caractères ASCII, et alors pour
entrer des caractères iso-8859-1, tu peux utiliser les séquences
commençant par C-x 8 dans emacs: C-x 8 ' e donne é (C-x 8 C-h en
donne la liste), et tu continue à utiliser le 8e bit pour encoder
Meta. Pour les accents, on peut aussi activer iso-accents-mode, et
alors les taper avec 'e directement pour é.


Soit tu configure les choses pour que la liaison entre le terminal et
l'ordinateur passe des caractères ISO-8859-1.

- dire au terminal d'envoyer un ESC préfix au lieu d'un bit 8 à 1
pour Meta; dans xterm: sélectionner dans le menu Control Left Mouse
Button: "Meta Sends Escape".

- dire aux programmes terminal qu'ils ont un clavier iso-8859-1/15:
stty pass8
export LC_CTYPE=ISO-8859-1 # ou:
export LC_CTYPE=ISO-8859-15 # pour €

- dire à emacs que le 8e bit n'est pas Meta, mais utilisé pour encoder
les caractères iso-8859:

(set-input-mode (first (current-input-mode))
(second (current-input-mode))
0) ; pour accepter des caractères 8-bit.

- dire à emacs quel encodage est utilisé pour les caractères 8-bit
qu'il reçoit:

(set-terminal-coding-system 'iso-8859-1)
(set-terminal-coding-system 'iso-8859-15) ; pour €



http://tldp.org/HOWTO/Keyboard-and-Console-HOWTO-12.html
(info "(emacs)Coding Systems")
(info "(emacs)Terminal Coding")


Q : Y a-t-il des fichiers de configuration particuliers en nox,
(oui, bien sûr). Savez vous quels sont ils, où sont ils?



C'est le même ~/.emacs
Tu peux tester window-system. Quand il est nil, c'est nox.



--
__Pascal Bourguignon__ http://www.informatimago.com/
Cats meow out of angst
"Thumbs! If only we had thumbs!
We could break so much!"
Avatar
christophe
Pascal Bourguignon a écrit :

Oui. Ça ne te donne pas une idée?

C'est quoi terminal?
Comment ça communique avec un ordinateur?

Un terminal, c'est un clavier, un écran et une liaison série pour le
connecter à l'ordinateur.



Bon, d'accord, Ok, je suis d'accord.
Sur le fond, sur le principe.

Mais d'habitude, Konsole (le truc de kde), ou xterm,
ils se débruillent très bien pour faire du "latin-9".

"vim", il se débrouille très bien pour faire du latin-9.
(Sur le terminal, sans fenêtre graphique propre à lui).

Maintenant, ces genres de "terminaux", ils font même du
utf-8.

Parce que en tout cas, c'est pas "vraiment des terminaux",
moi, en tout cas je reste chez moi. (je fais pas du telnet).
(Et puis pour faire de la correction d'erreur, on fait mieux que
les bits de parité maintenant, mais ce n'est pas le sujet).

En admétant que emacs-nox fasse de la résistance, et veuille ne
garder
que 7 bits utiles.

Y'a pas des fichiers, genre "termio" ou un truc comme ça qu'on
pourrait
configurer ?

Ça me semble bizarre quand même, on est quand même en 2048,
pas en 1970.

Sinon, emacs ils aurait pas prévu des "machins.el", qui permettrait
que ça marche sans que j'aille bidouiller des trucs infames.

Sinon, y'a une solution que je peux bidouiller, consistant,
(vu qu'il reconnaît quand je tappe "à", il voit 340, que je lie,
à la main, chacune des touches posant problème, et que je mette ça
dans
mon propre pont el. (Que qui risque cependant, de ne pas être si
propre).

Non, mais ils y ont pensé quand même ???, non ?

Mon terminal il affiche tous les caractères, lui, il doit bien y avoir
y moyen
sans d'horribles bidouilles ?

Ch.
Avatar
Vincent Lefevre
Dans l'article ,
christophe écrit:

J'essaye d'utiliser "emacs -nw".
Et ça marche pas du tout.

Mes "locales", a priori sont bien réglées.



Sauf si ça a changé, par défaut, emacs n'utilise pas les locales pour
les échanges avec le terminal (aucune idée du pourquoi). Il faut donc
le lui dire explicitement. J'ai ceci dans mon .emacs:

;; When emacs is running in a text terminal...
(when (not window-system)
(set-keyboard-coding-system locale-coding-system)
(set-terminal-coding-system locale-coding-system)
)

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)
Avatar
christophe
D'accord, bien il doit y avoir plusieurs méthodes qui marchent...
Il y en a au moins une qui marche pour moi.
D'abord, je m'excuse auprès de _Pascal_, j'avais pas lu son message
jusqu'au
bout, enfin plutôt, je ne l'avais pas bien compris à la premère
lecture.
Et je voulais la réponse ce soir.
La réponse que j'ai faite ne lui rendait pas justice.
Donc, là en reregardant :

Je le cite, ici :
<<
- dire à emacs que le 8e bit n'est pas Meta, mais utilisé pour
encoder
les caractères iso-8859:

(set-input-mode (first (current-input-mode))
(second (current-input-mode))
0) ; pour accepter des caractères 8-bit.

- dire à emacs quel encodage est utilisé pour les caractères 8-bit
qu'il reçoit:

(set-terminal-coding-system 'iso-8859-1)
(set-terminal-coding-system 'iso-8859-15) ; pour €

http://tldp.org/HOWTO/Keyboard-and-Console-HOWTO-12.html
(info "(emacs)Coding Systems")
(info "(emacs)Terminal Coding")






J'ai utilisé le lien HOWTO-12.html ci dessus :
(echo; echo "(set-input-mode nil nil 1)") >> .emacs_bis
Avec:
emacs -nw -l .emacs_bis toto.txt

Et ça a suffit,
il semblerait que tout marche bien.

Voilà, bien je n'avais pas trouvé la réponse sur le net avec les
mots clés
qui m'étaient venus à l'esprit.

Ch.
Avatar
Vincent Lefevre
Dans l'article ,
christophe écrit:

J'ai utilisé le lien HOWTO-12.html ci dessus :
(echo; echo "(set-input-mode nil nil 1)") >> .emacs_bis



Sur ce point, j'ai ceci:

(set-input-mode (car (current-input-mode)) (nth 1 (current-input-mode)) 1)

Je ne sais pas ce qui est le mieux...

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)