mengapa emacs tidak mendukung acara kunci naik / turun

9

AFAIK emacs tidak mendukung keyup/keydownacara, hanya keypressed. Contoh konsekuensinya adalah ketika kita ingin menandai suatu wilayah, kita harus terlebih dahulu menetapkan tanda set-mark-commanddan kemudian dapat menandai wilayah tersebut dengan bergerak di sekitar titik. Meskipun ini benar-benar fitur yang menarik karena Anda tidak perlu menahan tombol shift sambil menandai teks, kadang-kadang akan diinginkan untuk memiliki perilaku yang sama seperti di editor lain. Pertanyaan ini adalah untuk memahami mengapa emacs tidak mendukung fitur ini dan mengapa ini dianggap lebih baik . Juga adakah pendekatan ideomatik bagaimana kita bisa menyelesaikan ini dalam emacs?

batang
sumber
6
Emacs juga berfungsi di terminal, dan peristiwa kunci naik / turun tidak masuk akal di lingkungan itu. Sangat mungkin, itulah setidaknya alasan historis mengapa peristiwa ini tidak didukung. Itu tidak berarti mereka tidak dapat didukung. Saya curiga tidak ada yang melihat kebutuhan yang mendesak untuk mengganggunya.
Harald Hanche-Olsen
1
Oke itu argumen yang valid, meskipun ada fitur lain di emacs yang hanya berfungsi di lingkungan grafis (font, acara mouse, dll)
shaft
3
Saya menulis beberapa kode yang mensimulasikan peristiwa kunci atas / bawah untuk melihat pratinjau file pada kunci ke bawah kemudian menutup buffer pratinjau pada kunci ke atas, seperti jawaban mengatakan itu adalah hacky, tapi mungkin itu bisa dibentuk menjadi sesuatu yang stabil. emacs.stackexchange.com/questions/275/…
Jordon Biondo
3
Apa "perilaku yang sama seperti di editor lain" yang Anda maksud [saya tidak menggunakan editor teks lain itu]? Teks lainnya sepertinya mengisyaratkan "shift + movement to select", tetapi itu sudah didukung di Emacs.
Stefan
4
Meskipun Anda benar peristiwa kunci tidak ada di Emacs, Anda harus tahu bahwa Emacs tidak seleksi dukungan pergeseran (jika itu yang apa terinspirasi pertanyaan Anda).
Malabarba

Jawaban:

2

Seperti yang dijawab dalam komentar karena alasan historis Emacs berjalan di terminal dan perangkat tersebut berorientasi karakter - Anda mendapatkan urutan byte tanpa jaminan apa pun saat ini terjadi pada keyboard.

Diskusi juga menunjukkan bahwa dimungkinkan untuk menerapkan ini untuk lingkungan grafis. Tapi tidak ada yang tertarik dengan itu.

Perhatikan bahwa beberapa program seperti permainan atau perangkat lunak musik dapat menggunakan informasi terperinci tentang kapan tombol ditekan, berapa lama, dan kapan dirilis tetapi pengeditan teks tidak ada hubungannya dengan ini.

Dari manual (info "(elisp)Mouse Events"):

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

Hover event dapat ditiru oleh pengatur waktu idle - menganalisis hal pada titik setelah penundaan.

gavenkoa
sumber