289b30715d
This commit converts the dependency management from Godeps to the vendor folder, also switching the tool from godep to trash. Since the upstream tool lacks a few features proposed via a few PRs, until those PRs are merged in (if), use github.com/karalabe/trash. You can update dependencies via trash --update. All dependencies have been updated to their latest version. Parts of the build system are reworked to drop old notions of Godeps and invocation of the go vet command so that it doesn't run against the vendor folder, as that will just blow up during vetting. The conversion drops OpenCL (and hence GPU mining support) from ethash and our codebase. The short reasoning is that there's noone to maintain and having opencl libs in our deps messes up builds as go install ./... tries to build them, failing with unsatisfied link errors for the C OpenCL deps. golang.org/x/net/context is not vendored in. We expect it to be fetched by the user (i.e. using go get). To keep ci.go builds reproducible the package is "vendored" in build/_vendor.
188 lines
4.3 KiB
Go
188 lines
4.3 KiB
Go
// 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
|
|
)
|