Jawaban Johan Myréen sudah dekat, tetapi tidak persis masalahnya: sebagian besar emulator terminal yang akan Anda gunakan memiliki mode normal dan aplikasi untuk kunci khusus. Deskripsi terminal ditulis untuk satu mode, yang sesuai dengan apa yang digunakan aplikasi layar penuh. Aplikasi lain (seperti shell interaktif ) biasanya tidak menginisialisasi layar untuk menggunakan mode aplikasi . Bash adalah contohnya.
Dalam mode normal , xterm dan terminal serupa mengirim escape[(CSI) ketika dalam mode aplikasi , keypad mereka mengirim escapeO(SS3). Dalam sintaks terminfo, pelarian itu adalah \E. Jadi infocmpmenunjukkan kepada Anda bahwa deskripsi menggunakan mode aplikasi. The homekemampuan dikirim ke terminal, mengatakan itu bagaimana untuk memindahkan kursor ke rumah posisi (kiri atas), dan tidak sama dengan khome(dikirim dari terminal menggunakan keyboard).
Aplikasi layar penuh (seperti yang menggunakan ncurses) dapat mengirim string kemampuan terminal untuk menginisialisasi keypad. Beberapa deskripsi terminal menempatkan terminal ke mode aplikasi, beberapa tidak.
Penggunaan kendversus endadalah konvensi penamaan: dalam terminfo oleh konvensi, nama apa pun yang dimulai dengan k mengacu pada tombol khusus (tombol fungsi, tombol kursor, tombol-tombol) untuk memperjelas bahwa ini adalah string yang harus dibaca oleh aplikasi. Misalnya, kcub1( tombol kursor mundur ) berbeda dari cub1(pindahkan kursor ke belakang satu kolom).
ncurses mengenali kunci KEY_ENDkarena aplikasi yang Anda gunakan akan memanggil keypadfungsi untuk menginisialisasi terminal menggunakan smkx(mnemonic berarti "memulai mode transmisi keyboard"). Itu mungkin / mungkin tidak benar-benar mengaktifkan mode aplikasi. Deskripsi terminal konsol Linux tidak, sedangkan xterm.
Pada prinsipnya, Anda dapat menggunakan tputuntuk mengganti mode (dan mendapatkan hasil berbeda dari showkey):
$ showkey -a
Press any keys - Ctrl-D will terminate this program
^[[H 27 0033 0x1b
91 0133 0x5b
72 0110 0x48
^C 3 0003 0x03
^D 4 0004 0x04
$ tput smkx
$ showkey -a
Press any keys - Ctrl-D will terminate this program
^[OH 27 0033 0x1b
79 0117 0x4f
72 0110 0x48
Sebagai komplikasi, kutukan hanya akan mengenali satu nama untuk sebuah string. Beberapa terminal (seperti xterm) meniru terminal perangkat keras yang lebih tua menggunakan nama yang berbeda untuk tombol pada keypad pengeditan. Dalam FAQ xterm yang tercantum di bawah, ada kemungkinan penamaan bahwa "Beranda" kunci "Sisipkan" ...
Bacaan lebih lanjut:
homedankhomeadalah bahwakhomestring adalah urutan yang menekan tombol Home menghasilkan, sedangkanhomestring adalah urutan yang harus dikirim ke terminal untuk memindahkan kursor ke posisi home. Sepengetahuan saya, terminfo tidak mendefinisikanendkemampuan, hanya sajakend.