Bunlar, belirli bir tuşa bastığınızda terminaliniz tarafından gönderilen karakter dizileridir. Tek başına bash veya readline ile ilgisi yoktur, ancak readline
belirli bir tuşa basıldığında bir şeyler yapmak üzere yapılandırmak istiyorsanız, belirli bir tuşun veya tuş kombinasyonunun hangi karakter dizisini gönderdiğini bilmek isteyeceksiniz .
Tuşuna bastığınızda Atuşu, genellikle terminalleri göndermek a
(0x61) karakteri. <Ctrl-I>
Veya tuşuna basarsanız <Tab>
, genellikle veya (0x9) ^I
olarak da bilinen karakteri gönderin . İşlev ve gezinme tuşlarının çoğu genellikle (control- [) ile başlayan veya (0x1b, 033 octal) olarak da bilinen karakter dizisini gönderir , ancak tam dizilim terminalden terminale değişir.TAB
\t
^[
ESC
\e
Bir tuş veya tuş kombinasyonunun terminalinize ne gönderdiğini bulmanın en iyi yolu, koşmak sed -n l
ve onu Enterklavyede yazmaktır. O zaman şöyle bir şey göreceksiniz:
$ sed -n l
^[[1;5A
\033[1;5A$
İlk satır, echo
terminal cihazı tarafından yapılan yerel terminalden kaynaklanır (terminal cihazı ayarları onu etkileyeceği için güvenilir olmayabilir).
İkinci satır tarafından verilir sed
. $
O çizginin sonu nereye göstermek için sadece var, dahil edilecek değildir.
Bu yollarla Üstü o Ctrl-Up(ben basıldığında ettik ki) 6 karakter göndermek ESC
, [
, 1
, ;
, 5
ve A
(0x1b 0x5b 0x31 0x3b 0x35 0x41)
Veri terminfo
tabanı, birkaç uçbirim için bir dizi ortak anahtar için bir dizi dizi kaydeder ( $TERM
değere bağlı olarak ).
Örneğin:
TERM=rxvt tput kdch1 | sed -n l
Hangi kaçış sırasının tuşa rxvt
basılarak gönderileceğini söyleyecektir Delete.
Şu anki terminalinizle hangi tuşun belirli bir sıraya karşılık geldiğine bakabilirsiniz infocmp
(burada ncurses
infocmp varsayalım):
$ infocmp -L1 | grep -F '=\E[Z'
back_tab=\E[Z,
key_btab=\E[Z,
Anahtar kombinasyonları veritabanında Ctrl-Upkarşılık gelen girişlere sahip değildir terminfo
, bu nedenle ne gönderdiklerini bulmak için ilgili terminalin kaynağını veya belgelerini okuyun veya sed -n l
yukarıda açıklanan yöntemle deneyin .
bind -p
.