gpt4 book ai didi

events - 如何以编程方式生成鼠标事件?

转载 作者:行者123 更新时间:2023-12-04 20:16:51 25 4
gpt4 key购买 nike

SLIME 中有两个非常有用的函数:slime-copy-or-inspect-presentation-at-mouseslime-presentation-menu .但必须使用事件参数调用它们。为了生成一个偶数,我需要做很多后勤工作(计算“鼠标”当前指向的对象的打印表示所占据的区域、行和列——这是我真的不想做的事情因为,Emacs 中肯定有一些东西已经计算了所有这些东西。

那么,有没有一种简单的方法来生成“假”鼠标事件?因为在不需要鼠标的编辑器中只使用鼠标做两件事感觉……嗯,不是很聪明。 :)

编辑

这是我尝试过的:

(define-key lisp-mode-map (kbd "C-x ?")
#'(lambda ()
(interactive)
(message "called")
(slime-copy-or-inspect-presentation-at-mouse
`(mouse-2 ;; button
(,(selected-window) ;; window
,(point) ;; position
(0 . 0) ;; window-relative pixel
0 ;; timestamp
nil ;; object
,(point) ;; text position
(,(current-column) . ;; column
,(line-number-at-pos (point))) ;; line
nil ;; image
(0 . 0) ;; object-relative pixel
(1 . 1))))))
(define-key lisp-mode-map (kbd "C-x SPC")
#'(lambda ()
(interactive)
(message "called")
(slime-presentation-menu
`(mouse-3 ;; button
(,(selected-window) ;; window
,(point) ;; position
(0 . 0) ;; window-relative pixel
0 ;; timestamp
nil ;; object
,(point) ;; text position
(,(current-column) . ;; column
,(line-number-at-pos (point))) ;; line
nil ;; image
(0 . 0) ;; object-relative pixel
(1 . 1))))))

这实际上可以让我到达显示菜单的地步,但是当 slime-presentation-menu调用任何绑定(bind)到菜单项的函数,他们以某种方式看到它们没有被“真实”鼠标事件调用,抛出并退出。 :(

编辑2

我实际上认为这是因为 x-popup-menu ,当您使用鼠标或键盘选择菜单项时调度不同的事件... arrrrrgh。

最佳答案

期望绑定(bind)到鼠标单击的命令采用事件参数。这是一个列表,里面有很多东西,比如点击的按钮、位置、窗口等等。见 21.7.4 Click Events in the Elisp manual .

这是一个伪造滚轮事件的简单示例:

(mwheel-scroll `(mouse-5 ;; button
(,(selected-window) ;; window
,(point) ;; position
(0 . 0) ;; window-relative pixel
0 ;; timestamp
nil ;; object
,(point) ;; text position
(,(current-column) . ;; column
,(line-number-at-pos (point))) ;; line
nil ;; image
(0 . 0) ;; object-relative pixel
(1 . 1)))) ;; object size

下面是一个真实事件的例子:

'(mouse-4
(#<window 374 on *scratch*>
120
(6 . 10)
1301935153
nil
120
(0 . 0)
nil
(6 . 10)
(7 . 15)))

关于events - 如何以编程方式生成鼠标事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11124050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com