2013-08-25 81 views
1

我找不到任何將ncurses表單庫中的光標顏色從綠色更改爲其他任何方法的方法。使用谷歌搜索和搜索手冊頁上的光標或顏色沒有幫助。任何人都知道這是如何完成的?如何更改ncurses表單中的光標顏色?

+0

它看起來像沒有的功能來控制光標的顏色,你可以使用'的printf(「\ E] 12;藍色\ a「);'做這個工作嗎? – 2013-08-25 05:16:06

+0

完全沒有!把它放在一個答案(如果你不介意的話,有一些解釋),我會接受它。 –

回答

1

您可以通過編寫\e]12;COLOR\a\033]12;COLOR\007改變顏色,它們都是一樣的,在這裏一個簡單的例子:

#include <stdio.h> 
#include <unistd.h> 

void cursor_set_color_string(const char *color) { 
    printf("\e]12;%s\a", color); 
    fflush(stdout); 
} 

int main(int argc, char **argv) { 

    cursor_set_color_string("yellow"); sleep(1); 
    cursor_set_color_string("gray"); sleep(1); 
    cursor_set_color_string("blue"); sleep(1); 
    cursor_set_color_string("red"); sleep(1); 
    cursor_set_color_string("brown"); sleep(1); 

    return 0; 
} 

這裏是顏色名稱的列表:Xterm Colors

看起來你也可以使用RGB顏色形式\e]12;#XXXXXX\a

#include <stdio.h> 
#include <unistd.h> 

void cursor_set_color_rgb(unsigned char red, 
          unsigned char green, 
          unsigned char blue) { 
    printf("\e]12;#%.2x%.2x%.2x\a", red, green, blue); 
    fflush(stdout); 
} 

int main(int argc, char **argv) { 

    cursor_set_color_rgb(0xff, 0xff, 0xff); sleep(1); 
    cursor_set_color_rgb(0xff, 0xff, 0x00); sleep(1); 
    cursor_set_color_rgb(0xff, 0x00, 0xff); sleep(1); 
    cursor_set_color_rgb(0x00, 0xff, 0xff); sleep(1); 

    return 0; 
}