Kunci meta Bash awalnya didefinisikan seperti ini ( lib/readline/ChangeLog
):
Mon Jul 13 11:34:07 1992 Brian Fox (bfox@cubit)
* readline.c: (rl_variable_bind) New variable "meta-flag" if "on"
means force the use of the 8th bit as Meta bit. Internal variable
is called meta_flag.
Itu terjadi dengan cara ditafsirkan dengan ncurses dan xterm . Sebuah beberapa terminal yang disediakan untuk membuat fitur opsional ini (aspek yang tidak meluas Sebagian besar terminal Anda akan menemukan penggunaan perilaku hardcoded (dan tidak sangat menarik) The.. Terminfo halaman dokumen pengguna kemampuan ini terminal:
has_meta_key km km Has a meta key
(i.e., sets 8th-bit)
meta_off rmm mo turn off meta mode
meta_on smm mm turn on meta mode
(8th-bit on)
dan menjelaskan fitur:
Jika terminal memiliki "kunci meta" yang bertindak sebagai tombol shift, mengatur bit ke-8 dari setiap karakter yang ditransmisikan, fakta ini dapat ditunjukkan dengan km
. Jika tidak, perangkat lunak akan menganggap bahwa bit ke-8 adalah paritas dan biasanya akan dihapus. Jika string ada untuk menghidupkan dan mematikan "mode meta" ini, mereka dapat diberikan sebagai smm
dan rmm
.
Fitur yang berbeda, mengawali karakter pelarian sebagai respons terhadap Alt
kunci dimasukkan ke beberapa emulator terminal. Bash (sebenarnya readline
perpustakaan) mendokumentasikan penggunaan itu di changelog dari 2004:
lib/readline/callback.c
- use _rl_dispatch_callback and a chain of _rl_keyseq_contexts to
simulate the recursion used to decode multicharacter key sequences
(even things like ESC- as meta-prefix
Meta adalah kasus khusus dari kunci pengubah . Suka controldan shift, Anda menekannya pada saat yang sama dengan tombol lain dan berharap untuk melihat sesuatu yang berbeda dari menekan tombol itu sendiri. X menyediakan untuk kunci pengubah dengan menetapkan sedikit nilai pengubah yang diteruskan dalam peristiwa X untuk kunci. Penekanan tombol dapat berupa beberapa peristiwa X; X menyediakan fungsi untuk menggabungkan peristiwa ini sambil mempertahankan pengubah.
X juga mendefinisikan simbol untuk setiap tombol yang mungkin muncul pada keyboard Anda. Ini memberikan nilai-nilai lain (seperti Unicode) dengan penanganan khusus pada fungsi yang menggabungkan acara.
Tetapi "meta" adalah kasus khusus.
Aplikasi X tidak memiliki metakunci, kecuali dengan konvensi. X tidak memiliki definisi untuk kunci meta, atau pengubah meta. Secara konvensional, terminal mencari kunci- Altdan / atau salah satu dari pengubah yang diketahui xmodmap
, misalnya mod2
,. Fitur xkb yang lebih baru memperumit banyak hal (tetapi tidak memberikan peningkatan relatif terhadap diskusi ini) dengan menyediakan lapisan informasi lain untuk menemukan Altkuncinya.
Konvensi tentu saja dapat membawa Anda sejauh ini, mengingat tidak ada xmodmap
atau tidak xkb
tahu apa-apa tentang meta . xterm, misalnya, dapat dikonfigurasi, dan tidak semua pengguna ingin mengonfigurasi meta dengan cara yang sama. Misalnya, Altmungkin bukan meta-key yang dimaksudkan, misalnya, jika digunakan dalam translation
sumber daya. Kunci lain mungkin adalah meta key, tetapi pengguna (khususnya yang menggunakan urutan escape dalam bash) mungkin menginginkan karakter escape dikirim ketika mereka menekan Alt. Tetapi perlu diingat bahwa kecuali jika dikonfigurasi sebagai pengubah, tidak ada yang terjadi: xterm tidak menggabungkan peristiwa dengan sendirinya.
xterm memiliki beberapa pengaturan sumber daya (didokumentasikan di halaman manual ):
altIsNotMeta
dan altSendsEscape
(ditambahkan pada 2007 ).
eightBitInput
sejak 2006 sesuai dengan indera asli mode meta, dan ada urutan jalan keluar yang ditentukan untuk ini yang menyediakan smm
dan rmm
(mengatur / menghapus meta-mode) kemampuan terminal.
eightBitInput
telah dimodifikasi pada tahun 2003 untuk mempertimbangkan UTF-8 dengan menggeser nilai Unicode yang didekodekan oleh 128 daripada byte input mentah.
metaSendsEscape
berasal dari tahun 1999
eightBitInput
jauh lebih tua dari metaSendsEscape
. Itu telah menerapkan pilihan antara mode meta (menambahkan bit kedelapan) atau mengawali kunci dengan escapesejak X11R4 (1989). Tetapi fitur ditentukan pada startup: itu diperiksa selama inisialisasi untuk menentukan apakah input diatur untuk mengizinkan 8 bit atau hanya 7. Setelah itu, tidak berubah.
Beberapa orang menyamakan keduanya ( 8-bit dan escape-prefix), merujuk pada yang kedua sebagai mode meta . Bergantung pada sudut pandang Anda tentang masalah ini, eightBitInput
pengaturan sumber daya xterm adalah bagian dari solusi untuk mendapatkan meta-key yang bisa diterapkan.
Bacaan lebih lanjut:
MENU
kunci Anda diperhatikan oleh X? Apa pengelola jendela yang Anda gunakan - beberapa di antaranya dapat membantu Anda mendefinisikan ulang kunci Anda.