问题标签 [curses]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2506 浏览

c - 如何限制诅咒程序中的帧速率?

我一直在尝试使用 ncurses 制作游戏。但是,我对如何使主循环的计时部分起作用感到困惑。是否有人能够对我如何将帧速率代码添加到我的主循环中添加一些见解,同时保持可移植性并且不影响速度。提前致谢!

0 投票
3 回答
2142 浏览

python - 使用 (n)curses 打印到终端的右侧或底部

使用 n/curses 打印到终端窗口右侧和/或底部的标准方法是什么?

这是一个小草图:

C 或 Python 中的解决方案很好。

谢谢!

0 投票
3 回答
2794 浏览

c - ncurses 不解释键

我有一个基于诅咒的应用程序(WordGrinder)。我刚刚收到一个用户的错误报告,说他的键盘上的某些键不能正常工作。经过调查,他是对的。

有问题的键是 SHIFT+光标键和一些小键盘导航键,例如 END。调查发生了什么,似乎 curses 没有向我发送这些键的事件。在 SHIFT+光标键的情况下,我什么都没有得到,而对于 END,我得到了一个原始的转义序列。

这让我很惊讶。所有其他键都被正确解释并翻译成键符。我希望得到KEY_SLEFTand KEY_END。为什么我不是?

我已经查看了这些键可以工作的其他一些应用程序,但没有发现任何明显我做错的事情;而像 nano 这样的应用程序确实会做一些非常邪恶的事情,比如处理自己的转义键解析,所以我不知道它们是否适合源代码。

我正在初始化ncurses,如下所示:

我使用 gnome-terminal 作为终端仿真器,使用 xterm 作为终端类型。语言环境是 UTF-8,我有库的 ncursesw 变体。

有任何想法吗?

更新:

好几个月后,我用 Gnome 3 的 gnome-terminal 尝试了 Wordgrinder,发现所有这些古怪的键都会生成有效的 ncurses 键码。例如,SHIFT+LEFT 现在生成键码 393。xterm 生成完全相同的结果。不幸的是,CTRL+LEFT 生成键码 539,并且 Curses 文档明确指出有效键码在 KEY_MIN 到 KEY_MAX --- 257 到 511 范围内...

所以至少现在一切正常,但是这些奇怪的新键码是如何工作的呢?它们在任何地方都有定义吗?他们当然不在标题中。

0 投票
1 回答
1615 浏览

python - Python 诅咒:返回上一个菜单

我在 ncurses 中有一个菜单系统。选择其中一个选项会将您带到另一个菜单。但是我怎么回去?

理想情况下,我需要使用 GOTO 模块在代码行之间跳转,但我使用的设备没有内置该模块。

大家还知道其他方法吗?非常感谢任何帮助。

============ 更新:==================

好的,我还意识到您可以轻松地重新生成两个菜单:

0 投票
2 回答
3585 浏览

emacs - 使用文本用户界面(如 ncurses)的 IDE

是否有任何 IDE 在 shell 而不是 gui 中运行。因为我真的不喜欢使用鼠标(除了滚动,一切都更快,例如在 Firefox 中使用快捷方式)。

我真的很喜欢文本用户界面(比如 tui 模式下的 gdb),如果有一个可以完全由键盘控制的 ide(我目前正在学习 emacs,但我认为它并不是真正设计为 ide)。

0 投票
3 回答
6033 浏览

c - 在 ncurses 中实现文本滚动的推荐方法是什么?

我正在尝试实现一个文本滚动较少的 ncurses 应用程序。推荐的方法是什么?

这是我所知道的:

  1. 您可以使用scroll将文本缓冲区向上或向下移动 1 行。但是,如果向下滚动,您将在顶部有一个空白行,如果向上滚动,您将在底部有一个空白行,您必须自己重新绘制。
  2. Ncurses 会为您自动换行,当我必须确定在步骤 1 中必须重新绘制哪一行时,这会打乱我的数学运算。

我想我可以自己重新实现自动换行并保留所有后换行的数组,但这似乎是一个常见问题,所以可能有更好的方法。

0 投票
3 回答
2068 浏览

python - 有没有办法交互式地编写 Python 诅咒应用程序?

有没有办法创建第二个终端,以便所有对curses函数的调用都在该终端上运行,而不是在现有终端中运行?当我可以交互式地尝试时,我的工作速度会更快,所以我希望能够在一个终端中运行交互式 python 解释器并在另一个终端中查看 curses 输出。

事实上,initscr()在交互式窗口中调用要么失败(PyDev),要么永久取消主机(Spyder)的窗口刷新,或者导致控制台出现奇怪的行为(IPython)。

是否可以使用 接管不同的终端setupterm()?如果是这样,我在哪里可以得到一个不同的TERM字符串来调用它?

0 投票
3 回答
840 浏览

c++ - 从文本文件读入数组

我正在尝试将我用 Vim 编辑的文本文件读入一个数组。

文本文件为 30*50,由个位数组成。我一直在疯狂地试图让它工作,但我认为由于换行符我遇到了问题。这是我一直在使用的:

网格在头文件中定义为 int grid[30][50]。

我用来打印的代码如下:

调用 Map sMap = Map("testmap");

我只是想将单个数字捕获到一个数组中,然后重新打印该数组(使用curses)。目前,它读取 testmap 文件,并打印全零,无论 testmap 文件中有什么。

0 投票
2 回答
4217 浏览

python - 如何使用 python curses 模块创建关键事件?

我正在尝试在 python 中进行关键事件。我认为使用 curses 模块我可以做到这一点,但我不知道该怎么做。请帮我。

如何通过按键盘键调用函数。就像,如果按下“空格”键做某事,如果按下“c”键显示图像,如果按下“s”键保存图像。我的问题只是做那个关键事件。我正在使用 Linux 操作系统

我尝试使用 urwid 模块,当我使用此代码时:

出现了这个错误:

我究竟做错了什么 ?我怎样才能让它工作?

ps:我很抱歉我的无知,但我对python很陌生。

谢谢你的答案

0 投票
1 回答
4610 浏览

ruby - 红宝石诅咒颜色

如何使用 Ruby 的默认 Curses 库获取颜色?

所以像:

效果很好。在浅灰色背景上呈现漂亮的黑色。但是这个:

显示:

你好!

^[[0m^[[30;47m你好!^[[0m

最终,我需要颜色:

如何在 Ruby 中捕获按键?