为了账号安全,请及时绑定邮箱和手机立即绑定

在 Golang 和 ncurses 中只接受字母数字

在 Golang 和 ncurses 中只接受字母数字

Go
海绵宝宝撒 2022-01-04 15:54:56
所以,我正在通过使用 ncurses 制作一个简单的资源管理游戏来自学一些 Golang。我正在使用这个库将 Golang 连接到 ncurses。我制作了一个简单的文本输入面板,一次输入一个字符,显示它,然后将它添加到组成用户响应的字符串中。这是它的样子:// Accept characters, printing them until endch := window.GetChar()kstr := gc.KeyString(ch)response := ""cur := 0for kstr != "enter" {    // Diagnostic print to get key code of current character     window.Move(0,0)    window.ClearToEOL()    window.MovePrint(0, 0, ch)    // If its a backspace or delete, remove a character    // Otherwise as long as its a regular character add it    if ((ch == 127 || ch == 8) && cur != 0){        cur--        response = response[:len(response)-1]         window.MovePrint(y, (x + cur), " ")    } else if (ch >= 33 && ch <= 122  && cur <= 52) {        window.MovePrint(y, (x + cur), kstr)        response = response + kstr        cur++    }    // Get next character    ch = window.GetChar()    kstr = gc.KeyString(ch)}然而,箭头和功能键似乎是作为已经与普通 a-zA-Z 字符关联的键码出现的。例如,右箭头显示为 67,F1 显示为 80。任何想法我在这里做错了什么,或者是否有更好的方法通过 ncurses 接收字母数字?我想尽可能避免使用 ncurses 字段和类,因为这里的重点是学习 Golang,而不是 ncurses。谢谢!
查看完整描述

1 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

如果您不启用键盘模式,(n)curses 将返回组成特殊键的单个字节。

要修复,请将其添加到程序的初始化中:

stdscr.Keypad(true)   // allow keypad input

它将返回特殊键,例如右箭头作为大于 255 的值。 goncurses 为那些定义了符号,例如,KEY_RIGHT


查看完整回答
反对 回复 2022-01-04
  • 1 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信