С Emacs вы можете иметь событие перетаскивания, даже не меняя одежды. Событие перетаскивания происходит каждый раз, когда пользователь нажимает кнопку мыши, а затем перемещает мышь в другую позицию символа, прежде чем отпустить кнопку. Как и все события мыши, события перетаскивания представляются в Lisp в виде списков. Эти списки записывают как начальную позицию мыши, так и конечную позицию, например:
(event-type start-position end-position)
Для события перетаскивания имя символа event-type содержит префикс «drag-». Например, перетаскивание мыши с нажатой кнопкой 2
генерирует событие drag-mouse-2. Второй и третий
элементы события, start-position и end-position в
вышеуказанной иллюстрации, устанавливаются как начальная и конечная позиции
перетаскивания в виде списков позиций мыши (см. События клика). Вы можете
обратиться ко второму элементу любого события мыши аналогичным образом.
Однако событие перетаскивания может завершиться за пределами границ
рамки, которая была первоначально выбрана. В этом случае список позиции третьего элемента содержит эту рамку вместо окна.
Префикс «drag-» следует за префиксами модификаторов, такими как «C-» и «M-».
Если read-key-sequence получает событие перетаскивания, у которого нет
привязки клавиш, а соответствующее событие клика имеет привязку, он
преобразует событие перетаскивания в событие клика в начальной позиции перетаскивания. Это означает, что вам
не нужно различать события клика и перетаскивания, если вы не хотите этого.