input.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package input
  2. import (
  3. "fmt"
  4. "strings"
  5. )
  6. var (
  7. // ErrUnknownEvent is returned when an unknown event is encountered.
  8. ErrUnknownEvent = fmt.Errorf("unknown event")
  9. // ErrEmpty is returned when the event buffer is empty.
  10. ErrEmpty = fmt.Errorf("empty event buffer")
  11. )
  12. // Event represents a terminal input event.
  13. type Event interface{}
  14. // UnknownEvent represents an unknown event.
  15. type UnknownEvent string
  16. // String implements fmt.Stringer.
  17. func (e UnknownEvent) String() string {
  18. return fmt.Sprintf("%q", string(e))
  19. }
  20. // WindowSizeEvent represents a window resize event.
  21. type WindowSizeEvent struct {
  22. Width, Height int
  23. }
  24. // String implements fmt.Stringer.
  25. func (e WindowSizeEvent) String() string {
  26. return fmt.Sprintf("resize: %dx%d", e.Width, e.Height)
  27. }
  28. // MultiEvent represents multiple events.
  29. type MultiEvent []Event
  30. // String implements fmt.Stringer.
  31. func (e MultiEvent) String() string {
  32. var sb strings.Builder
  33. for _, ev := range e {
  34. sb.WriteString(fmt.Sprintf("%v\n", ev))
  35. }
  36. return sb.String()
  37. }