Events 按下shift键时没有鼠标滚轮事件(shift和鼠标滚轮事件?)
我正在尝试使用lispbuilder sdl管理lisp中的一些事件 到目前为止,我得到了这个Events 按下shift键时没有鼠标滚轮事件(shift和鼠标滚轮事件?),events,lisp,sdl,common-lisp,sbcl,Events,Lisp,Sdl,Common Lisp,Sbcl,我正在尝试使用lispbuilder sdl管理lisp中的一些事件 到目前为止,我得到了这个 ;; Load package : (ql:quickload "lispbuilder-sdl") ;; main definition: (defun main (argv) (defparameter *ticks* 0) (sdl:with-init () (sdl:window 100 100 :title-caption "test") (sdl:with-eve
;; Load package :
(ql:quickload "lispbuilder-sdl")
;; main definition:
(defun main (argv)
(defparameter *ticks* 0)
(sdl:with-init ()
(sdl:window 100 100 :title-caption "test")
(sdl:with-events ()
(setf (sdl:frame-rate) 60)
(:quit-event () (progn (sdl:quit-image) (exit) t))
(:mouse-button-down-event
(:button button :x x :y y)
(format t "~&LSHIFT: ~a RSHIFT: ~a BUTTON: ~a X: ~d Y: ~d"
(sdl:get-key-state :sdl-key-lshift)
(sdl:get-key-state :sdl-key-rshift)
button x y))
(:key-down-event
(:key key)
(format t "~& KEY: ~a" key))
(:idle ()))))
;; Entrypoint :
(sb-int:with-float-traps-masked (:invalid :inexact :overflow) (main *posix-argv*))
如果我启动它,会出现一个窗口,我可以单击并滚动,我得到一个输出来描述按下的键和按钮的状态。如果我按下一个键也一样。好的
但当我按下shift键时,会发生一些奇怪的事情
如果我这样做,单击时仍有输出。但不是在滚动时(鼠标滚轮事件)
因此,我猜鼠标滚轮事件不会在换档(向右或向左)下降时触发。但我只会换钥匙,我甚至不知道为什么
例如,我不能处理shift+鼠标滚轮事件
有什么想法吗
NB:我在OSX上使用的SBCL版本是1.2.11,但在Ubuntu上它可以同时使用1.3.2和1.2.11。我无法在linux+SBCL上重现这个问题,但你应该稍微清理一下缩进。我想emacs不知道如何正确缩进事件,所以您应该手动缩进它们的正文2个空格(或者使用类似(emacs lisp)
(将“sdl:with events”公共lisp缩进函数(4&rest(&whole 2&4&rest 2))
告诉emacs如何做)。所有这些progn
s似乎也都是不必要的,您可能应该使用format
而不是多个print
s。没错,我将尝试安装SLIME来实现这一点。也许这与操作系统有关?我的项目似乎能够在linux上处理这个问题,但现在我正在OSX上工作。下班后我会在家里重试。@jkiiski我做了一个虚拟机来测试和比较,但我也无法在ubuntu上复制它。我尝试了sbcl 1.3.2和1.2.11(我在OSX上使用的是1.2.11),但这也不是版本问题。你能试试它在OSX上的其他实现上是否有效,看看问题是在sbcl还是lispbuilder sdl上?我没有其他操作系统可供自己测试。请从中尝试答案。如果它不起作用,我认为您需要使用——使用动态ffi
作为配置参数,从源代码处编译它。