如何使Python get_wch捕获输入密钥?

时间:2013-10-04 22:37:39

标签: python ncurses python-3.3

当我使用时

ch = wnd.getch()
在Python下的curses中,我可以捕获wnd.getch返回10的回车键。但是当我用getch替换get_wch时它不起作用。 get_wch是否有任何问题?

1 个答案:

答案 0 :(得分:0)

函数//global variables guessX = document.querySelector("#guess-x-input"), guessY = document.querySelector("#guess-y-input"), boardSize, /*defined by user. must be between 7 and 12 */ playerGuess = [], allPlayerGuesses = [], fireButton.addEventListener("click", function(){ var sameGuess = false, if (guessX.value === undefined || guessX.value < 1 || guessX.value > boardSize || guessY.value === undefined || guessY.value < 1 || guessY.value > boardSize ) { alert("Wrong coordinates!"); } else if (allPlayerGuesses.length === 0) { playerGuess[0] = guessX.value - 1; playerGuess[1] = guessY.value - 1; allPlayerGuesses.push(playerGuess); } else if (allPlayerGuesses.length !== 0) { playerGuess[0] = guessX.value - 1; playerGuess[1] = guessY.value - 1; for (var i = 0; i < allPlayerGuesses.length; i++) { if (playerGuess[0] === allPlayerGuesses[i][0] && playerGuess[1] === allPlayerGuesses[i][1] ) { alert("Coordinate already uncovered. Select another!"); sameGuess = true; } } if (!sameGuess) { playerGuess[0] = guessX.value - 1; playerGuess[1] = guessY.value - 1; allPlayerGuesses.push(playerGuess); } } if (board[playerGuess[0]][playerGuess[1]] === "bp") { document.querySelector(".ship-cell-" + playerGuess[0] + "-" + playerGuess[1]).classList.remove("hid"); } else { document.querySelector(".miss-cell-" + playerGuess[0] + "-" + playerGuess[1]).classList.remove("hid"); } }); getch具有不同的接口:

  • get_wch会返回字符
  • getch返回状态代码通过作为参数传递的指针设置宽字符。

它们使用不同的接口,因为特殊键(例如get_wch)可以用KEY_HOME作为超出“普通”(8位)字符范围的“额外”字符来处理。你不能用宽字符做到这一点(不是那么容易,因为宽字符范围的末尾不太明确),所以getch使用状态代码来判断它通过指针设置的值是否是宽字符或特殊的钥匙。

虽然手册页足够清楚,但是在将该功能添加到curses包装器时,python开发人员并没有注意到这种区别。 Python文档中的 description 对应get_wch而不是getch

  

获得广泛的性格。返回大多数键的字符,或功能键,小键盘键和其他特殊键的整数。

     

版本3.3中的新内容。

进一步阅读: