From 04017c25bb719c31bb18d43b4bcb96c4736f8d91 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Sat, 25 Jan 2025 11:22:32 +0900 Subject: Add 'bell' action to ring the terminal bell --- src/tui/dummy.go | 1 + src/tui/light.go | 4 ++++ src/tui/tcell.go | 4 ++++ src/tui/tui.go | 1 + 4 files changed, 10 insertions(+) (limited to 'src/tui') diff --git a/src/tui/dummy.go b/src/tui/dummy.go index 1e62e849..1cfb292e 100644 --- a/src/tui/dummy.go +++ b/src/tui/dummy.go @@ -44,6 +44,7 @@ func (r *FullscreenRenderer) PassThrough(string) {} func (r *FullscreenRenderer) Clear() {} func (r *FullscreenRenderer) NeedScrollbarRedraw() bool { return false } func (r *FullscreenRenderer) ShouldEmitResizeEvent() bool { return false } +func (r *FullscreenRenderer) Bell() {} func (r *FullscreenRenderer) Refresh() {} func (r *FullscreenRenderer) Close() {} func (r *FullscreenRenderer) Size() TermSize { return TermSize{} } diff --git a/src/tui/light.go b/src/tui/light.go index f4688060..56e9ae0b 100644 --- a/src/tui/light.go +++ b/src/tui/light.go @@ -32,6 +32,10 @@ const consoleDevice string = "/dev/tty" var offsetRegexp = regexp.MustCompile("(.*)\x1b\\[([0-9]+);([0-9]+)R") var offsetRegexpBegin = regexp.MustCompile("^\x1b\\[[0-9]+;[0-9]+R") +func (r *LightRenderer) Bell() { + r.flushRaw("\a") +} + func (r *LightRenderer) PassThrough(str string) { r.queued.WriteString("\x1b7" + str + "\x1b8") } diff --git a/src/tui/tcell.go b/src/tui/tcell.go index 0bf160c4..3c3e13fc 100644 --- a/src/tui/tcell.go +++ b/src/tui/tcell.go @@ -100,6 +100,10 @@ const ( BoldForce = Attr(1 << 10) ) +func (r *FullscreenRenderer) Bell() { + _screen.Beep() +} + func (r *FullscreenRenderer) PassThrough(str string) { // No-op // https://github.com/gdamore/tcell/pull/650#issuecomment-1806442846 diff --git a/src/tui/tui.go b/src/tui/tui.go index 32aefc79..eab5ad7e 100644 --- a/src/tui/tui.go +++ b/src/tui/tui.go @@ -580,6 +580,7 @@ type Renderer interface { PassThrough(string) NeedScrollbarRedraw() bool ShouldEmitResizeEvent() bool + Bell() GetChar() Event -- cgit v1.2.3