仅接受Golang和ncurses中的字母数字

仅接受Golang和ncurses中的字母数字,go,ncurses,Go,Ncurses,所以,我在用ncurses制作一个简单的资源管理游戏来教自己一些Golang。我用它把Golang连接到ncurses 我制作了一个简单的文本输入面板,每次输入一个字符,显示它,然后将它添加到组成用户响应的字符串中。下面是它的样子: // Accept characters, printing them until end ch := window.GetChar() kstr := gc.KeyString(ch) response := "" cur := 0 for kstr != "en

所以,我在用ncurses制作一个简单的资源管理游戏来教自己一些Golang。我用它把Golang连接到ncurses

我制作了一个简单的文本输入面板,每次输入一个字符,显示它,然后将它添加到组成用户响应的字符串中。下面是它的样子:

// Accept characters, printing them until end
ch := window.GetChar()
kstr := gc.KeyString(ch)
response := ""
cur := 0
for 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)
}
//接受字符,打印到结束
ch:=window.GetChar()
kstr:=gc.KeyString(ch)
答复:=“”
cur:=0
对于kstr!=“输入”{
//诊断打印以获取当前字符的键代码
窗口移动(0,0)
window.cleartool()
窗口。移动打印(0,0,ch)
//如果是退格或删除,请删除字符
//否则,只要它是一个正规的字符添加它
如果((ch==127 | | ch==8)和&cur!=0){
cur--
响应=响应[:len(响应)-1]
窗口。移动打印(y,(x+cur),“”)
}否则,如果(ch>=33&&ch如果不启用键盘模式,(n)curses将返回组成特殊键的单个字节

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

stdscr.Keypad(true)   // allow keypad input
它将返回特殊键,如255以上的右箭头。goncurses为这些键定义了符号,例如,
KEY\u right

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

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

stdscr.Keypad(true)   // allow keypad input

它将返回特殊的键,如255以上的右箭头。goncurses为这些键定义了符号,例如,
KEY\u right

是的,就是这样。非常感谢!是的,就是这样。非常感谢!