Ketika Anda menekan tombol atau kombinasi tombol di terminal, itu dikirim ke aplikasi yang berjalan di terminal sebagai urutan satu atau lebih karakter. Misalnya, ketika Anda menekan a, aplikasi menerima a
. Ketika Anda menekan Enter, aplikasi menerima karakter CR
(alias ^M
(diucapkan "control-emm"), alias nomor 13, alias \r
atau \015
). Kombinasi kunci yang terlibat Altbiasanya ditransmisikan sebagai karakter ESC
( ^[
alias \e
atau atau \033
) diikuti oleh urutan untuk kombinasi tombol atau kunci tanpa Alt. Tombol fungsi dan kombinasi tombol lainnya dikirimkan sebagai urutan keluar yang dimulai dengan \e[
atau \eO
.
Urutan lolos tidak sepenuhnya standar, dan terminal biasanya mengabaikan atribut tertentu untuk kunci tertentu. Sebagai contoh, Ctrl+ Shift+ lettersering dikirimkan persis seperti Ctrl+ lettersecara default.
Anda dapat melihat apa yang dikirim terminal Anda untuk kombinasi tombol dengan menekan Ctrl+ Vdiikuti oleh kombinasi tombol tersebut di prompt shell, atau C-q
atau C-h c
diikuti oleh kombinasi tombol di Emacs.
Dengan beberapa emulator terminal, Anda dapat mengonfigurasi urutan pelepasan untuk setiap tombol. Pada Xterm, ini dilakukan melalui sumber X . Sebagian besar pengaturan membaca sumber daya dari ~/.Xresources
saat X dimulai, dan Anda dapat memuat file secara manual xrdb -merge ~/.Xresources
.
Term.VT100.translations: #override \n\
Ctrl ~Shift ~Meta <key>Return: string("\033[73;5~") \n\
Ctrl Shift ~Meta <key>percent: string("\033[37;6~")
Sebuah konvensi umum menggunakan urutan melarikan diri dari formulir ESC [ number1 ; number2 ~
untuk tombol fungsi dengan pengubah. number1
menunjukkan tombol fungsi ( 15
untuk 24
untuk F5ke F12- untuk alasan historis, F1 melalui F4memiliki escape sequence yang berbeda) dan number2
menunjukkan modifikator ( 2
untuk Shift, 3
untuk Meta, 5
untuk Ctrl, 7
untuk Ctrl+ Meta, dan menambahkan 1 untuk Shiftdengan setidaknya satu dari Ctrlatau Meta).
Emacs menerjemahkan urutan pelarian ke dalam representasi kunci internal melalui input-decode-map
ataulocal-function-key-map
(atau function-key-map
sebelum Emacs 23).
(define-key local-function-key-map "\033[73;5~" [(control return)])
(define-key local-function-key-map "\033[37;6~" [(control ?L)])
infocmp $TERM
?