Anda akan lebih nyaman dengan X11 Emacs, yang dapat menerima input keyboard dan menampilkan teks tanpa melalui pengkodean dan decoding untuk terminal . Alasan utama untuk menggunakan editor mode teks adalah untuk menjalankannya di dalam layar atau tmux pada mesin jarak jauh, tetapi berkat Tramp, biasanya lebih mudah untuk mengedit file jarak jauh di Emacs lokal Anda. Yang sedang berkata, Anda dapat melakukan apa yang Anda inginkan selama emulator terminal Anda bekerja sama, seperti halnya dengan Xterm.
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 alias \e
atau \033
) diikuti oleh urutan untuk kombinasi tombol atau kunci tanpa Alt. Tombol fungsi dan kombinasi tombol lainnya ditransmisikan 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, hyper dan super modifier biasanya diabaikan. 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.
Xterm memungkinkan Anda mengkonfigurasi urutan escape untuk setiap tombol melalui sumber X . Sebagian besar pengaturan membaca sumber daya dari ~/.Xresources
saat X dimulai, dan Anda dapat memuat file secara manual 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~")
Sebuah konvensi umum menggunakan urutan melarikan diri dari bentuk 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, 5
untuk Ctrl, 3
untuk Meta, 8
untuk Ctrl+ Meta, dan tambahkan 1 untuk + Shift- tidak, itu sangat tidak konsisten).
Anda harus menentukan pengubah Hyper dan Super melalui nomor mereka, sebagai Mod1
melalui Mod5
. Jalankan xmodmap -pm
untuk melihat pemetaan keyyms ke pengubah. Misalnya, jika Super_L
terikat ke Mod5, maka baris berikut (gunakan case persis ini) mendefinisikan pengikatan untuk Super+ Space:
~Ctrl ~Meta Mod5 <Key> space: string("\033[32;16~") \n\
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[32;16~" [(super ?\ )])
Posting ini terbuat dari bahan daur ulang 80% dari Apakah ada terminal linux yang dapat menangani semua kombinasi tombol?
(global-set-key "\033[32;16~" 'set-rectangular-region-anchor)
. Tetapi untuk melengkapi, saya mencoba didefine-key
atas Anda , tetapi saya tidak bisa kemudian memicu(global-set-key (kbd "s-SPC") 'set-rectangular-region-anchor)
. Itu hanya mencetak; 16 ~ di buffer. Akan lebih baik untuk mengikat urutan itu ke (kbd "s-SPC") sehingga saya memiliki urutan kunci terikat dan saya dapat menetapkan ulang ke perintah lain.C-h l
mengembalikan yang berikut ini dengan menekan s-SPC sekarang:ESC [ 3 2 ; 1 6 ~
tetapi emacs masih mengeluh bahwaM-[ 32 is undefined
function-key-map
bukanlocal-function-key-map
? Ini mungkin masalah kapan Anda mengaturlocal-function-key-map
, karena tergantung terminal.Jika Anda ingin menginstal paket Emacs dan mengkonfigurasi terminal Anda, saya menulis paket Emacs yang dapat mengajarkan Emacs dan terminal bagaimana mengenali dengan benar semua tombol keyboard PC dan kombinasi tombol pengubah:
https://github.com/CyberShadow/term-keys
Pengkodean pengubah Super tidak diaktifkan secara default, tetapi paket dapat disesuaikan dan memungkinkan mengkonfigurasi kombinasi tombol pengubah mana yang dikodekan. Untuk mengaktifkan kombinasi kunci penyandian yang menyertakan Super modifier, setel
term-keys/want-key-p-func
ke fungsi yang mengembalikant
kapan(elt mods 3)
tidak ada nihil (lihat implementasi default untuk penjelasan).sumber
Saya memiliki yang berikut ini di file init saya:
Ini memungkinkan saya untuk mengirim kunci super dan hyper menggunakan tombol fungsi.
sumber
Jawaban singkat: gunakan
Konsole
.Penjelasan:
local-function-key-map
memiliki pemetaan entriC-x @ s
untukevent-apply-super-modifier
.Konsole
petaSuper
(tombol logo Windows) ke urutan pelarian^X@s
(yang tampaknya tidak didokumentasikan di mana pun, saya menemukannya secara kebetulan). Anda dapat mencoba ini dengan membukaKonsole
dan menekan mis Ctrl-v Win-o.sumber