Tại sao emacs không hỗ trợ các sự kiện lên / xuống khóa


9

AFAIK emacs không hỗ trợ keyup/keydowncác sự kiện, chỉ keypressed. Một ví dụ về hậu quả là khi chúng ta muốn đánh dấu một khu vực, trước tiên chúng ta phải đặt dấu set-mark-commandvà sau đó có thể đánh dấu khu vực đó bằng cách di chuyển xung quanh điểm. Mặc dù đây thực sự là một tính năng thú vị vì bạn không phải nhấn phím shift trong khi đánh dấu văn bản, đôi khi, mong muốn có hành vi tương tự như trong các trình soạn thảo khác. Câu hỏi này là để hiểu tại sao emacs không hỗ trợ tính năng này và tại sao điều này được coi là tốt hơn . Ngoài ra có một cách tiếp cận ý thức hệ làm thế nào chúng ta có thể giải quyết điều này trong emacs?


6
Emacs cũng hoạt động trong một thiết bị đầu cuối và các sự kiện lên / xuống chính không có ý nghĩa trong môi trường đó. Rất có thể, đó ít nhất là một lý do lịch sử tại sao những sự kiện này không được hỗ trợ. Điều đó không có nghĩa là họ không thể được hỗ trợ mặc dù. Tôi nghi ngờ không ai đã thấy một nhu cầu đủ bức xúc để bận tâm với nó.
Harald Hanche-Olsen

1
Được rồi, đó là một đối số hợp lệ, mặc dù có các tính năng khác trong emacs chỉ hoạt động trong môi trường đồ họa (phông chữ, sự kiện chuột, v.v.)
trục

3
Tôi đã viết một số mã mô phỏng các sự kiện lên / xuống của khóa để xem trước một tệp trên khóa, sau đó đóng bộ đệm xem trước khi bật phím lên, giống như câu trả lời cho biết đó là hack, nhưng có lẽ nó có thể được tạo thành một thứ gì đó ổn định. emacs.stackexchange.com/questions/275/
Jordon Biondo

3
"Hành vi tương tự như trong các trình soạn thảo khác" mà bạn đang đề cập đến [Tôi không sử dụng các trình soạn thảo văn bản khác đó] là gì? Phần còn lại của văn bản dường như gợi ý về "shift + Movement to select", nhưng điều đó đã được hỗ trợ trong Emacs.
Stefan

4
Mặc dù bạn nói đúng những sự kiện quan trọng không tồn tại trong Emacs, bạn nên biết rằng Emacs không lựa chọn hỗ trợ thay đổi (nếu đó là những gì truyền cảm hứng cho câu hỏi của bạn).
Malabarba

Câu trả lời:


2

Như đã trả lời trong các bình luận vì lý do lịch sử Emacs chạy trong các thiết bị đầu cuối và các thiết bị đó được định hướng theo ký tự - bạn nhận được chuỗi byte mà không có bất kỳ đảm bảo nào khi điều này xảy ra trên bàn phím.

Thảo luận cũng chỉ ra rằng có thể thực hiện điều này cho môi trường đồ họa. Nhưng không ai quan tâm đến điều đó.

Lưu ý rằng một số chương trình như trò chơi hoặc phần mềm âm nhạc có thể sử dụng thông tin chi tiết về thời điểm nhấn phím, thời gian và khi phát hành nhưng chỉnh sửa văn bản không có gì phổ biến với những điều này.

Từ hướng dẫn (info "(elisp)Mouse Events"):

Emacs supports four kinds of mouse events:
click events, drag events, button-down events, and motion events.

Sự kiện di chuột có thể được mô phỏng bằng bộ đếm thời gian nhàn rỗi - phân tích điều tại điểm sau khi trì hoãn.

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.