所以,我正在通過使用 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
。
- 1 回答
- 0 關注
- 188 瀏覽
添加回答
舉報
0/150
提交
取消