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

macro

16 réponses
Avatar
Stéphane Dutailly
Bonjour,

Je cherche à faire une petite macro permettant d'activer/désactiver un
mode mineur (orgtbl-mode). Dans ce but, j'ai essayé ceci:

(defun activer-orgtbl-mode ()
(interactive)
(require 'orgtbl))

mais cela ne fonctionne pas (j'obtiens: Cannot open load file: orgtbl,
alors que si je tape M-x orgtbl-mode, cela fonctionne très bien).
Voyez-vous quoi changer ou ajouter pour que cela fonctionne?

Merci d'avance,

Stéphane Dutailly


PS: mon objectif est ensuite d'affecter une touche à cette nouvelle
fonction de façon activer/désactiver ce mode en appuyant sur cette touche.

6 réponses

1 2
Avatar
Lucas Levrel
Le 13 septembre 2013, Pascal J. Bourguignon a écrit :

Lucas Levrel writes:

Le 12 septembre 2013, Pascal J. Bourguignon a écrit :
(Les touches peuvent se configurer facilement comme on veut avec
xmodmap quand on utilise X11).



Je trouve que l'adverbe est de trop !



Non, c'est même trivial.



Alors je veux bien que tu m'expliques la configuration des modificateurs
(Meta etc.), car je trouve ça obscur au possible.

--
LL
Avatar
Pascal J. Bourguignon
Lucas Levrel writes:

Le 13 septembre 2013, Pascal J. Bourguignon a écrit :

Lucas Levrel writes:

Le 12 septembre 2013, Pascal J. Bourguignon a écrit :
(Les touches peuvent se configurer facilement comme on veut avec
xmodmap quand on utilise X11).



Je trouve que l'adverbe est de trop !



Non, c'est même trivial.



Alors je veux bien que tu m'expliques la configuration des
modificateurs (Meta etc.), car je trouve ça obscur au possible.




D'abord, avec emacs il y a 6 modificateurs:

! C- Control
! M- Meta
! S- Shift
! s- super
! H- Hyper
! A- Alt

Noter que Alt est différent de Meta! On peut avoir des liens sur M-x et
sur A-x vers des commandes différentes.


On a de la chance, avec X11, il y a des symboles pour chacun de ces
modificateurs emacs. Et sur un clavier de 105 touches, on a assez de
touches pour tous (mais pas forcément tous en double) ;-).

(Noter que la toute première version de X était écrite en lisp, d'où le
terme de 'symbole', et d'où le fait que ces symboles soient représentés
dans le protocole X par des entiers sur 29 bits: l'implémentation lisp
utilisée utilisait 3 bits par mot de 32 bits pour encoder le type de la
valeur encodée dans les 29 bits suivant).



En X11, il y a 8 modificateurs, 8 bits qui sont transmis avec chaque
pression de touche. Les 3 premiers bits sont fixés: Shift, Lock,
Control, les 5 suivants sont génériques de Mod1 à Mod5.

Shift Lock Control Mod1 Mod2 Mod3 Mod4 Mod5




Dans .xmodmap, on indique quels symboles correspondent à quel bit
modificateur:

!------------------------------------------------------------
! Modifiers
!------------------------------------------------------------

clear Shift
clear Lock
clear Control
clear Mod1
clear Mod2
clear Mod3
clear Mod4
clear Mod5

!!! In order of bits:
add Shift = Shift_L Shift_R
add Lock = Caps_Lock
add Control = Control_L Control_R
add Mod1 = Num_Lock
add Mod2 = Alt_L Alt_R Mode_switch
add Mod3 = Meta_L Meta_R
add Mod4 = Super_L Super_R
add Mod5 = Hyper_L Hyper_R

Ça signifie que le bit correspondant sera mis à 1 si l'un des symboles à
droite du signe '=' est transmis.





Maintenant, le bit Shift et le bit correspondant au symbole Mode_Switch
sont un peu spéciaux, car ils sont utilisés pour sélectionner le symbole
correspondant à un code (man xmodmap) :

keycode NUMBER = KeySym_touche_nue KeySym_avec_Shift KeySym_avec_Mode_switch KeySym_avec_Shift_et_Mode_switch

Par exemple, sur la touche 'A', j'ai les symbolesL 'a' 'A' 'α' et 'Α'
qui sont transmis en fonction de la combinaison Shift et Mode_switch:

keycode 38 = a A Greek_alpha Greek_ALPHA


Malheureusement, certaines applications cablent en dur l'association
Mod2 = Mode_switch, alors il vaut mieux la garder, mais théoriquement on
peut mettre Mode_switch sur n'importe quel modificateur.






On peut assigner n'importe quel symbole à ces modificateurs. Il y a des
symboles qui sont dédiés pour nommer des modificateurs, mais on peut
aussi activer les bits modificateurs avec d'autres symboles. Par
exemple, j'utilise Num_Lock pour activer Mod1.


Voir la liste des symboles dans /usr/include/X11/keysymdef.h
(dans .xmodmap, enlever le préfixe 'XK_').

/* Modifiers */

#define XK_Shift_L 0xffe1 /* Left shift */
#define XK_Shift_R 0xffe2 /* Right shift */
#define XK_Control_L 0xffe3 /* Left control */
#define XK_Control_R 0xffe4 /* Right control */
#define XK_Caps_Lock 0xffe5 /* Caps lock */
#define XK_Shift_Lock 0xffe6 /* Shift lock */

#define XK_Meta_L 0xffe7 /* Left meta */
#define XK_Meta_R 0xffe8 /* Right meta */
#define XK_Alt_L 0xffe9 /* Left alt */
#define XK_Alt_R 0xffea /* Right alt */
#define XK_Super_L 0xffeb /* Left super */
#define XK_Super_R 0xffec /* Right super */
#define XK_Hyper_L 0xffed /* Left hyper */
#define XK_Hyper_R 0xffee /* Right hyper */


Noter que l'on distingue souvent un symbole pour une touche gauche ('L')
et pour une touche droite ('R'), ce qui sert dans des programmes comme
des jeux, qui peuvent distinguer les deux symboles (alors que le même
bit modificateur serait indiqué pour les deux symboles).




Comme il y a plus de symboles que de bits modificateurs et que de
touches, il faut faire une sélection.

On peut commencer par dessiner la disposition de touche que l'on veut
(avec 4 symboles par touche, nue, shift, mode_switch,
shift+mode_switch), et noter les touches pour les symboles utilisés pour
les modificateurs:


! ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
! `~∞∝ 1!₁¹ 2@₂² 3#₃³ 4$₄⁴ 5%₅⁵ 6^₆⁶ 7₇⁷ 8*₈⁸ 9(₉⁹ 0)₀⁰ -_⊣⊥ =+⊢⊤ Backspace
! TAB qQωΩ wW€¢ eEεΕ rRρΡ tTτΤ yYψΨ uUυΥ iIιΙ oOοΟ pPπΠ [{«∀ ]}»∃ |∖∫
! Control aAαΑ sSσΣ dDδΔ fFφΦ gGγΓ hHθΘ jJηΗ kKκΚ lLλΛ ;:⊆⎕ '"⊇○ Return
! Shift zZζΖ xXξΞ cCχΧ vV∇√ bBβΒ nNνΝ mMμΜ ,<≤∧ .>≥∨ /?≠¬ Shift
! Multi_key Alt Meta ---- Space DigitSpace ----- Meta ModeSw Hyper Control

(faire la même chose pour les pavés numériques et movements, etc).


Multi_key sert pour "composer" plusieurs touches pour émettre des
symboles qui ne correspondent pas à une touche unique. Par exemple, je
tape Multi_key ' e pour obtenir é.

Noter coment je distingue une touche Alt de Meta, ce qui me permet de
lier dans emacs de nombreuses commandes sur A- au lieu de M- qui est
déjà bien occupé. J'ai aussi une touche Hyper, donc j'ai le choix entre
A- et H- pour mes commandes.



Ensuite, avec xev(1), on tape sur chaque touche du clavier dans l'ordre,
et on note chaque keycode.


Ensuite on peut écrire la disposition, rangée de touche par rangée de
touche, c'est plus facile à lire :




!------------------------------------------------------------
! Fourth line (home row)
!------------------------------------------------------------

keycode 66 = Control_L

keycode 38 = a A Greek_alpha Greek_ALPHA
keycode 39 = s S Greek_sigma Greek_SIGMA
keycode 40 = d D Greek_delta Greek_DELTA
keycode 41 = f F Greek_phi Greek_PHI
keycode 42 = g G Greek_gamma Greek_GAMMA
keycode 43 = h H Greek_theta Greek_THETA
keycode 44 = j J Greek_eta Greek_ETA
keycode 45 = k K Greek_kappa Greek_KAPPA
keycode 46 = l L Greek_lamda Greek_LAMDA
keycode 47 = semicolon colon 0x1002286 quad
keycode 48 = apostrophe quotedbl 0x1002287 circle

keycode 36 = Return





!------------------------------------------------------------
! Sixth line
!------------------------------------------------------------

keycode 37 = Multi_key
keycode 133 = Alt_L
keycode 64 = Meta_L

keycode 65 = space space digitspace digitspace

keycode 108 = Meta_R
keycode 134 = Mode_switch
keycode 135 = Hyper_R
keycode 105 = Control_R





Quand on presse la touche 64 un message est envoyé indiquant que cette
touche correspondant au symbole Meta_L est enfoncée, et le bit Mod3 est
mis à 1.

Quand ensuite on presse la touche 39, un message est envoyé indiquant
que cette touche correspondant au symbole 's' (pas de shift, pas de
mode_switch) est enfoncée et l'octet de bits modificateurs contient Mod3
à 1.

Quand ensuite on relâche la touche 39, un message est envoyé indiquant
que cette touche correspondant au symbole 's' (pas de shift, pas de
mode_switch) est relachée et l'octet de bits modificateurs contient Mod3
à 1.

Quand on relâche la touche 64 un message est envoyé indiquant que cette
touche correspondant au symbole Meta_L est relâchée, et le bit Mod3 est
remis à 0.

Sortie de xev:

KeyPress event, serial 32, synthetic NO, window 0x3200001,
root 0x28e, subw 0x0, time 4022458067, (1199,732), root:(1199,732),
state 0x0, keycode 64 (keysym 0xffe7, Meta_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False

KeyPress event, serial 32, synthetic NO, window 0x3200001,
root 0x28e, subw 0x0, time 4022458547, (1199,732), root:(1199,732),
state 0x20, keycode 39 (keysym 0x73, s), same_screen YES,
XLookupString gives 1 bytes: (73) "s"
XmbLookupString gives 1 bytes: (73) "s"
XFilterEvent returns: False

KeyRelease event, serial 32, synthetic NO, window 0x3200001,
root 0x28e, subw 0x0, time 4022458691, (1199,732), root:(1199,732),
state 0x20, keycode 39 (keysym 0x73, s), same_screen YES,
XLookupString gives 1 bytes: (73) "s"
XFilterEvent returns: False

KeyRelease event, serial 32, synthetic NO, window 0x3200001,
root 0x28e, subw 0x0, time 4022458947, (1199,732), root:(1199,732),
state 0x20, keycode 64 (keysym 0xffe7, Meta_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False



Il semble qu'emacs regarde les bits modificateurs pour déterminer si une
touche a été tapée avec un modificateur, et non pas le fait qu'un
symbole modificateur ait été transmis avant et après la touche. Si on
exécute:

xmodmap -e 'clear Mod2'

on voit avec xev(1) que le symbole Alt_L est bien transmis dans des
évènements pression/relâchement, mais comme le bit modificateur n'est
plus mis à 1, quand on appuit sur 's', emacs le prend comme un 's' et
non pas comme A-s.


PS: Noter digitspace (Mode_switch espace): '(? ? ) -> (32 8199)
Comparer en police proportionnelle:

1 234
12 34
123 4


   1 234
  12  34
 123   4


!
! This is an `xmodmap' input file for the DasKeyboard 3
!
! Bus 008 Device 005: ID 04d9:2013 Holtek Semiconductor, Inc.
!
! PC 105 keys, wide Delete, wide Enter.
!


! C- Control
! M- Meta
! S- Shift
! s- super
! H- Hyper
! A- Alt


!
! ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
! `~∞∝ 1!₁¹ 2@₂² 3#₃³ 4$₄⁴ 5%₅⁵ 6^₆⁶ 7₇⁷ 8*₈⁸ 9(₉⁹ 0)₀⁰ -_⊣⊥ =+⊢⊤ Backspace
! TAB qQωΩ wW€¢ eEεΕ rRρΡ tTτΤ yYψΨ uUυΥ iIιΙ oOοΟ pPπΠ [{«∀ ]}»∃ |∖∫
! Control aAαΑ sSσΣ dDδΔ fFφΦ gGγΓ hHθΘ jJηΗ kKκΚ lLλΛ ;:⊆⎕ '"⊇○ Return
! Shift zZζΖ xXξΞ cCχΧ vV∇√ bBβΒ nNνΝ mMμΜ ,<≤∧ .>≥∨ /?≠¬ Shift
! Multi_key Alt Meta ---- Space DigitSpace ----- Meta ModeSw Hyper Control
!
!
! Pause ∂ CapsLock Print
! Insert ∈∉ Home ⇒⇔ Prior ≡≢
! Delete ∅≣ End ∴ ∵ Next ≈≇
!
! Up ↑∩
! Left ←⊂ Down ↓∪ Right →⊃
!
!
!
!
! NumLock * / -
! Home 7 Up 8 Prior 9
! Left 4 Begin 5 Right 6 +
! End 1 Down 2 Next 3 Ent
! Insert 0 Delete . er
!
!
! NumLock * / -
! Home 7 Up 8 Prior 9
! Left 4 Begin 5 Right 6 +
! End 1 Down 2 Next 3 Ent
! Insert 0 Delete . er
!
!
!
!
!
!


!------------------------------------------------------------
! First line
!------------------------------------------------------------

keycode 9 = Escape

keycode 67 = F1 XF86_Switch_VT_1 F21
keycode 68 = F2 XF86_Switch_VT_2 F22
keycode 69 = F3 XF86_Switch_VT_3 F23
keycode 70 = F4 XF86_Switch_VT_4 F24

keycode 71 = F5 XF86_Switch_VT_5 F25
keycode 72 = F6 XF86_Switch_VT_6 F26
keycode 73 = F7 XF86_Switch_VT_7 F27
keycode 74 = F8 XF86_Switch_VT_8 F28

keycode 75 = F9 XF86_Switch_VT_9 F29
keycode 76 = F10 XF86_Switch_VT_10 F30
keycode 95 = F11 XF86_Switch_VT_11 F31
keycode 96 = F12 XF86_Switch_VT_12 F32

keycode 107 = Pause Break F33
keycode 78 = Caps_Lock Caps_Lock F34
!keycode 127 = Print Sys_Req F35
keycode 127 = Super_R Super_R


!------------------------------------------------------------
! Second line
!------------------------------------------------------------

keycode 49 = grave asciitilde infinity variation
keycode 10 = 1 exclam onesubscript onesuperior
keycode 11 = 2 at twosubscript twosuperior
keycode 12 = 3 numbersign threesubscript threesuperior
keycode 13 = 4 dollar foursubscript foursuperior
keycode 14 = 5 percent fivesubscript fivesuperior
keycode 15 = 6 asciicircum sixsubscript sixsuperior
keycode 16 = 7 ampersand sevensubscript sevensuperior
keycode 17 = 8 asterisk eightsubscript eightsuperior
keycode 18 = 9 parenleft ninesubscript ninesuperior
keycode 19 = 0 parenright zerosubscript zerosuperior
keycode 20 = minus underscore righttack downtack
keycode 21 = equal plus lefttack uptack
keycode 22 = BackSpace BackSpace BackSpace BackSpace


!------------------------------------------------------------
! Third line
!------------------------------------------------------------

keycode 23 = Tab ISO_Left_Tab

keycode 24 = q Q Greek_omega Greek_OMEGA
keycode 25 = w W EuroSign cent
keycode 26 = e E Greek_epsilon Greek_EPSILON
keycode 27 = r R Greek_rho Greek_RHO
keycode 28 = t T Greek_tau Greek_TAU
keycode 29 = y Y Greek_psi Greek_PSI
keycode 30 = u U Greek_upsilon Greek_UPSILON
keycode 31 = i I Greek_iota Greek_IOTA
keycode 32 = o O Greek_omicron Greek_OMICRON
keycode 33 = p P Greek_pi Greek_PI
keycode 34 = bracketleft braceleft guillemotleft 0x1002200
keycode 35 = bracketright braceright guillemotright 0x1002203
keycode 51 = backslash bar 0x1002216 integral


!------------------------------------------------------------
! Fourth line (home row)
!------------------------------------------------------------

keycode 66 = Control_L

keycode 38 = a A Greek_alpha Greek_ALPHA
keycode 39 = s S Greek_sigma Greek_SIGMA
keycode 40 = d D Greek_delta Greek_DELTA
keycode 41 = f F Greek_phi Greek_PHI
keycode 42 = g G Greek_gamma Greek_GAMMA
keycode 43 = h H Greek_theta Greek_THETA
keycode 44 = j J Greek_eta Greek_ETA
keycode 45 = k K Greek_kappa Greek_KAPPA
keycode 46 = l L Greek_lamda Greek_LAMDA
keycode 47 = semicolon colon 0x1002286 quad
keycode 48 = apostrophe quotedbl 0x1002287 circle

keycode 36 = Return


!------------------------------------------------------------
! Fifth line
!------------------------------------------------------------

keycode 50 = Shift_L

keycode 52 = z Z Greek_zeta Greek_ZETA
keycode 53 = x X Greek_xi Greek_XI
keycode 54 = c C Greek_chi Greek_CHI
keycode 55 = v V nabla radical
keycode 56 = b B Greek_beta Greek_BETA
keycode 57 = n N Greek_nu Greek_NU
keycode 58 = m M Greek_mu Greek_MU
keycode 59 = comma less lessthanequal logicaland
keycode 60 = period greater greaterthanequal logicalor
keycode 61 = slash question notequal notsign

keycode 62 = Shift_R


!------------------------------------------------------------
! Sixth line
!------------------------------------------------------------

keycode 37 = Multi_key
keycode 133 = Alt_L
keycode 64 = Meta_L

keycode 65 = space space digitspace digitspace

keycode 108 = Meta_R
keycode 134 = Mode_switch
keycode 135 = Hyper_R
keycode 105 = Control_R


!------------------------------------------------------------
! Home
!------------------------------------------------------------

keycode 118 = Insert Insert elementof notelementof
keycode 119 = Delete Delete emptyset stricteq

keycode 110 = Home Home implies ifonlyif
keycode 115 = End End therefore because

keycode 112 = Prior Prior identical notidentical
keycode 117 = Next Next approxeq notapproxeq


!------------------------------------------------------------
! Arrows
!------------------------------------------------------------

keycode 111 = Up Up uparrow intersection
keycode 113 = Left Left leftarrow includedin
keycode 116 = Down Down downarrow union
keycode 114 = Right Right rightarrow includes


!------------------------------------------------------------
! Numerical Keypad
!------------------------------------------------------------

!! ! Second line:
!! !keycode 77 = Num_Lock Pointer_EnableKeys
!! keycode 77 = Num_Lock
!! keycode 106 = KP_Multiply XF86_ClearGrab
!! keycode 63 = KP_Divide XF86_Ungrab
!! keycode 82 = KP_Subtract KP_Subtract 0x1002500 0x1002550
!!
!! ! Third line:
!! keycode 79 = KP_Home KP_7 0x100250C 0x1002554
!! keycode 80 = KP_Up KP_8 0x100252C 0x1002566
!! keycode 81 = KP_Prior KP_9 0x1002510 0x1002557
!!
!! ! Fourth line:
!! keycode 83 = KP_Left KP_4 0x100251C 0x1002560
!! keycode 84 = KP_Begin KP_5 0x100253C 0x100256C
!! keycode 85 = KP_Right KP_6 0x1002524 0x1002563
!! keycode 86 = KP_Add KP_Add 0x1002502 0x1002551
!!
!! ! Fifth line:
!! keycode 87 = KP_End KP_1 0x1002514 0x100255A
!! keycode 88 = KP_Down KP_2 0x1002534 0x1002569
!! keycode 89 = KP_Next KP_3 0x1002518 0x100255D
!!
!! ! Sixth line:
!! keycode 90 = KP_Insert KP_0
!! keycode 91 = KP_Delete KP_Decimal
!! keycode 104 = KP_Enter



! Second line:
keycode 77 = F13 F13 partialderivative
keycode 106 = F14 F14
keycode 63 = F15 F15
keycode 82 = F16 F16 0x1002500 0x1002550

! Third line:
keycode 79 = F27 KP_7 0x100250C 0x1002554
keycode 80 = F28 KP_8 0x100252C 0x1002566
keycode 81 = F29 KP_9 0x1002510 0x1002557

! Fourth line:
keycode 83 = F24 KP_4 0x100251C 0x1002560
keycode 84 = F25 KP_5 0x100253C 0x100256C
keycode 85 = F26 KP_6 0x1002524 0x1002563
keycode 86 = F17 F17 0x1002502 0x1002551

! Fifth line:
keycode 87 = F21 KP_1 0x1002514 0x100255A
keycode 88 = F22 KP_2 0x1002534 0x1002569
keycode 89 = F23 KP_3 0x1002518 0x100255D

! Sixth line:
!keycode 90 = F20 KP_0
keycode 90 = Super_R Super_R
keycode 91 = F18 KP_Decimal
keycode 104 = F19 F19

!------------------------------------------------------------
! Modifiers
!------------------------------------------------------------

clear Shift
clear Lock
clear Control
clear Mod1
clear Mod2
clear Mod3
clear Mod4
clear Mod5

!!! In order of bits:
add Shift = Shift_L Shift_R
add Lock = Caps_Lock
add Control = Control_L Control_R
add Mod1 = Num_Lock
add Mod2 = Alt_L Alt_R Mode_switch
add Mod3 = Meta_L Meta_R
add Mod4 = Super_L Super_R
add Mod5 = Hyper_L Hyper_R




!----------------------------------------------------------------------------
! Multi_key Sequences (»Compose«)
! <URL:http://www.in-ulm.de/~mascheck/X11/compose.txt>
!
! '!' is the comment character for xmodmap(1), thus it's omnipresent here.
!
! See also:
! MIT: $SRC/xc/nls/X11/locale/Compose/iso8859-1
! XFree86: /usr/X11R6/lib/X11/locale/iso8859-1/Compose
! Solaris' Openwin: /usr/openwin/include/X11/Suncompose.h
! /usr/openwin/lib/locale/*/Compose
! Irix6: compose(5)
!
! <URL:http://www.in-ulm.de/~mascheck/X11/keysyms.txt>
!----------------------------------------------------------------------------
!
! In X11R6, there are even 7bit compose sequences, like for video terminals:
!
! + + : #
! A A : @
! ( ( : [
! ) ) : ]
! ( - : {
! ) - : }
! / / , / < :
! > <space> : ^
! / ^, V L : |
! - <space> : ~
!
!----------------------------------------------------------------------------
! 8bit sequences in rather compressed form:
!
! From: Christian Weisgerber
! Newsgroups: de.comp.os.unix.x11
! Subject: Re: 8 keysym pro keycode !? -- wie benutzen ?
! Message-ID: <869tp8$5d4$
!
! | no-break space ¦ broken bar ||
! ­ soft hyphen -- µ micro sign /U
! ¡ inverted ! !! ¿ inverted ? ??
! ¢ cent sign C/ or C| £ pound sign L- or L ! ¤ currency sign XO or X0 ¥ yen sign Y- or Y ! § section sign SO or S! or S0 ¶ pilcrow sign P!
! ¨ diaeresis "" or " ¯ macron _^ or -^
! ´ acute accent '' ¸ cedilla ,,
! © copyright sign CO or C0 ® registered sign RO
! ª feminine ordinal A_ º masculine ordinal O_
! « opening angle brackets << » closing angle brakets >>
! ° degree sign 0^ ¹ superscript 1 1^
! ² superscript 2 2^ ³ superscript 3 3^
! ± plus or minus sign +- ¼ fraction one-quarter 14
! ½ fraction one-half 12 ¾ fraction three-quarter 34
! · middle dot .^ or .. ¬ not sign -,
! × multiplication sign xx ÷ division sign :-
!
! À A grave A` à a grave a`
! Á A acute A' á a acute a'
! Â A circumflex A^ â a circumflex a^
! Ã A tilde A~ ã a tilde a~
! Ä A diaeresis A" ä a diaeresis a"
! Å A ring A* å a ring a*
! Æ AE ligature AE æ ae ligature ae
!
! Ç C cedilla C, ç c cedilla c,
!
! È E grave E` è e grave e`
! É E acute E' é e acute e'
! Ê E circumflex E^ ê e circumflex e^
! Ë E diaeresis E" ë e diaeresis e"
!
! Ì I grave I` ì i grave i`
! Í I acute I' í i acute i'
! Î I circumflex I^ î i circumflex i^
! Ï I diaeresis I" ï i diaeresis i"
!
! Ð capital eth D- ð small eth d-
!
! Ñ N tilde N~ ñ n tilde n~
!
! Ò O grave O` ò o grave o`
! Ó O acute O' ó o acute o'
! Ô O circumflex O^ ô o circumflex o^
! Õ O tilde O~ õ o tilde o~
! Ö O diaeresis O" ö o diaeresis o"
! Ø O slash O/ ø o slash o/
!
! Ù U grave U` ù u grave u`
! Ú U acute U' ú u acute u'
! Û U circumflex U^ û u circumflex u^
! Ü U diaeresis U" ü u diaeresis u"
!
! Ý Y acute Y' ý y acute y'
!
! Þ capital thorn TH þ small thorn th
!
! ß German small sharp s ss ÿ y diaeresis y"



--
__Pascal Bourguignon__
http://www.informatimago.com/
Avatar
Lucas Levrel
Le 14 septembre 2013, Pascal J. Bourguignon a écrit :

Non, c'est même trivial.







Vue la suite, on n'a pas la même définition du mot !

Merci pour ces explications, que j'ai aussitôt archivées. Elles suscitent
trois questions :

add Mod2 = Alt_L Alt_R Mode_switch


(...)
Maintenant, le bit Shift et le bit correspondant au symbole Mode_Switch
sont un peu spéciaux, car ils sont utilisés pour sélectionner le symbole
correspondant à un code (man xmodmap) :



Avec ta définition de Mod2, si tu appuies (dans un terminal) sur
Alt+touche tu obtiens le 3e symbole de la touche ? Ou seul Mode_switch le
permet, ce qui signifie que les bits modificateurs ne suffisent pas à
décrire toutes les altérations possibles des touches ?

Noter coment je distingue une touche Alt de Meta, ce qui me permet de
lier dans emacs de nombreuses commandes sur A- au lieu de M- qui est
déjà bien occupé. J'ai aussi une touche Hyper, donc j'ai le choix entre
A- et H- pour mes commandes.


(...)
Il semble qu'emacs regarde les bits modificateurs pour déterminer si une
touche a été tapée avec un modificateur, et non pas le fait qu'un
symbole modificateur ait été transmis avant et après la touche.



Quelle est la corespondance entre les modificateurs d'emacs et les bits
modificateurs ? D'après ce que tu dis, il semble qu'elle soit codée en
dur, et qu'il faille donc garder l'ordre que tu donnes si on ne veut pas
se retrouver avec par exemple Meta_L qui donne H- !

! ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
! `~∞∝ 1!₁¹ 2@₂² 3#₃³ 4$₄⁴ 5%₅⁵ 6^₆⁶ 7₇⁷ 8*₈⁸ 9(₉⁹ 0)₀⁰ -_⊣⊥ =+⊢⊤ Backspace
! TAB qQωΩ wW€¢ eEεΕ rRρΡ tTτΤ yYψΨ uUυΥ iIιΙ oOοΟ pPπΠ [{«∀ ]}»∃ |∖∫
! Control aAαΑ sSσΣ dDδΔ fFφΦ gGγΓ hHθΘ jJηΗ kKκΚ lLλΛ ;:⊆⎕ '"⊇○ Return
! Shift zZζΖ xXξΞ cCχΧ vV∇√ bBβΒ nNνΝ mMμΜ ,<≤∧ .>≥∨ /?≠¬ Shift
! Multi_key Alt Meta ---- Space DigitSpace ----- Meta ModeSw Hyper Control
!
!
! Pause ∂ CapsLock Print
! Insert ∈∉ Home ⇒⇔ Prior ≡≢
! Delete ∅≣ End ∴ ∵ Next ≈≇
!
! Up ↑∩
! Left ←⊂ Down ↓∪ Right →⊃



Ça donne des idées. Maintenant il reste à repeindre les touches du
clavier !

keycode 67 = F1 XF86_Switch_VT_1 F21
!keycode 127 = Print Sys_Req F35



Il doit rester des subtilités, car normalement le changement de VT se fait
avec Control-Alt-Fx et Sys_Req avec Alt-Print, non ? (Ou bien ton mapping
les met effectivement sur Shift-Fx et Shift-Print ?)

--
LL
Avatar
Pascal J. Bourguignon
Lucas Levrel writes:

Le 14 septembre 2013, Pascal J. Bourguignon a écrit :

Non, c'est même trivial.







Vue la suite, on n'a pas la même définition du mot !

Merci pour ces explications, que j'ai aussitôt archivées. Elles
suscitent trois questions :

add Mod2 = Alt_L Alt_R Mode_switch


(...)
Maintenant, le bit Shift et le bit correspondant au symbole Mode_Switch
sont un peu spéciaux, car ils sont utilisés pour sélectionner le symbole
correspondant à un code (man xmodmap) :



Avec ta définition de Mod2, si tu appuies (dans un terminal) sur
Alt+touche tu obtiens le 3e symbole de la touche ? Ou seul Mode_switch
le permet, ce qui signifie que les bits modificateurs ne suffisent pas
à décrire toutes les altérations possibles des touches ?



Oui, seul Mode_switch, car bien qu'emacs (et je suppose les autres
applications) utilise les bits de modificateur pour savoir si un
modificateur a été pressé, il regarde en fait le symbole qui correspond.
Sinon on ne pourrait pas assigner les symboles à n'importe quel bit.
D'autre part, Mode_switch est utilisé par le pilote clavier de X, pour
convertir le code de la touche en symbole avant même de l'envoyer aux
applications. Donc j'ai l'impression que Mode_switch lui même ne doit
pas être envoyé aux applications.


