画面が出た次は

SchemeGUI ってことは、次は図形言語かな……やっぱ。なんかアレだけど。

こんな感じで、イベントを取得しました。

(define-module cwsdl
  (use c-wrapper)
  (c-load "SDL/SDL.h"
          :import '(SDL_Init
                    SDL_SetVideoMode
                    SDL_PollEvent
                    SDL_Quit
                    SDL_Wait
                    SDL_Delay
                    SDL_INIT_VIDEO
                    SDL_ANYFORMAT
                    SDL_MOUSEMOTION
                    SDL_MOUSEBUTTONDOWN
                    SDL_QUIT
                    SDL_KEYDOWN
                    SDL_KEYUP)
          :compiled-lib "sdllib")
  (export-all))

(provide "cwsdl")
(use c-wrapper)
(use cwsdl)

(define *screen* #f)

(define (current-screen) *screen*)

(define (mainloop)
  (let ((event (make <SDL_Event>)))
    (call/cc
     (lambda (end)
       (let loop ()
         (until (= (SDL_PollEvent (ptr event)) 0)
           (let ((type (ref event 'type)))
             (cond ((= type SDL_MOUSEBUTTONDOWN)
                    (print "SDL_MOUSEBUTTONDOWN"))
                   ((= type SDL_KEYDOWN)
                    (print "SDL_KEYDOWN"))
                   ((= type SDL_QUIT)
                    (end)))))
         (loop)))))
  )

(define (main args)
  (SDL_Init SDL_INIT_VIDEO)
  (set! *screen* (SDL_SetVideoMode 640 480 32 SDL_ANYFORMAT))
  (mainloop)
  (SDL_Quit)
  0)