我想在tcell中获取输入。我正在编写一个文本编辑器,并且想要一个像vim这样的命令提示符。我尝试使用fmt包,但是fmt.Scan和fmt.Scanf无法正常工作(以我为例)。
编辑:
好的,现在我可以输入了,但是如何与if一起使用呢?我知道以图形方式转换符文,但是这不适用于if。有任何想法吗?
func (cmd *Cmd) HandleEvent(event tcell.Event) {
e.screen.Clear()
for{
e.screen.Show()
event := e.screen.PollEvent()
style := tcell.StyleDefault.Foreground(tcell.ColorWhite).Background(tcell.ColorBlack)
switch event := event.(type) {
case *tcell.EventKey:
r := event.Rune()
e.screen.SetContent(8, 40, r, nil, style)
}
}
}
最佳答案
来自tcell的mouse.go
演示可能对您最有用:https://github.com/gdamore/tcell/blob/master/_demos/mouse.go
tcell似乎使用事件来记录键盘和鼠标输入,例如这里s.SetContent()
用于显示ev.Rune()
,它是已从鼠标/键盘输入演示中按下的键:
case *tcell.EventKey:
s.SetContent(w-2, h-2, ev.Rune(), nil, st)
s.SetContent(w-1, h-1, 'K', nil, st)
if ev.Key() == tcell.KeyEscape {
ecnt++
if ecnt > 1 {
s.Fini()
os.Exit(0)
}
} else if ev.Key() == tcell.KeyCtrlL {
s.Sync()
} else {
ecnt = 0
if ev.Rune() == 'C' || ev.Rune() == 'c' {
s.Clear()
}
}
lks = ev.Name()
https://github.com/gdamore/tcell/blob/master/_demos/mouse.go#L161
关于go - 如何在tcell中获取输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61120702/