Ti sentirai più a tuo agio in un X11 Emacs, che può ricevere input da tastiera e visualizzare testo senza passare attraverso la codifica e la decodifica per il terminale . Il motivo principale per utilizzare un editor in modalità testo è eseguirlo all'interno dello schermo o di tmux su una macchina remota, ma grazie a Tramp, di solito è più facile modificare il file remoto in Emacs locale. Detto questo, puoi fare quello che vuoi finché il tuo emulatore di terminale collabora, come nel caso di Xterm.
Quando si preme un tasto o una combinazione di tasti in un terminale, questo viene trasmesso all'applicazione in esecuzione nel terminale come una sequenza di uno o più caratteri. Ad esempio, quando si preme a, l'applicazione riceve a. Quando si preme Enter, l'applicazione riceve il carattere CR(aka ^M(pronunciato "control-emm"), aka personaggio numero 13, aka \ro \015). Le combinazioni di tasti che coinvolgono Altsono in genere trasmesse come carattere ESC(a.ka. ^[aka \eo \033) seguito dalla sequenza per il tasto o la combinazione di tasti senza Alt. I tasti funzione e altre combinazioni di tasti vengono trasmessi come sequenze di escape che iniziano con \e[o \eO.
Le sequenze di escape non sono completamente standardizzate e i terminali in genere ignorano determinati attributi per determinate chiavi. Ad esempio, i modificatori hyper e super sono generalmente ignorati. Puoi vedere cosa invia il tuo terminale per una combinazione di tasti premendo Ctrl+ Vseguito da quella combinazione di tasti nel prompt della shell o C-qoppure C-h cseguito dalla combinazione di tasti in Emacs.
Xterm consente di configurare le sequenze di escape per ogni chiave attraverso risorse X . La maggior parte delle configurazioni legge le risorse ~/.Xresourcesall'avvio di X e puoi caricare il file manualmente con 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~")
Una convenzione comune utilizza sequenze di escape del modulo ESC [ number1 ; number2 ~per i tasti funzione con modificatori. number1indica il tasto funzione ( 15da 24per F5a F12- per ragioni storiche, da F1 a F4hanno sequenze di escape diverse) e number2indica il modificatore ( 2per Shift, 5per Ctrl, 3per Meta, 8per Ctrl+ Metae aggiungi 1 per + Shift- no, non è molto coerente).
Dovrai specificare i modificatori Hyper e Super tramite il loro numero, come Mod1attraverso Mod5. Esegui xmodmap -pmper visualizzare la mappatura dei tasti palestra ai modificatori. Ad esempio, se Super_Lè associato a Mod5, la seguente riga (utilizzare questo caso esatto) definisce un'associazione per Super+ Space:
~Ctrl ~Meta Mod5 <Key> space: string("\033[32;16~") \n\
Emacs traduce le sequenze di escape nella sua rappresentazione chiave interna attraverso input-decode-mapolocal-function-key-map (o function-key-mapprima di Emacs 23).
(define-key local-function-key-map "\033[32;16~" [(super ?\ )])
Questo post è realizzato per il 80% in materiale riciclato. Esistono terminali Linux in grado di gestire tutte le combinazioni di tasti?