换档键关闭时没有鼠标滚轮事件(shift +鼠标滚轮事件?)

vmo*_*eco 5 lisp events sdl sbcl common-lisp

我正在尝试使用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*))
Run Code Online (Sandbox Code Playgroud)

如果我启动它,会出现一个窗口,我可以单击并滚动,我得到一个输出来描述按下的按键和按钮的状态.如果我按下一个键,也一样.精细.

但是当我按住shift键时会发生一些奇怪的事情.

如果我这样做,我点击时仍然有输出.但不是滚动时(鼠标滚轮事件).

因此,我认为当换档(向右或向左)向下时,鼠标滚轮事件根本不会被触发.但只有换档键,我甚至不知道为什么.

所以我不能处理shift +鼠标滚轮事件.

任何的想法?

注意:我在OSX上使用的SBCL版本是1.2.11但它在Ubuntu上同时适用于1.3.2和1.2.11.