Events 按下shift键时没有鼠标滚轮事件(shift和鼠标滚轮事件?)

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

我正在尝试使用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-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
作为配置参数,从源代码处编译它。