События перетаскивания
С помощью Emacs вы можете получить событие перетаскивания, даже не меняя одежду. Событие перетаскивания происходит каждый раз, когда пользователь нажимает кнопку мыши, а затем перемещает мышь в другую позицию символа, прежде чем отпустить кнопку. Как и все события мыши, события перетаскивания представляются в Lisp в виде списков. В списках записываются как начальная позиция мыши, так и конечная позиция, например:
(event-type (window1 START-POSITION) (window2 END-POSITION))
Для события перетаскивания имя символа event-type содержит префикс ‘drag-’. Например, перетаскивание мыши, удерживая нажатой кнопку 2, генерирует событие drag-mouse-2. Второй и третий элементы события указывают начальную и конечную позиции перетаскивания, как списки позиций мыши (см. События щелчка). Вы можете получить доступ ко второму элементу любого события мыши таким же образом. Однако событие перетаскивания может закончиться за пределами границ рамки, которая была изначально выбрана. В этом случае список позиций третьего элемента содержит эту рамку вместо окна.
Префикс ‘drag-’ следует за префиксами клавиш модификаторов, такими как ‘C-’ и ‘M-’.
Если read-key-sequence получает событие перетаскивания без привязки клавиш, а соответствующее событие щелчка имеет привязку, то оно преобразует событие перетаскивания в событие щелчка в начальной позиции перетаскивания. Это означает, что вам не нужно различать события щелчка и перетаскивания, если вы этого не хотите.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Drag-Events.html