Đó là các chuỗi ký tự được gửi bởi thiết bị đầu cuối của bạn khi bạn nhấn một phím nhất định. Không có gì để làm với bash hoặc readline mỗi se, nhưng bạn sẽ muốn biết chuỗi ký tự mà một tổ hợp phím hoặc khóa đã gửi sẽ gửi nếu bạn muốn định cấu hình readlineđể làm gì đó khi nhấn phím đã cho.
Khi bạn nhấn Aphím, thông thường các thiết bị đầu cuối sẽ gửi aký tự (0x61). Nếu bạn nhấn <Ctrl-I>hoặc <Tab>, sau đó thường gửi ^Iký tự còn được gọi là TABhoặc \t(0x9). Hầu hết các phím chức năng và điều hướng thường gửi một chuỗi các ký tự bắt đầu bằng ^[(control- [), còn được gọi là ESChoặc \e(0x1b, 033 bát phân), nhưng chuỗi chính xác thay đổi từ thiết bị đầu cuối sang thiết bị đầu cuối.
Cách tốt nhất để tìm hiểu những gì một tổ hợp phím hoặc khóa gửi cho thiết bị đầu cuối của bạn, được chạy sed -n lvà nhập nó theo sau Entertrên bàn phím. Sau đó, bạn sẽ thấy một cái gì đó như:
$ sed -n l
^[[1;5A
\033[1;5A$
Dòng đầu tiên được gây ra bởi thiết bị đầu cuối cục bộ echođược thực hiện bởi thiết bị đầu cuối (nó có thể không đáng tin cậy vì cài đặt thiết bị đầu cuối sẽ ảnh hưởng đến nó).
Dòng thứ hai là đầu ra của sed. Điều $này không được bao gồm, nó chỉ cho bạn biết nơi kết thúc của dòng.
Trên phương tiện rằng Ctrl-Up(mà tôi đã ép) gửi 6 ký tự ESC, [, 1, ;, 5và A(0x1B 0x5b 0x31 0x3b 0x35 0x41)
Cơ terminfosở dữ liệu ghi lại một số chuỗi cho một số khóa chung cho một số thiết bị đầu cuối (dựa trên $TERMgiá trị).
Ví dụ:
TERM=rxvt tput kdch1 | sed -n l
Sẽ cho bạn biết chuỗi thoát nào được gửi bằng rxvtcách nhấn Deletephím.
Bạn có thể tra cứu khóa nào tương ứng với một chuỗi đã cho với thiết bị đầu cuối hiện tại của bạn với infocmp(ở đây giả sử ncursesinfocmp):
$ infocmp -L1 | grep -F '=\E[Z'
back_tab=\E[Z,
key_btab=\E[Z,
Các kết hợp chính như Ctrl-Upkhông có các mục tương ứng trong terminfocơ sở dữ liệu, vì vậy để tìm hiểu những gì chúng gửi, hãy đọc nguồn hoặc tài liệu cho thiết bị đầu cuối tương ứng hoặc thử với sed -n lphương pháp được mô tả ở trên.
bind -p.