如何使用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"
显示器:
您好!
^ [[0米^ [[30;!47mHello ^ [[0米
最终,我需要颜色:
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
答案 0 :(得分:9)
在ruby源代码中有一些curses使用示例,例如, here
您的代码可能类似于:
require 'curses'
include Curses
Curses.noecho # do not show typed keys
Curses.init_screen
Curses.stdscr.keypad(true) # enable arrow keys (required for pageup/down)
Curses.start_color
# Determines the colors in the 'attron' below
Curses.init_pair(COLOR_BLUE,COLOR_BLUE,COLOR_BLACK)
Curses.init_pair(COLOR_RED,COLOR_RED,COLOR_BLACK)
loop do
case Curses.getch
when Curses::Key::PPAGE
Curses.clear
Curses.setpos(0,0)
# Use colors defined color_init
Curses.attron(color_pair(COLOR_RED)|A_NORMAL){
Curses.addstr("Page Up")
}
when Curses::Key::NPAGE
Curses.clear
Curses.setpos(0,0)
Curses.attron(color_pair(COLOR_BLUE)|A_NORMAL){
Curses.addstr("Page Down")
}
end
end