(define-module (gacela events)
#:use-module (gacela sdl)
#:export (process-events
- quit?
+ quit-signal?
key?
key-pressed?
key-released?))
(define (process-screen-events events)
(set! quit-signal #f)
+ (process-screen-events-recursive events))
+
+(define (process-screen-events-recursive events)
(cond ((not (null? events))
(let ((event (car events)))
(cond ((= (assoc-ref event 'type) SDL_QUIT) (set! quit-signal #t))))
- (process-screen-events (cdr events)))))
+ (process-screen-events-recursive (cdr events)))))
-(define (quit?)
+(define (quit-signal?)
quit-signal)
(define (process-keyboard-events events)
(clear-key-state)
+ (process-keyboard-events-recursive events))
+
+(define (process-keyboard-events-recursive events)
(cond ((not (null? events))
(let ((event (car events)))
(cond ((= (assoc-ref event 'type) SDL_KEYDOWN) (key-press (assoc-ref event 'key.keysym.sym)))
((= (assoc-ref event 'type) SDL_KEYUP) (key-release (assoc-ref event 'key.keysym.sym)))))
- (process-keyboard-events (cdr events)))))
+ (process-keyboard-events-recursive (cdr events)))))
(define (key? key)
(hash-ref keymap (get-keycode key)))