api_common.go

  1// termbox is a library for creating cross-platform text-based interfaces
  2package termbox
  3
  4// public API, common OS agnostic part
  5
  6type (
  7	InputMode  int
  8	OutputMode int
  9	EventType  uint8
 10	Modifier   uint8
 11	Key        uint16
 12	Attribute  uint16
 13)
 14
 15// This type represents a termbox event. The 'Mod', 'Key' and 'Ch' fields are
 16// valid if 'Type' is EventKey. The 'Width' and 'Height' fields are valid if
 17// 'Type' is EventResize. The 'Err' field is valid if 'Type' is EventError.
 18type Event struct {
 19	Type   EventType // one of Event* constants
 20	Mod    Modifier  // one of Mod* constants or 0
 21	Key    Key       // one of Key* constants, invalid if 'Ch' is not 0
 22	Ch     rune      // a unicode character
 23	Width  int       // width of the screen
 24	Height int       // height of the screen
 25	Err    error     // error in case if input failed
 26	MouseX int       // x coord of mouse
 27	MouseY int       // y coord of mouse
 28	N      int       // number of bytes written when getting a raw event
 29}
 30
 31// A cell, single conceptual entity on the screen. The screen is basically a 2d
 32// array of cells. 'Ch' is a unicode character, 'Fg' and 'Bg' are foreground
 33// and background attributes respectively.
 34type Cell struct {
 35	Ch rune
 36	Fg Attribute
 37	Bg Attribute
 38}
 39
 40// To know if termbox has been initialized or not
 41var (
 42	IsInit bool = false
 43)
 44
 45// Key constants, see Event.Key field.
 46const (
 47	KeyF1 Key = 0xFFFF - iota
 48	KeyF2
 49	KeyF3
 50	KeyF4
 51	KeyF5
 52	KeyF6
 53	KeyF7
 54	KeyF8
 55	KeyF9
 56	KeyF10
 57	KeyF11
 58	KeyF12
 59	KeyInsert
 60	KeyDelete
 61	KeyHome
 62	KeyEnd
 63	KeyPgup
 64	KeyPgdn
 65	KeyArrowUp
 66	KeyArrowDown
 67	KeyArrowLeft
 68	KeyArrowRight
 69	key_min // see terminfo
 70	MouseLeft
 71	MouseMiddle
 72	MouseRight
 73	MouseRelease
 74	MouseWheelUp
 75	MouseWheelDown
 76)
 77
 78const (
 79	KeyCtrlTilde      Key = 0x00
 80	KeyCtrl2          Key = 0x00
 81	KeyCtrlSpace      Key = 0x00
 82	KeyCtrlA          Key = 0x01
 83	KeyCtrlB          Key = 0x02
 84	KeyCtrlC          Key = 0x03
 85	KeyCtrlD          Key = 0x04
 86	KeyCtrlE          Key = 0x05
 87	KeyCtrlF          Key = 0x06
 88	KeyCtrlG          Key = 0x07
 89	KeyBackspace      Key = 0x08
 90	KeyCtrlH          Key = 0x08
 91	KeyTab            Key = 0x09
 92	KeyCtrlI          Key = 0x09
 93	KeyCtrlJ          Key = 0x0A
 94	KeyCtrlK          Key = 0x0B
 95	KeyCtrlL          Key = 0x0C
 96	KeyEnter          Key = 0x0D
 97	KeyCtrlM          Key = 0x0D
 98	KeyCtrlN          Key = 0x0E
 99	KeyCtrlO          Key = 0x0F
100	KeyCtrlP          Key = 0x10
101	KeyCtrlQ          Key = 0x11
102	KeyCtrlR          Key = 0x12
103	KeyCtrlS          Key = 0x13
104	KeyCtrlT          Key = 0x14
105	KeyCtrlU          Key = 0x15
106	KeyCtrlV          Key = 0x16
107	KeyCtrlW          Key = 0x17
108	KeyCtrlX          Key = 0x18
109	KeyCtrlY          Key = 0x19
110	KeyCtrlZ          Key = 0x1A
111	KeyEsc            Key = 0x1B
112	KeyCtrlLsqBracket Key = 0x1B
113	KeyCtrl3          Key = 0x1B
114	KeyCtrl4          Key = 0x1C
115	KeyCtrlBackslash  Key = 0x1C
116	KeyCtrl5          Key = 0x1D
117	KeyCtrlRsqBracket Key = 0x1D
118	KeyCtrl6          Key = 0x1E
119	KeyCtrl7          Key = 0x1F
120	KeyCtrlSlash      Key = 0x1F
121	KeyCtrlUnderscore Key = 0x1F
122	KeySpace          Key = 0x20
123	KeyBackspace2     Key = 0x7F
124	KeyCtrl8          Key = 0x7F
125)
126
127// Alt modifier constant, see Event.Mod field and SetInputMode function.
128const (
129	ModAlt Modifier = 1 << iota
130	ModMotion
131)
132
133// Cell colors, you can combine a color with multiple attributes using bitwise
134// OR ('|').
135const (
136	ColorDefault Attribute = iota
137	ColorBlack
138	ColorRed
139	ColorGreen
140	ColorYellow
141	ColorBlue
142	ColorMagenta
143	ColorCyan
144	ColorWhite
145)
146
147// Cell attributes, it is possible to use multiple attributes by combining them
148// using bitwise OR ('|'). Although, colors cannot be combined. But you can
149// combine attributes and a single color.
150//
151// It's worth mentioning that some platforms don't support certain attributes.
152// For example windows console doesn't support AttrUnderline. And on some
153// terminals applying AttrBold to background may result in blinking text. Use
154// them with caution and test your code on various terminals.
155const (
156	AttrBold Attribute = 1 << (iota + 9)
157	AttrUnderline
158	AttrReverse
159)
160
161// Input mode. See SetInputMode function.
162const (
163	InputEsc InputMode = 1 << iota
164	InputAlt
165	InputMouse
166	InputCurrent InputMode = 0
167)
168
169// Output mode. See SetOutputMode function.
170const (
171	OutputCurrent OutputMode = iota
172	OutputNormal
173	Output256
174	Output216
175	OutputGrayscale
176)
177
178// Event type. See Event.Type field.
179const (
180	EventKey EventType = iota
181	EventResize
182	EventMouse
183	EventError
184	EventInterrupt
185	EventRaw
186	EventNone
187)