diff options
Diffstat (limited to 'src/info.rs')
-rw-r--r-- | src/info.rs | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/src/info.rs b/src/info.rs index 8252d2f..37e06b7 100644 --- a/src/info.rs +++ b/src/info.rs @@ -1,9 +1,84 @@ use core::libc::{c_char,c_int}; +#[deriving(Eq)] +pub enum Color { + ColorBlack = 0, + ColorRed, + ColorGreen, + ColorYellow, + ColorBlue, + ColorMagenta, + ColorCyan, + ColorWhite, +} + pub fn init () { unsafe { c::setupterm(ptr::null(), 1, ptr::null()) }; } +macro_rules! def_escape( + ($name:ident -> $escape:expr) => ( + pub fn $name () -> ~str { escape($escape) } + ); + ($name:ident -> $escape:expr, $ty1:ident) => ( + pub fn $name (p1: $ty1) -> ~str { escape1($escape, p1 as int) } + ); + ($name:ident -> $escape:expr, $ty1:ident, $ty2:ident) => ( + pub fn $name (p1: $ty1, p2: $ty2) -> ~str { + escape2($escape, p1 as int, p2 as int) + } + ); +) + +def_escape!(clear_screen -> "clear") +def_escape!(set_a_foreground -> "setaf", Color) +def_escape!(set_a_background -> "setab", Color) +def_escape!(orig_pair -> "op") +def_escape!(exit_attribute_mode -> "sgr0") +def_escape!(cursor_home -> "home") +def_escape!(cursor_address -> "cup", uint, uint) +def_escape!(enter_underline_mode -> "smul") +def_escape!(exit_underline_mode -> "rmul") +def_escape!(enter_standout_mode -> "smso") +def_escape!(exit_standout_mode -> "rmso") +def_escape!(enter_reverse_mode -> "rev") +def_escape!(enter_bold_mode -> "bold") +def_escape!(enter_blink_mode -> "blink") +def_escape!(cursor_invisible -> "civis") +def_escape!(cursor_normal -> "cnorm") +def_escape!(enter_ca_mode -> "smcup") +def_escape!(exit_ca_mode -> "rmcup") +def_escape!(keypad_xmit -> "smkx") +def_escape!(keypad_local -> "rmkx") + +def_escape!(key_backspace -> "kbs") +def_escape!(carriage_return -> "cr") +def_escape!(tab -> "ht") +def_escape!(key_up -> "kcuu1") +def_escape!(key_down -> "kcud1") +def_escape!(key_left -> "kcub1") +def_escape!(key_right -> "kcuf1") +def_escape!(key_home -> "khome") +def_escape!(key_end -> "kend") +def_escape!(key_ic -> "kich1") +def_escape!(key_dc -> "kdch1") +def_escape!(key_f1 -> "kf1") +def_escape!(key_f2 -> "kf2") +def_escape!(key_f3 -> "kf3") +def_escape!(key_f4 -> "kf4") +def_escape!(key_f5 -> "kf5") +def_escape!(key_f6 -> "kf6") +def_escape!(key_f7 -> "kf7") +def_escape!(key_f8 -> "kf8") +def_escape!(key_f9 -> "kf9") +def_escape!(key_f10 -> "kf10") +def_escape!(key_f11 -> "kf11") +def_escape!(key_f12 -> "kf12") + +pub fn key_f (n: uint) -> ~str { + escape(fmt!("kf%?", n)) +} + pub fn escape (name: &str) -> ~str { do str::as_c_str(name) |c_name| { unsafe { |