Warum unterstützt Emacs keine wichtigen Up / Down-Ereignisse?

9

AFAIK emacs unterstützt nicht keyup/keydownnur Events keypressed. Ein Beispiel für eine Konsequenz ist, dass wir, wenn wir eine Region markieren möchten, zuerst eine Markierung setzen müssen set-mark-commandund dann die Region markieren können , indem wir uns um den Punkt bewegen. Dies ist zwar eine wirklich interessante Funktion, da Sie beim Markieren des Textes keine Umschalttaste gedrückt halten müssen, aber manchmal wäre es wünschenswert, dasselbe Verhalten wie in anderen Editoren zu verwenden. Diese Frage soll verstehen, warum Emacs diese Funktion nicht unterstützt und warum dies als besser angesehen wird . Gibt es auch einen ideomatischen Ansatz, wie wir dies in Emacs lösen könnten?

Welle
quelle
6
Emacs funktioniert auch in einem Terminal, und wichtige Up / Down-Ereignisse sind in dieser Umgebung nicht sinnvoll. Sehr wahrscheinlich ist dies zumindest ein historischer Grund, warum diese Ereignisse nicht unterstützt werden. Das heißt aber nicht, dass sie nicht unterstützt werden konnten. Ich vermute, niemand hat ein ausreichend dringendes Bedürfnis gesehen, sich damit zu beschäftigen.
Harald Hanche-Olsen
1
Okay, das ist ein gültiges Argument, obwohl es andere Funktionen in Emacs gibt, die nur in einer grafischen Umgebung funktionieren (Schriftarten, Mausereignisse usw.)
Welle
3
Ich habe einen Code geschrieben, der Ereignisse zum Auf / Ab von Schlüsseln simuliert, um eine Vorschau einer Datei beim Herunterfahren von Schlüsseln anzuzeigen, und dann den Vorschau-Puffer beim Hochfahren von Schlüsseln zu schließen, wie die Antwort besagt, dass es hackig ist, aber vielleicht könnte es zu etwas Stabilem geformt werden. emacs.stackexchange.com/questions/275/…
Jordon Biondo
3
Auf welches "gleiche Verhalten wie in anderen Editoren" beziehen Sie sich [ich verwende diese anderen Texteditoren nicht]? Der Rest des Textes scheint auf "Umschalt + Bewegung zur Auswahl" hinzudeuten, aber das wird in Emacs bereits unterstützt.
Stefan
4
Obwohl Sie Recht haben, dass diese Schlüsselereignisse in Emacs nicht existieren, sollten Sie wissen, dass Emacs die Schichtauswahl unterstützt (wenn dies Ihre Frage inspiriert hat).
Malabarba

Antworten:

2

Wie in Kommentaren aus historischen Gründen beantwortet, laufen Emacs in Terminals und diese Geräte sind zeichenorientiert - Sie erhalten eine Byte-Sequenz ohne Garantie, wenn dies auf der Tastatur geschieht.

Die Diskussion zeigt auch, dass es möglich ist, dies für eine grafische Umgebung zu implementieren. Aber das interessiert niemanden.

Beachten Sie, dass einige Programme wie Spiele oder Musiksoftware möglicherweise detaillierte Informationen darüber verwenden, wann die Taste gedrückt wird, wie lange und wann sie freigegeben werden. Die Textbearbeitung hat jedoch nichts mit diesen zu tun.

Aus dem Handbuch (info "(elisp)Mouse Events"):

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

Das Schwebeereignis kann durch einen Leerlauf-Timer emuliert werden, der den Punkt nach der Verzögerung analysiert.

Gavenkoa
quelle