Khóa meta của Bash ban đầu được định nghĩa như thế này ( 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.
Điều đó xảy ra là cách nó được giải thích với ncurses và xterm . Một vài thiết bị đầu cuối được cung cấp để làm tính năng tùy chọn này (khía cạnh đó không phải là phổ biến Hầu hết các thiết bị đầu cuối, bạn sẽ gặp phải sử dụng hành vi hardcoded (và không phải là rất thú vị) Các.. Terminfo văn trang hướng dẫn những khả năng thiết bị đầu cuối:
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)
và giải thích tính năng:
Nếu thiết bị đầu cuối có "khóa meta" hoạt động như một phím shift, thiết lập bit thứ 8 của bất kỳ ký tự nào được truyền, thì thực tế này có thể được chỉ ra bằng km
. Mặt khác, phần mềm sẽ cho rằng bit thứ 8 là tương đương và nó thường sẽ bị xóa. Nếu các chuỗi tồn tại để bật và tắt "chế độ meta" này, chúng có thể được cung cấp dưới dạng smm
và rmm
.
Một tính năng khác, tiền tố một ký tự thoát để đáp ứng với Alt
khóa đã được tích hợp vào một số trình giả lập thiết bị đầu cuối. Bash (thực ra là readline
thư viện) tài liệu sử dụng trong thay đổi của nó từ năm 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 là một trường hợp đặc biệt của khóa bổ trợ . Giống như controlvà shift, bạn nhấn nó cùng lúc với một phím khác và mong muốn thấy một cái gì đó khác với việc tự bấm phím. X cung cấp cho các khóa bổ trợ bằng cách gán một bit trong giá trị sửa đổi được truyền trong sự kiện X cho khóa. Các phím bấm có thể là nhiều sự kiện X; X cung cấp các hàm để kết hợp các sự kiện này trong khi vẫn giữ các bộ sửa đổi.
X cũng xác định các ký hiệu cho từng phím có thể xuất hiện trên bàn phím của bạn. Nó cung cấp cho các giá trị khác (như Unicode) bằng cách xử lý đặc biệt trong các hàm kết hợp các sự kiện.
Nhưng "meta" là một trường hợp đặc biệt.
Các ứng dụng X không có metakhóa, ngoại trừ theo quy ước. X không có định nghĩa cho khóa meta hoặc công cụ sửa đổi meta. Thông thường, các thiết bị đầu cuối tìm kiếm Alt-key và / hoặc một trong những công cụ sửa đổi được biết đến xmodmap
, ví dụ , mod2
. Tính năng xkb sau này làm phức tạp mọi thứ (nhưng không cải thiện liên quan đến cuộc thảo luận này) bằng cách cung cấp một lớp thông tin khác để tìm Altkhóa.
Công ước tất nhiên có thể đưa bạn đến nay, với điều kiện là cả hai đều xmodmap
không xkb
biết gì về meta . xterm, chẳng hạn, có thể định cấu hình và không phải tất cả người dùng đều muốn định cấu hình meta theo cùng một cách. Ví dụ, Altcó thể không phải là khóa meta dự định, ví dụ: nếu nó được sử dụng trong translation
tài nguyên. Một khóa khác có thể là khóa meta, nhưng người dùng (đặc biệt là những người sử dụng chuỗi thoát trong bash) có thể muốn một ký tự thoát được gửi khi họ nhấn Alt. Nhưng hãy nhớ rằng trừ khi nó được cấu hình như một công cụ sửa đổi, điều đó không xảy ra: xterm không tự kết hợp các sự kiện.
xterm có một số cài đặt tài nguyên (được ghi lại trong trang thủ công ):
altIsNotMeta
và altSendsEscape
(được thêm vào năm 2007 ).
eightBitInput
từ năm 2006 tương ứng với ý nghĩa ban đầu của chế độ meta và có một chuỗi thoát được xác định cho điều này cung cấp các khả năng smm
và rmm
(thiết lập / loại bỏ chế độ meta).
eightBitInput
đã được sửa đổi vào năm 2003 để đưa UTF-8 vào tài khoản bằng cách thay đổi các giá trị Unicode được giải mã bằng 128 thay vì các byte đầu vào thô.
metaSendsEscape
ngày từ năm 1999
eightBitInput
già hơn nhiều metaSendsEscape
. Điều đó đã thực hiện lựa chọn giữa chế độ meta (thêm bit thứ tám) hoặc tiền tố một khóa có escapetừ X11R4 (1989). Nhưng tính năng đã được xác định khi khởi động: nó đã được kiểm tra trong quá trình khởi tạo để xác định xem đầu vào được đặt thành cho phép 8 bit hay chỉ 7. Sau đó, nó không thay đổi.
Một số người đánh đồng hai ( tiền tố 8 bit và tiền tố thoát), coi cái sau là chế độ meta . Tùy thuộc vào quan điểm của bạn về vấn đề này, eightBitInput
cài đặt tài nguyên của xterm là một phần của giải pháp để có được một siêu khóa khả thi.
Đọc thêm:
MENU
chìa khóa của bạn thậm chí được chú ý bởi X? Bạn đang sử dụng trình quản lý cửa sổ nào - một số trong số chúng có thể giúp bạn xác định lại các khóa của mình.