import "github.com/nsf/termbox-go"
termbox-go
索引
包文件
api.go
api_common.go
syscalls_linux.go
termbox.go
termbox_common.go
terminfo.go
terminfo_builtin.go
变量
var (
IsInit bool = false
)
termbox
func CellBuffer() []Cell
slicetermboxSizeClearFlushSlice
func Clear
func Clear(fg, bg Attribute) error
清理内部后台缓存。
func Close
func Close()
termboxtermboxtermbox
func Flush
func Flush() error
与终端同步内部后台缓存。
func HideCursor()
SetCursor(-1,-1)
func Init
func Init() error
termboxClose
示例:
err := termbox.Init()
if err != nil {
panic(err)
}
defer termbox.Close()
func Interrupt()
EventInterruptPollEventPollEvent
func SetCell(x, y int, ch rune, fg, bg Attribute)
在指定的位置改变内部后台缓存中单元格的参数。
func SetCursor(x, y int)
HideCursor()
func Size
func Size() (int, int)
ClearFlush
func Sync
func Sync() error
termbox
type Attribute
type Attribute uint16
const (
ColorDefault Attribute = iota
ColorBlack
ColorRed
ColorGreen
ColorYellow
ColorBlue
ColorMagenta
ColorCyan
ColorWhite
)
bitwise|
const (
AttrBold Attribute = 1 << (iota + 9)
AttrUnderline
AttrReverse
)
bitwise|
AttrBold
type Cell
type Cell struct {
Ch rune
Fg Attribute
Bg Attribute
}
ChunicodeFgBg
type Event
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
}
termboxModKeyChTypeWidthHeightTypeErrType
func PollEvent() Event
等待一个事件,并返回它。这事一个阻塞方法调用。
type EventType uint8
const (
EventKey EventType = iota
EventResize
EventMouse
EventError
EventInterrupt
)
Event.Type
type InputMode int
const (
InputEsc InputMode = 1 << iota
InputAlt
InputMouse
InputCurrent InputMode = 0
)
SetInputMode
func SetInputMode(mode InputMode) InputMode
termbox
EscESCESCKeyEscAltESCESCModAlt
MouseMouse
modeInputCurrentInput*
type Key
type Key uint16
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
MouseLeft
MouseMiddle
MouseRight
)
Event.Key
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
)
type Modifier uint8
const (
ModAlt Modifier = 0x01
)
AltEvent.ModSetInputMode
type OutputMode int
const (
OutputCurrent OutputMode = iota
OutputNormal
Output256
Output216
OutputGrayscale
)
SetOutputMode
func SetOutputMode
func SetOutputMode(mode OutputMode) OutputMode
termbox
- OutputNormal => [1..8]
此模式提供8个不同的颜色:
黑,红,绿,黄,蓝,品红,蓝绿色,白
快捷方式:ColorBlack,ColorRec,……
属性:AttrBold,AttrUnderline,AttrReverse
示例:
SetCell(x, y, '@', ColorBlack | AttrBold, ColorRed);
- Output256 => [1..256]
此模式你可以使用256色的终端模式:
0x00 - 0x07: 与OutputNormal一致的8个颜色
0x08 - 0x0f: Color* 或 AttrBold
0x10 - 0xe7: 216种不同的颜色
0xe8 - 0xff: 24种灰度
示例:
SetCell(x, y, '@', 184, 240);
SetCell(x, y, '@', 0xb8, 0xf0);
- Output216 => [1..216]
此种模式仅仅支持256色模式的第三种情况。但是你不需要提供偏移。
- OutputGrayscale => [1..24]
0
go run _demos/output.go
modeOutputCurrent
OutputMode