Vous serez plus à l'aise dans un X11 Emacs, qui peut recevoir une entrée au clavier et afficher du texte sans passer par l' encodage et le décodage du terminal . La principale raison d'utiliser un éditeur de mode texte est de l'exécuter à l'intérieur de l'écran ou de tmux sur une machine distante, mais grâce à Tramp, il est généralement plus facile de modifier le fichier distant dans votre Emacs local. Cela étant dit, vous pouvez faire ce que vous voulez tant que votre émulateur de terminal coopère, ce qui est le cas avec Xterm.
Lorsque vous appuyez sur une touche ou une combinaison de touches dans un terminal, elle est transmise à l'application exécutée dans le terminal sous la forme d'une séquence d'un ou plusieurs caractères. Par exemple, lorsque vous appuyez sur a, l'application reçoit a
. Lorsque vous appuyez sur Enter, l'application reçoit le caractère CR
(aka ^M
(prononcé "control-emm"), aka caractère numéro 13, aka \r
ou \015
). Les combinaisons de touches impliquant Altsont généralement transmises sous la forme du caractère ESC
( ^[
alias aka \e
ou \033
) suivi de la séquence de la touche ou de la combinaison de touches sans Alt. Les touches de fonction et autres combinaisons de touches sont transmises sous forme de séquences d'échappement commençant par \e[
ou \eO
.
Les séquences d'échappement ne sont pas entièrement standardisées et les terminaux ignorent généralement certains attributs pour certaines clés. Par exemple, les hyper et super modificateurs sont généralement ignorés. Vous pouvez voir ce que votre terminal envoie pour une combinaison de touches en appuyant sur Ctrl+ Vsuivi de cette combinaison de touches dans une invite du shell, ou C-q
ou C-h c
suivi de la combinaison de touches dans Emacs.
Xterm vous permet de configurer les séquences d'échappement pour chaque clé par les ressources X . La plupart des configurations lisent les ressources à partir du ~/.Xresources
démarrage de X, et vous pouvez charger le fichier manuellement avec xrdb -merge ~/.Xresources
.
XTerm.VT100.translations: #override \n\
Ctrl ~Shift ~Meta <Key> Return: string("\033[73;5~") \n\
Ctrl Shift ~Meta <Key> percent: string("\033[37;6~")
Une convention courante utilise des séquences d'échappement du formulaire ESC [ number1 ; number2 ~
pour les touches de fonction avec des modificateurs. number1
indique la touche de fonction ( 15
à 24
pour F5à F12- pour des raisons historiques, F1 à F4ont des séquences d'échappement différentes) et number2
indique le modificateur ( 2
pour Shift, 5
pour Ctrl, 3
pour Meta, 8
pour Ctrl+ Metaet ajoutez 1 pour + Shift- non, ce n'est pas très cohérent).
Vous devrez spécifier les modificateurs Hyper et Super à travers leur nombre, comme à Mod1
travers Mod5
. Exécutez xmodmap -pm
pour voir le mappage des clés-clés aux modificateurs. Par exemple, si Super_L
est lié à Mod5, la ligne suivante (utilisez ce cas exact) définit une liaison pour Super+ Space:
~Ctrl ~Meta Mod5 <Key> space: string("\033[32;16~") \n\
Emacs traduit les séquences d'échappement en sa représentation de clé interne via input-decode-map
oulocal-function-key-map
(ou function-key-map
avant Emacs 23).
(define-key local-function-key-map "\033[32;16~" [(super ?\ )])
Ce poste est composé à 80% de matériaux recyclés. Existe-t-il des terminaux Linux qui peuvent gérer toutes les combinaisons de touches?