fix some errors and specify events more
This commit is contained in:
parent
68ebcdaff1
commit
4aba3c335f
|
@ -202,6 +202,8 @@
|
||||||
(define (buffer-resize! buf new-rows new-cols)
|
(define (buffer-resize! buf new-rows new-cols)
|
||||||
(cached-buffer-define buf)
|
(cached-buffer-define buf)
|
||||||
(set! clear-next? #t)
|
(set! clear-next? #t)
|
||||||
|
(set! cur-cells (maybe-make-cells cur-cells new-rows new-cols))
|
||||||
|
(set! new-cells (maybe-make-cells new-cells new-rows new-cols))
|
||||||
(super-buffer-resize! term-nclear new-rows new-cols)
|
(super-buffer-resize! term-nclear new-rows new-cols)
|
||||||
(super-buffer-resize! term-yclear new-rows new-cols)
|
(super-buffer-resize! term-yclear new-rows new-cols)
|
||||||
(set! term-rows new-rows)
|
(set! term-rows new-rows)
|
||||||
|
|
5
draw.rkt
5
draw.rkt
|
@ -40,8 +40,9 @@
|
||||||
(max-rows max-cols draw-char!)
|
(max-rows max-cols draw-char!)
|
||||||
(buffer-start! buf h w))
|
(buffer-start! buf h w))
|
||||||
(define (draw-with-params r c ch)
|
(define (draw-with-params r c ch)
|
||||||
(draw-char! (current-style) (current-fg) (current-bg)
|
(unless (or (negative? r) (negative? c))
|
||||||
r c ch))
|
(draw-char! (current-style) (current-fg) (current-bg)
|
||||||
|
r c ch)))
|
||||||
(define (on-screen? w h r c)
|
(define (on-screen? w h r c)
|
||||||
(rectangle-intersect 0 0
|
(rectangle-intersect 0 0
|
||||||
max-cols max-rows
|
max-cols max-rows
|
||||||
|
|
|
@ -2,16 +2,15 @@
|
||||||
(require racket/match
|
(require racket/match
|
||||||
racket/contract/base
|
racket/contract/base
|
||||||
racket/list
|
racket/list
|
||||||
|
racket/set
|
||||||
racket/async-channel
|
racket/async-channel
|
||||||
racket/system
|
racket/system
|
||||||
ansi
|
ansi
|
||||||
(submod ansi/lcd-terminal event-structs)
|
|
||||||
unix-signals
|
unix-signals
|
||||||
lux/chaos
|
lux/chaos
|
||||||
raart/draw
|
raart/draw
|
||||||
raart/buffer
|
raart/buffer
|
||||||
struct-define)
|
struct-define)
|
||||||
(provide (all-from-out (submod ansi/lcd-terminal event-structs)))
|
|
||||||
|
|
||||||
(struct term (f in out))
|
(struct term (f in out))
|
||||||
|
|
||||||
|
@ -67,6 +66,18 @@
|
||||||
(reset-mode x11-any-event-mouse-tracking-mode)
|
(reset-mode x11-any-event-mouse-tracking-mode)
|
||||||
(reset-mode x11-focus-event-mode)))
|
(reset-mode x11-focus-event-mode)))
|
||||||
|
|
||||||
|
(define (convert-key v)
|
||||||
|
(match v
|
||||||
|
[(key value mods)
|
||||||
|
(format "~a~a~a~a"
|
||||||
|
(if (set-member? mods 'meta) "M-" "")
|
||||||
|
(if (set-member? mods 'control) "C-" "")
|
||||||
|
(if (set-member? mods 'shift) "S-" "")
|
||||||
|
(if (char? value)
|
||||||
|
value
|
||||||
|
(format "<~a>" value)))]
|
||||||
|
[_ v]))
|
||||||
|
|
||||||
(define (make-raart #:mouse? [mouse? #f])
|
(define (make-raart #:mouse? [mouse? #f])
|
||||||
(define alternate? #t)
|
(define alternate? #t)
|
||||||
(define ch (make-async-channel))
|
(define ch (make-async-channel))
|
||||||
|
@ -115,11 +126,13 @@
|
||||||
(let loop ()
|
(let loop ()
|
||||||
(define v (lex-lcd-input (term-in t) #:utf-8? #t))
|
(define v (lex-lcd-input (term-in t) #:utf-8? #t))
|
||||||
(unless (eof-object? v)
|
(unless (eof-object? v)
|
||||||
(async-channel-put ch v)
|
(when (or (any-mouse-event? v)
|
||||||
|
(screen-size-report? v)
|
||||||
|
(key? v))
|
||||||
|
(async-channel-put ch (convert-key v)))
|
||||||
(loop))))))
|
(loop))))))
|
||||||
|
|
||||||
;; Register for window change events
|
;; Register for window change events
|
||||||
;; XXX some way to force this to be first
|
|
||||||
(display/term t (device-request-screen-size))
|
(display/term t (device-request-screen-size))
|
||||||
(set! sig-th
|
(set! sig-th
|
||||||
(thread
|
(thread
|
||||||
|
@ -148,6 +161,10 @@
|
||||||
(close-term t))])
|
(close-term t))])
|
||||||
|
|
||||||
(provide
|
(provide
|
||||||
|
(struct-out screen-size-report)
|
||||||
|
(struct-out any-mouse-event)
|
||||||
|
(struct-out mouse-focus-event)
|
||||||
|
(struct-out mouse-event)
|
||||||
(contract-out
|
(contract-out
|
||||||
[make-raart
|
[make-raart
|
||||||
(->* () (#:mouse? boolean?) chaos?)]))
|
(->* () (#:mouse? boolean?) chaos?)]))
|
||||||
|
|
Loading…
Reference in New Issue