Lịch sử về các phím Shift + Mũi tên trong thiết bị đầu cuối là gì?


21

Tôi đang tự hỏi tại sao Shift+ Arrow Keykết quả trong một trong những A, B, Choặc Dchữ cái.

Tại sao không phải là các chữ cái khác? Tại sao có thư nào cả?


Hấp dẫn: D Đặt cược của tôi? Phải làm với trò chơi dựa trên văn bản: D
Rinzwind

2
Chỉ là một quan sát: trong tty Shift + Arrow Keyskhông làm gì cả.
Radu Rădeanu

@Rinzwind: :)))
Radu Rădeanu

1
Tôi đã hỏi câu hỏi này trên Unix / Linux Stack Exchange. Có một số câu trả lời hữu ích. Có lẽ bạn muốn nhìn vào chúng. unix.stackexchange.com/questions/73669/ từ
yfklon

Câu trả lời:


27

Giả lập thiết bị đầu cuối như gnome-terminal( "Terminal" trong Ubuntu) mà còn xtermurxvtđược đặt tên là "giả lập" bởi vì họ tái tạo các hành vi của các thiết bị đầu cuối cũ mà là màn hình hiển thị duy nhất của một máy tính. Các thiết bị đầu cuối như vậy giao tiếp với máy tính với giao thức dựa trên văn bản và ban đầu được thiết kế để chỉ nhận văn bản. Nhanh chóng, cần nhiều kiểm soát hơn: làm thế nào để xóa một dòng? Sử dụng màu sắc? Hoặc thay đổi vị trí con trỏ?

Thiết bị đầu cuối VT-100 Nguồn: Nghệ thuật khả năng sử dụng Unix - Giao diện dòng lệnh

Trình tự thoát được thiết kế cho mọi thiết bị đầu cuối để làm những việc như vậy. Chúng được đặt tên là thoát vì chúng bắt đầu bằng mã thoát ASCII : 33. Không có cách nào để in trực tiếp một ký tự như vậy, điều này làm cho nó phù hợp với các chuỗi như vậy. Khi chúng tôi vẫn muốn hiển thị biểu đồ này, ^[[được sử dụng và đây là những gì tôi sẽ sử dụng trong phần giải thích của mình.

Khi thiết bị đầu cuối nhận được ^[[A, nó không có nghĩa là "in ^ [[A", mà là "người dùng nhấn phím mũi tên lên". "A" ở đây hoàn toàn tùy ý: nó thực sự là chữ cái mà mọi người đã đồng ý, bởi vì đó là những gì mà DEC VT-52 và người kế nhiệm của nó là thiết bị đầu cuối VT-100 phổ biến được sử dụng.

Tháng 12 VT-52 Bảo trì Manuel 1976

Nguồn: Hướng dẫn bảo trì DEC VT-52 1976

Đây vẫn là cách các trình giả lập thiết bị đầu cuối hoạt động ngày nay: tùy thuộc vào $TERMbiến, cơ sở dữ liệu có tên terminfochịu trách nhiệm cho biết mã nào sẽ được gửi đến shell (bash, sh, zsh ...), sau đó chịu trách nhiệm hiểu chúng và phản ứng đối với họ.

Bây giờ, mã cho Shift+ upxảy ra là ^[[1;2A: trình giả lập thiết bị đầu cuối gửi mã này đến trình bao, nó cố gắng diễn giải ^[[1;2nhưng không hiển thị bất cứ điều gì vì nó không biết về chuỗi thoát đó. Nhưng Ađược để lại và hiển thị.


5
Ồ, thật thú vị. Bây giờ tất cả những điều đó ^[[Acó ý nghĩa khi tôi nhấp vào các phím mũi tên trong khi một quá trình đang chạy trên thiết bị đầu cuối.
Dan

4
Bạn có thể nhấn CTRL-v ngay trước khi bạn nhấn SHIFT-UpArrow để 'xem' các chuỗi thoát ở dạng thô. Trừ khi bạn đã thay đổi mặc định, ESC sẽ xuất hiện trên màn hình thiết bị đầu cuối của bạn dưới dạng ^ [
arielf

@arielf Bạn cũng có thể chạy cat >/dev/nullsau đó nhập và nhấn Ctrl + C (hoặc Enter rồi Ctrl + D) khi hoàn tất.
wjandrea
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.