aboutsummaryrefslogblamecommitdiffstats
path: root/vendor/github.com/nsf/termbox-go/api_common.go
blob: 9f23661f561e25b24c458bb2eb1a42e10b306f2a (plain) (tree)







































































                                                                               


                      




















































                                                                        

                                   
























































                                                                               
// termbox is a library for creating cross-platform text-based interfaces
package termbox

// public API, common OS agnostic part

type (
    InputMode  int
    OutputMode int
    EventType  uint8
    Modifier   uint8
    Key        uint16
    Attribute  uint16
)

// This type represents a termbox event. The 'Mod', 'Key' and 'Ch' fields are
// valid if 'Type' is EventKey. The 'Width' and 'Height' fields are valid if
// 'Type' is EventResize. The 'Err' field is valid if 'Type' is EventError.
type Event struct {
    Type   EventType // one of Event* constants
    Mod    Modifier  // one of Mod* constants or 0
    Key    Key       // one of Key* constants, invalid if 'Ch' is not 0
    Ch     rune      // a unicode character
    Width  int       // width of the screen
    Height int       // height of the screen
    Err    error     // error in case if input failed
    MouseX int       // x coord of mouse
    MouseY int       // y coord of mouse
    N      int       // number of bytes written when getting a raw event
}

// A cell, single conceptual entity on the screen. The screen is basically a 2d
// array of cells. 'Ch' is a unicode character, 'Fg' and 'Bg' are foreground
// and background attributes respectively.
type Cell struct {
    Ch rune
    Fg Attribute
    Bg Attribute
}

// To know if termbox has been initialized or not
var (
    IsInit bool = false
)

// Key constants, see Event.Key field.
const (
    KeyF1 Key = 0xFFFF - iota
    KeyF2
    KeyF3
    KeyF4
    KeyF5
    KeyF6
    KeyF7
    KeyF8
    KeyF9
    KeyF10
    KeyF11
    KeyF12
    KeyInsert
    KeyDelete
    KeyHome
    KeyEnd
    KeyPgup
    KeyPgdn
    KeyArrowUp
    KeyArrowDown
    KeyArrowLeft
    KeyArrowRight
    key_min // see terminfo
    MouseLeft
    MouseMiddle
    MouseRight
    MouseRelease
    MouseWheelUp
    MouseWheelDown
)

const (
    KeyCtrlTilde      Key = 0x00
    KeyCtrl2          Key = 0x00
    KeyCtrlSpace      Key = 0x00
    KeyCtrlA          Key = 0x01
    KeyCtrlB          Key = 0x02
    KeyCtrlC          Key = 0x03
    KeyCtrlD          Key = 0x04
    KeyCtrlE          Key = 0x05
    KeyCtrlF          Key = 0x06
    KeyCtrlG          Key = 0x07
    KeyBackspace      Key = 0x08
    KeyCtrlH          Key = 0x08
    KeyTab            Key = 0x09
    KeyCtrlI          Key = 0x09
    KeyCtrlJ          Key = 0x0A
    KeyCtrlK          Key = 0x0B
    KeyCtrlL          Key = 0x0C
    KeyEnter          Key = 0x0D
    KeyCtrlM          Key = 0x0D
    KeyCtrlN          Key = 0x0E
    KeyCtrlO          Key = 0x0F
    KeyCtrlP          Key = 0x10
    KeyCtrlQ          Key = 0x11
    KeyCtrlR          Key = 0x12
    KeyCtrlS          Key = 0x13
    KeyCtrlT          Key = 0x14
    KeyCtrlU          Key = 0x15
    KeyCtrlV          Key = 0x16
    KeyCtrlW          Key = 0x17
    KeyCtrlX          Key = 0x18
    KeyCtrlY          Key = 0x19
    KeyCtrlZ          Key = 0x1A
    KeyEsc            Key = 0x1B
    KeyCtrlLsqBracket Key = 0x1B
    KeyCtrl3          Key = 0x1B
    KeyCtrl4          Key = 0x1C
    KeyCtrlBackslash  Key = 0x1C
    KeyCtrl5          Key = 0x1D
    KeyCtrlRsqBracket Key = 0x1D
    KeyCtrl6          Key = 0x1E
    KeyCtrl7          Key = 0x1F
    KeyCtrlSlash      Key = 0x1F
    KeyCtrlUnderscore Key = 0x1F
    KeySpace          Key = 0x20
    KeyBackspace2     Key = 0x7F
    KeyCtrl8          Key = 0x7F
)

// Alt modifier constant, see Event.Mod field and SetInputMode function.
const (
    ModAlt Modifier = 1 << iota
    ModMotion
)

// Cell colors, you can combine a color with multiple attributes using bitwise
// OR ('|').
const (
    ColorDefault Attribute = iota
    ColorBlack
    ColorRed
    ColorGreen
    ColorYellow
    ColorBlue
    ColorMagenta
    ColorCyan
    ColorWhite
)

// Cell attributes, it is possible to use multiple attributes by combining them
// using bitwise OR ('|'). Although, colors cannot be combined. But you can
// combine attributes and a single color.
//
// It's worth mentioning that some platforms don't support certain attibutes.
// For example windows console doesn't support AttrUnderline. And on some
// terminals applying AttrBold to background may result in blinking text. Use
// them with caution and test your code on various terminals.
const (
    AttrBold Attribute = 1 << (iota + 9)
    AttrUnderline
    AttrReverse
)

// Input mode. See SetInputMode function.
const (
    InputEsc InputMode = 1 << iota
    InputAlt
    InputMouse
    InputCurrent InputMode = 0
)

// Output mode. See SetOutputMode function.
const (
    OutputCurrent OutputMode = iota
    OutputNormal
    Output256
    Output216
    OutputGrayscale
)

// Event type. See Event.Type field.
const (
    EventKey EventType = iota
    EventResize
    EventMouse
    EventError
    EventInterrupt
    EventRaw
    EventNone
)