Làm cách nào để gửi C- / (nghĩa là dấu gạch chéo điều khiển) đến thiết bị đầu cuối?


13

Tôi đang cố chạy Emacs trong một thiết bị đầu cuối. Tôi đã bật "tùy chọn sử dụng như meta" trong tùy chọn thiết bị đầu cuối và do đó, khoảng 95% hoạt động đúng.

Chuỗi khóa ctrl- / (hoặc trong ký hiệu Emacs C- /) là "hoàn tác". Chuỗi phím này chỉ làm cho thiết bị đầu cuối rung chuông. Làm thế nào để tôi sửa lỗi này?


FWIW, điều này hoạt động trong iTerm2 - iterm2.com - nhưng tôi nghĩ rằng tôi sẽ tự đào tạo lại để sử dụng ^ _ ở mọi nơi, để dễ di chuyển hơn.
Steven R. Loomis

@ StevenR.Loomis xách tay? không kiểm soát- / cũng không kiểm soát-_ hoạt động trong Android ...
Michael

@Michael Tôi đã nói di động vì nó có thể biểu thị được trong ASCII (xem câu trả lời được chấp nhận) và do đó có thể chuyển các kết nối mạng mà không gặp sự cố. Thêm vào đó, nó dường như có thể sử dụng được trên hầu hết các bàn phím vật lý mà tôi đã thấy. Tôi đã không thử ghép nối bàn phím với thiết bị Android, bạn đang đề cập đến bàn phím mềm hay cứng?
Steven R. Loomis

Phần mềm @ StevenR.Loomis ... phần điều khiển dường như bị bỏ qua dẫn đến nỗ lực hoàn tác việc chèn dấu gạch chéo hoặc gạch dưới.
Michael

Câu trả lời:


19

Kiểm soát- /không phải là một phần của bộ mã kiểm soát tiêu chuẩn . Nó không thể biểu diễn trực tiếp như một tổ hợp phím trong nhiều mô phỏng thiết bị đầu cuối. Một tổ hợp phím như vậy chỉ có thể được phát hiện chính xác trong một số chế độ scancode dành riêng cho nền tảng nhất định, chế độ GUI hoặc chế độ GUI GUI (trong đó API cho bạn biết chính xác các phím và bộ sửa đổi nào đang được sử dụng). Trình giả lập thiết bị đầu cuối của bạn đang phát ra tiếng bíp vì đó thực sự là một tổ hợp phím không hợp lệ.

Các mã kiểm soát tiêu chuẩn chỉ bao gồm các phiên bản của Control Control của

  • @ A- Z [\]^_(ASCII 0 - 31) và
  • ? (ASCII 127)

Trong hầu hết các chương trình giả lập thiết bị đầu cuối đang chạy với hầu hết các bố trí khóa ở Hoa Kỳ, bạn có thể cần phải nhấn Shiftđể tạo một số mã Điều khiển của Cấm:

  • C- @ là ControlShift2(vì @Shift2)
  • C- ^ là ControlShift6(vì ^Shift6)
  • C-_ là ControlShift-(vì _Shift-)
  • Tuy nhiên, C-? có thể không phải luôn luôn là ControlShift/(vì ?Shift/); C-? thường được tạo bởi một trong hai Backspace(trên bàn phím của Apple, khóa có nhãn chỉ xóa xóa xóa mà không có ký hiệu bổ sung ⌦) hoặc Delete(một phím có trên bàn phím Apple).

Trong Emacs dựa trên tty, bạn thường có thể sử dụng C-_ undothay vì C- /.


1
Cảm ơn câu trả lời thấu đáo. Tôi sẽ thử chơi với các loại thiết bị đầu cuối khác nhau để xem liệu tôi có thể làm cho nó hoạt động không.
Kevin Peterson

1
"Các loại thiết bị đầu cuối khác nhau"? Bạn có nghĩa là các chương trình giả lập thiết bị đầu cuối khác nhau, hoặc bạn đang đề cập đến giá trị $ TERM, trong Terminal được đặt qua Terminal> Tùy chọn> Cài đặt> [hồ sơ]> Nâng cao> Khai báo thiết bị đầu cuối là ? (Tất cả các ưu tiên đó được đặt là giá trị của $ TERM. Nó không thay đổi hoạt động của mô phỏng thiết bị đầu cuối.) Control- / là một tính năng của X11 và không được hỗ trợ bởi Cacao hoặc Terminal.
Chris Trang

5

Ctrl- / gửi 0x1f tương đương với Ctrl-_ kể từ thời VT102. Có rất nhiều trình giả lập VT100 nhưng chúng thực sự là trình giả lập VT102. iTerm2 hoạt động vì nó tuân theo hành vi này.

Chỉ các trình giả lập tuân thủ nghiêm ngặt thông số kỹ thuật VT100 mới có thể gửi Ctrl- /. Tôi tin rằng ứng dụng Terminal là một trong số đó.

VT100 che 2 bit đáng kể nhất của ASCII 7 bit khi nhấn phím điều khiển. / là 0x2f, o là 0x6f. Khi 2 bit bị che, cả hai đều là 0x0f. VT100 có thể gửi Ctrl-o nhưng không thể Ctrl- /.


Đây phải là câu trả lời được chấp nhận.
ocodo
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.