【发布时间】:2011-11-11 19:19:06
【问题描述】:
如何使用 Ruby 的默认 Curses 库获取颜色?
比如:
puts "\e[0m\e[30;47mtest\e[0m"
效果很好。在浅灰色背景上呈现漂亮的黑色。但是这个:
#!/usr/bin/env ruby
require 'curses'
Curses.noecho # do not show typed keys
Curses.init_screen
Curses.stdscr.keypad(true) # enable arrow keys (for pageup/down)
Curses.stdscr.nodelay = 1
Curses.clear
Curses.setpos(0,0)
Curses.addstr "Hello!"
Curses.addstr "\e[0m\e[30;47mHello!\e[0m"
显示:
你好!
^[[0m^[[30;47m你好!^[[0m
最终,我需要颜色:
How to capture a key press in Ruby?
require 'curses'
Curses.noecho # do not show typed keys
Curses.init_screen
Curses.stdscr.keypad(true) # enable arrow keys (required for pageup/down)
loop do
case Curses.getch
when Curses::Key::PPAGE
Curses.setpos(0,0)
Curses.addstr("Page Up")
when Curses::Key::NPAGE
Curses.setpos(0,0)
Curses.addstr("Page Dn")
end
end
【问题讨论】:
-
仅供参考,stdlib 中的
curses已弃用,应尝试ncurses- github.com/eclubb/ncurses-ruby,其中有适当的文档 -
@basicxman,是什么让你说标准库的诅咒已被弃用?
-
libruby
curses确实没有适当的文档,我只能在 SO 上找到/获得答案 -
不,不要使用 ncurses。使用诅咒。它根本没有被弃用,如果您使用 ncurses 创建 GUI,您的用户必须先下载并安装 ncurses gem,然后才能使用它。虽然 ncurses 更好,但差异可以忽略不计,不值得。只需使用 curses,并使用 ncurses 文档来处理事情。
-
Curses 包不已弃用。它是 ruby 核心库,而 ncurses 包不是。通常 curses 和 ncurses 是同一个东西,因为 curses 是通用名称(或 API)而 ncurses 是特定的实现其中。此外,ruby 的 curses 包实际上是使用 ncurses 系统库。这也证明它没有被弃用。有些人只是将系统库的名称与通用的东西和 ruby 包联系在一起。