pourquoi emacs ne prend-il pas en charge les événements clés de montée / descente

9

AFAIK emacs ne prend pas keyup/keydownuniquement en charge les événements keypressed. Un exemple de conséquence est que lorsque nous voulons marquer une région, nous devons d'abord définir une marque set-mark-commandet pouvons ensuite marquer la région en se déplaçant autour du point. Bien que ce soit vraiment une fonctionnalité intéressante car vous n'avez pas besoin de maintenir une touche Maj enfoncée pendant le marquage du texte, il serait parfois souhaitable d'avoir le même comportement que dans d'autres éditeurs. Cette question est de comprendre pourquoi emacs ne prend pas en charge cette fonctionnalité et pourquoi cela est considéré comme meilleur . Existe-t-il également une approche idéomatique pour résoudre ce problème dans emacs?

arbre
la source
6
Emacs fonctionne également dans un terminal, et les événements clés haut / bas n'ont pas de sens dans cet environnement. Très probablement, c'est au moins une raison historique pour laquelle ces événements ne sont pas pris en charge. Cela ne signifie pas pour autant qu'ils ne pouvaient pas être pris en charge. Je soupçonne que personne n'a vu un besoin suffisamment pressant de s'en préoccuper.
Harald Hanche-Olsen le
1
D'accord, c'est un argument valide, bien qu'il existe d'autres fonctionnalités dans emacs qui ne fonctionnent que dans un environnement graphique (polices, événements de souris, etc.)
arbre
3
J'ai écrit du code qui simule les événements de montée / descente des touches pour prévisualiser un fichier sur la touche enfoncée puis fermer le tampon de prévisualisation sur la touche haute, comme la réponse dit que c'est hacky, mais peut-être qu'il pourrait être moulé en quelque chose de stable. emacs.stackexchange.com/questions/275/…
Jordon Biondo
3
À quel «même comportement comme dans d'autres éditeurs» faites-vous référence [je n'utilise pas ces autres éditeurs de texte]? Le reste du texte semble faire allusion à "Maj + mouvement pour sélectionner", mais cela est déjà pris en charge dans Emacs.
Stefan
4
Bien que vous ayez raison, ces événements clés n'existent pas dans Emacs, vous devez savoir qu'Emacs prend en charge la sélection des équipes (si c'est ce qui a inspiré votre question).
Malabarba

Réponses:

2

Comme indiqué dans les commentaires pour des raisons historiques, Emacs s'exécute dans les terminaux et ces périphériques sont orientés caractères - vous obtenez une séquence d'octets sans aucune garantie lorsque cela se produit au clavier.

La discussion souligne également qu'il est possible de l'implémenter pour un environnement graphique. Mais personne ne s'y intéresse.

Notez que certains programmes comme les jeux ou les logiciels de musique peuvent utiliser des informations détaillées sur le moment où la touche est enfoncée, la durée et la date de publication, mais l'édition de texte n'a rien de commun avec ces derniers.

Du manuel (info "(elisp)Mouse Events"):

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

L'événement de survol peut être émulé par un temporisateur inactif - analysant la chose au point après le retard.

gavenkoa
la source