亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 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 關注
  • 188 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號