+
+(define (key-events)
+ (filter (lambda (e) (sdl2:keyboard-event? e)) *current-events*))
+
+(define (any-key-down?)
+ (let loop ((events *current-events*))
+ (if (null? events)
+ #f
+ (or (sdl2:keyboard-down-event? (car events))
+ (loop (cdr events))))))
+
+(define (any-key-up?)
+ (let loop ((events *current-events*))
+ (if (null? events)
+ #f
+ (or (sdl2:keyboard-up-event? (car events))
+ (loop (cdr events))))))
+
+(define (key-down? key)
+ (let ((ke (filter
+ (lambda (e)
+ (and (sdl2:keyboard-down-event? e)
+ (equal? (sdl2:keyboard-event-key e) key)))
+ *current-events*)))
+ (not (null? ke))))
+
+(define (key-up? key)
+ (let ((ke (filter
+ (lambda (e)
+ (and (sdl2:keyboard-up-event? e)
+ (equal? (sdl2:keyboard-event-key e) key)))
+ *current-events*)))
+ (not (null? ke))))