Це послідовності символів, надіслані вашим терміналом, коли ви натискаєте задану клавішу. Нічого не пов’язаного з bash чи readline як такою, але ви хочете знати, яку послідовність символів передає певна клавіша чи комбінація клавіш, якщо ви хочете налаштувати readlineщось робити при заданому натисканні клавіші.
Коли ви натискаєте Aклавішу, термінали зазвичай надсилають aсимвол (0x61). Якщо натиснути <Ctrl-I>або <Tab>, то загалом надішліть ^Iсимвол, також відомий як TABабо \t(0x9). Більшість функціональних і навігаційних клавіш зазвичай надсилають послідовність символів, яка починається з ^[(control- [), також відомий як ESCабо \e(0x1b, 033 восьмеричний), але точна послідовність змінюється від терміналу до терміналу.
Найкращий спосіб дізнатися, яку клавішу або комбінацію клавіш надсилає для вашого терміналу, - це запустити sed -n lі набрати його, після чого Enterнатисніть клавіатуру. Тоді ви побачите щось на кшталт:
$ sed -n l
^[[1;5A
\033[1;5A$
Перший рядок викликається локальним терміналом, echoвиконаним термінальним пристроєм (він може бути не надійним, оскільки налаштування термінального пристрою впливатимуть на нього).
Другий рядок виводиться по sed. Це $не потрібно включати, це лише показати вам, де знаходиться кінець рядка.
Вище це означає , що Ctrl-Up(який я натиснув) відправити 6 символів ESC, [, 1, ;, 5і A(0x1b 0x5b 0x31 0x3B 0x35 0x41)
База terminfoданих записує ряд послідовностей для ряду загальних ключів для ряду терміналів (виходячи з $TERMзначення).
Наприклад:
TERM=rxvt tput kdch1 | sed -n l
Підкаже, яка послідовність відходу надсилається rxvtнатисканням Deleteклавіші.
Ви можете шукати, який ключ відповідає заданій послідовності з вашим поточним терміналом infocmp(тут припускаючи ncursesinfocmp):
$ infocmp -L1 | grep -F '=\E[Z'
back_tab=\E[Z,
key_btab=\E[Z,
Комбінації клавіш, на зразок Ctrl-Up, не мають відповідних записів у terminfoбазі даних, тому, щоб дізнатися, що вони надсилають, прочитайте джерело чи документацію відповідного терміналу або спробуйте це sed -n lописаним вище методом.
bind -p.