diff options
Diffstat (limited to 'lisparuga/utils.scm')
-rw-r--r-- | lisparuga/utils.scm | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/lisparuga/utils.scm b/lisparuga/utils.scm index 0c67504..db7c1d8 100644 --- a/lisparuga/utils.scm +++ b/lisparuga/utils.scm @@ -15,12 +15,25 @@ ;;; along with Lisparuga. If not, see <http://www.gnu.org/licenses/>. (define-module (lisparuga utils) + #:use-module (sly input keyboard) #:use-module (sly math rect) #:use-module (sly math vector) + #:use-module (sly signal) #:export (resolution origin2 - bounds)) + bounds + key-toggle)) (define resolution (vector2 120 160)) (define origin2 (vector2 0 0)) (define bounds (make-rect (vector2 0 0) resolution)) + +(define (key-toggle key) + "Create a signal that is initially #f and toggles between #t and #f +each time KEY is pressed." + (signal-fold (lambda (down? previous) + (and down? (not previous))) + #f + (signal-filter identity #f + ;; Ignore repeated key down signals. + (signal-drop-repeats (key-down? key))))) |