;;; (yolk cursor) --- move the cursor around the terminal (import (scheme base) (scheme case-lambda) (yolk common)) (define cursor-home (csi "H")) (define (cursor-move/H x y) (csi y ";" x "H")) (define (cursor-move/f x y) (csi y ";" x "f")) (define-esc-alt-wrapper cursor-move cursor-move-proc (cursor-move/H x y)) (define (cursor-up n) (csi n "A")) (define (cursor-down n) (csi n "B")) (define (cursor-right n) (csi n "C")) (define (cursor-left n) (csi n "D")) (define (cursor-down-bol n) (csi n "E")) (define (cursor-up-bol n) (csi n "F")) (define (cursor-move-column n) (csi n "G")) (define cursor-save/dec (esc 7)) (define cursor-restore/dec (esc 8)) (define cursor-save/sco (csi "s")) (define cursor-restore/sco (csi "u")) (define cursor-save (make-parameter cursor-save/dec (parameter-assert string? "Not a string"))) (define cursor-restore (make-parameter cursor-restore/dec (parameter-assert string? "Not a string"))) ;; (define (get-cursor-postion) ...) ; (csi "6n"), reports as (csi r;cR)