2 (asdf:oos
'asdf
:load-op
'#:cl-glfw
)
3 (asdf:oos
'asdf
:load-op
'#:cl-glfw-opengl-version_1_0
)
5 (defparameter *key-repeat
* nil
)
6 (defparameter *system-keys
* t
)
8 (defun keyfun (key action
)
10 ((not (eql action glfw
:+press
+)))
12 ((eql key glfw
:+key-esc
+)
13 (format t
"ESC => quit program~%")
17 (setf *key-repeat
* (not *key-repeat
*))
18 (funcall (if *key-repeat
* #'glfw
:enable
#'glfw
:disable
) glfw
:+key-repeat
+)
19 (format t
"R => Key repeat: ~s~%" (if *key-repeat
* "ON" "OFF")))
22 (setf *system-keys
* (not *system-keys
*))
23 (funcall (if *system-keys
* #'glfw
:enable
#'glfw
:disable
) glfw
:+system-keys
+)
24 (format t
"S => System keys: ~s~%" (if *system-keys
* "ON" "OFF")))
27 (format t
"character ~s~%" key
))
30 (format t
"symbol ~s~%" key
))
33 ;; shouldn't ever be called
34 (format t
"??? ~s~%" key
)))
37 (glfw:do-window
(:title
"Press some keys!" :width
250 :height
100)
38 ((glfw:set-key-callback
'keyfun
))
40 (destructuring-bind (width height
) (glfw:get-window-size
)
41 (gl:viewport
0 0 width height
))
43 (gl:clear-color
(+ 0.5 (* 0.5 (sin (* 3 (glfw:get-time
)))))
45 (gl:clear gl
:+color-buffer-bit
+)