Це послідовності символів, надіслані вашим терміналом, коли ви натискаєте задану клавішу. Нічого не пов’язаного з 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
(тут припускаючи ncurses
infocmp):
$ infocmp -L1 | grep -F '=\E[Z'
back_tab=\E[Z,
key_btab=\E[Z,
Комбінації клавіш, на зразок Ctrl-Up, не мають відповідних записів у terminfo
базі даних, тому, щоб дізнатися, що вони надсилають, прочитайте джерело чи документацію відповідного терміналу або спробуйте це sed -n l
описаним вище методом.
bind -p
.