package main import "core:fmt" import "core:strings" import "gloam:term" main :: proc() { term.install_signal_handlers() term.enable_raw_mode() defer term.disable_raw_mode() b: strings.Builder strings.builder_init(&b, 0, 512) defer { strings.builder_reset(&b) term.reset_style(&b) fmt.print(strings.to_string(b)) strings.builder_destroy(&b) } for !term.should_quit() { term.apply_style(&b, {fg = 34}) key := term.read_key() if key.kind == .CtrlC { break } strings.write_string(&b, "\x1b[1;1H") strings.write_string(&b, "\x1b[0J") for y in 0 ..< 10 { i := y * 20 for x in 0 ..< 20 { if key.kind == .Char && i + x == int(key.char) { term.apply_style(&b, {fg = 31}) } strings.write_byte(&b, 'x') term.apply_style(&b, {fg = 34}) } strings.write_string(&b, "\x1b[1E") } fmt.print(strings.to_string(b)) strings.builder_reset(&b) term.reset_style(&b) free_all(context.temp_allocator) } }