Noter coment je distingue une touche Alt de Meta, ce qui me permet de
lier dans emacs de nombreuses commandes sur A- au lieu de M- qui est
déjà bien occupé. J'ai aussi une touche Hyper, donc j'ai le choix entre
A- et H- pour mes commandes.


(...)
Il semble qu'emacs regarde les bits modificateurs pour déterminer si une
touche a été tapée avec un modificateur, et non pas le fait qu'un
symbole modificateur ait été transmis avant et après la touche.



Quelle est la corespondance entre les modificateurs d'emacs et les
bits modificateurs ? D'après ce que tu dis, il semble qu'elle soit
codée en dur, et qu'il faille donc garder l'ordre que tu donnes si on
ne veut pas se retrouver avec par exemple Meta_L qui donne H- !



Non, ce n'est pas en dur, emacs utilise le symbole, mais à condition
que le bit modificateur correpondant soit mis à 1.


! ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
! `~∞∝ 1!₁¹ 2@₂² 3#₃³ 4$₄⁴ 5%₅⁵ 6^₆⁶ 7₇⁷ 8*₈⁸ 9(₉⁹ 0)₀⁰ -_⊣⊥ =+⊢⊤ Backspace
! TAB qQωΩ wW€¢ eEεΕ rRρΡ tTτΤ yYψΨ uUυΥ iIιΙ oOοΟ pPπΠ [{«∀ ]}»∃ |∖∫
! Control aAαΑ sSσΣ dDδΔ fFφΦ gGγΓ hHθΘ jJηΗ kKκΚ lLλΛ ;:⊆⎕ '"⊇○ Return
! Shift zZζΖ xXξΞ cCχΧ vV∇√ bBβΒ nNνΝ mMμΜ ,<≤∧ .>≥∨ /?≠¬ Shift
! Multi_key Alt Meta ---- Space DigitSpace ----- Meta ModeSw Hyper Control
!
!
! Pause ∂ CapsLock Print
! Insert ∈∉ Home ⇒⇔ Prior ≡≢
! Delete ∅≣ End ∴ ∵ Next ≈≇
!
! Up ↑∩
! Left ←⊂ Down ↓∪ Right →⊃



Ça donne des idées. Maintenant il reste à repeindre les touches du
clavier !



D'où l'interrêt d'un clavier sans marquage :

http://www.daskeyboard.com/product/model-s-ultimate/
http://elitekeyboards.com/products.php?sub=leopold,tenkeyless&pidü200rcabn



Concernant emacs, il y a C-x 8 RET nom_d_un_caractere_unicode RET
Par exemple : C-x 8 RET intersection RET --> ∩
Pour voir toutes les combinaisons : C-x 8 C-h



keycode 67 = F1 XF86_Switch_VT_1 F21
!keycode 127 = Print Sys_Req F35



Il doit rester des subtilités, car normalement le changement de VT se
fait avec Control-Alt-Fx et Sys_Req avec Alt-Print, non ? (Ou bien ton
mapping les met effectivement sur Shift-Fx et Shift-Print ?)



Oui, mais là à partir de X, je l'ai sur S-Fx. D'un autre côté comme je
n'ai pas fait la modification équivalente sur le clavier de la console,
pour changer à partir de la console, c'est toujorus C-A-Fx.

Sinon ! introduit un commentaire dans .xmodmap, en fait sur la touche
127, j'ai:

keycode 127 = Super_R Super_R

J'ai plus souvent besoin de taper s- que Print ou Sys_Req :-)


--
__Pascal Bourguignon__
http://www.informatimago.com/
Avatar
Lucas Levrel
Merci pour tout.

--
LL
Eν οιδα οτι ουδεν οιδα (Σωκρατης)
Avatar
Stéphane Dutailly
Bonjour à tous,

Désolé de répondre si tard.


Le rapport, c'est que le tutorial t'apprends que M-: signifie qu'il faut
presser la touche 'Meta', taper la touche ':', et relacher la touche
'Meta'. Il mentionne aussi que 'Meta' peut être obtenue en tapant la
touche 'Alt' quand on n'a pas de touche 'Meta', ou que l'on peut aussi
de façon alternative taper la touche 'ESC' puis la touche ':' pour
obtenir le même résultat.

Donc sachant celà, quand on te dit:

Tu peux tester avec M-: (orgtbl-mode) RET









il n'y a absolument aucun moyen d'obtenir l'erreur:

arf... j'obtiens Symbol's function definition is void: M-:







Ce qui doit aider grandement.




A posteriori, je comprends clairement le message de Cyprien (je pense
avoir pigé les notations) mais en fait, je me suis précipité... sans
réfléchir... comme je le disais, cela n'a pas fait tilt :-( Je cherchais
du « prêt à l'emploi » et j'ai recopié bêtement (mais depuis je me suis
flagellé plusieurs fois :-) ).



En passant, si ça t'intéresse, tu peux lire le tutoriel sur emacs lisp:

An Introduction to Programming in Emacs Lisp
http://www.gnu.org/software/emacs/emacs-lisp-intro/ or M-: (info "(eintr)Top") RET
(for non-programmers)

Emacs Lisp Manual
http://www.gnu.org/software/emacs/manual/elisp.html or M-: (info "(elisp)Top") RET





Merci, j'essaierai de trouver un moment pour le lire.


J'essaie d'apprendre et je vous suis tous très reconnaissant de l'aide
que vous m'avez apportée depuis que j'ai commencé.



Donc en traduisant en clair tous nos cafouillages,

1- tu n'as pas besoin d'écrire une commande spéciale pour activer le
mode orgtbl car il y en a déjà une: elle s'appelle orgtbl-mode.
D'une manière générale, tout mode a une commande de même nom pour
l'activer ou le désactiver.

2- pour activer orgtbl-mode, tu tapes au choix :

C-u M-x orgtbl-mode RET
C-u 1 M-x orgtbl-mode RET
C-1 M-x orgtbl-mode RET
M-1 M-x orgtbl-mode RET

pour désactiver orgtbl-mode, tu tapes au choix :

C-u - M-x orgtbl-mode RET
C-- M-x orgtbl-mode RET
M-- M-x orgtbl-mode RET

pour l'inverser (l'activer quand il est inactif, l'inactiver quand il
est actif), tu tapes:

M-x orgtbl-mode RET

(En général, C-1 et C-- ne fonctionnent pas dans un terminal, mais
seulement en environnement graphique).


3- si tu veux le faire avec une touche, tu peux mettre l'expression
suivante dans ~/.emacs:

(global-set-key (kbd "<f12>") 'orgtbl-mode)

pour activer orgtbl-mode, tu tapes:

C-u <f12>
C-u 1 <f12>
C-1 <f12>
M-1 <f12>

pour désactiver orgtbl-mode, tu tapes:

C-u - <f12>
C-- <f12>
M-- <f12>

pour l'inverser (l'activer quand il est inactif, l'inactiver quand il
est actif), tu tapes:

<f12>

Maintenant, le petit truc, c'est que org-mode et orgtbl-mode sont
déclarés "autoload", ce qui signifie que ces fonctions sont définies
sans que tout le programme org soit chargé. Quand on les appelle la
première fois, le programme org est chargé (ce qui redéfini ces
fonctions avec leur code réél) et les exécute.


Ceci dit, il y a aussi une commande turn-on-orgtbl qui fait exactement
ce que tu veux aussi (mais qui fait double emploi avec C-u M-x
orgtbl-mode RET), donc:

4- si tu veux seulement charger et activer orgtbl-mode avec une touche,
tu peux mettre l'expression suivante dans ~/.emacs:

(global-set-key (kbd "<f12>") 'turn-on-orgtbl)

pour activer orgtbl-mode, tu tapes:

<f12>


Tu peux bien sur remplacer <f12> par n'importe quel nom de touche ou
combinaison que tu veux. Par exemple: H-o (si tu as une touche Hyper-),
s-t (si tu as une touche super-), <f34> si tu as une touche de fonction
numéro 34 (on peut avoir de <f1> à <f35> ;-) (Les touches peuvent se
configurer facilement comme on veut avec xmodmap quand on utilise X11).




Merci beaucoup pour toutes les précisions de ta réponse en tous cas!!

Stéphane
1 2