Câu trả lời của Johan Myréen rất gần, nhưng không chính xác vấn đề: hầu hết các trình giả lập thiết bị đầu cuối mà bạn sẽ sử dụng đều có chế độ bình thường và ứng dụng cho các phím đặc biệt. Mô tả thiết bị đầu cuối được viết cho một chế độ, tương ứng với những gì ứng dụng toàn màn hình sử dụng. Các ứng dụng khác (như vỏ tương tác ) thường không khởi tạo màn hình để sử dụng chế độ ứng dụng . Bash là một ví dụ về điều đó.
Ở chế độ bình thường , xterm và các thiết bị đầu cuối tương tự gửi escape[
(CSI) trong khi ở chế độ ứng dụng , bàn phím của chúng sẽ gửi escapeO
(SS3). Trong cú pháp terminfo, lối thoát đó là \E
. Vì vậy, infocmp
cho bạn thấy rằng mô tả sử dụng chế độ ứng dụng. Các home
khả năng sẽ được gửi đến thiết bị đầu cuối, nói với nó như thế nào để di chuyển con trỏ đến nhà vị trí (trên trái), và không giống như khome
(gửi từ thiết bị đầu cuối sử dụng bàn phím).
Các ứng dụng toàn màn hình (chẳng hạn như các ứng dụng sử dụng mật mã) có thể gửi các chuỗi khả năng của thiết bị đầu cuối để khởi tạo bàn phím. Một số mô tả thiết bị đầu cuối đưa thiết bị đầu cuối vào chế độ ứng dụng, một số thì không.
Việc sử dụng kend
so với end
là một quy ước đặt tên: trong terminfo theo quy ước, bất kỳ tên nào bắt đầu bằng k đều đề cập đến một phím đặc biệt (phím chức năng, phím con trỏ, phím bàn phím) để làm rõ rằng đây là các chuỗi được đọc bởi một ứng dụng. Ví dụ: kcub1
( phím lùi con trỏ ) khác với cub1
(di chuyển con trỏ trở lại một cột).
ncurses nhận ra khóa KEY_END
vì ứng dụng bạn đang sử dụng sẽ gọi keypad
hàm để khởi tạo thiết bị đầu cuối bằng cách sử dụng smkx
(mnemonic có nghĩa là "bắt đầu chế độ truyền bàn phím"). Điều đó có thể / có thể không thực sự bật chế độ ứng dụng. Mô tả thiết bị đầu cuối của giao diện điều khiển Linux thì không, xterm thì không.
Về nguyên tắc, bạn có thể sử dụng tput
để chuyển đổi chế độ (và nhận các kết quả khác nhau từ 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
Như một sự phức tạp, những lời nguyền sẽ chỉ nhận ra một tên cho một chuỗi. Một số thiết bị đầu cuối (như xterm) mô phỏng các thiết bị đầu cuối phần cứng cũ hơn bằng cách sử dụng các tên khác nhau cho các phím trên bàn phím chỉnh sửa. Trong Câu hỏi thường gặp về xterm được liệt kê bên dưới, có khả năng đặt tên phím "Trang chủ" đó là "Chèn" ...
Đọc thêm:
home
vàkhome
làkhome
chuỗi là chuỗi nhấn phím Home tạo ra, trong khihome
chuỗi là chuỗi nên được gửi đến thiết bị đầu cuối để di chuyển con trỏ đến vị trí nhà. Theo hiểu biết của tôi, terminfo không xác định mộtend
khả năng, chỉkend
.