Ncurses

attron(A_BLINK) 使用 Ncurses 什麼都不做

  • August 23, 2014

我正在使用 Ubuntu 14.04、gcc 4.8.2 和 Ncurses 5.9.20140118;每當我執行任何程式碼時

attron(A_BLINK);
printw("Hi");
refresh();

列印到終端的文本不會閃爍(或做 hoola-hoops) - 它只是本來可以列印的正常文本

printw("Hi");
refresh();

我已經在 xterm、預設 ubuntu 終端、gnome 終端和 Guake 上對其進行了測試,結果相同。我需要一些帶有“Blink Support”的特殊字型嗎?

我認為您的問題與您使用的終端仿真器以及$TERM變數設置的值有關。我能夠使用一些我發現滿足這兩個條件的範常式式碼,但它不適用於相同的gnome-terminalterminator.

#include <ncurses.h>

int main(void)
{
   initscr();

   attron(A_BOLD);
   addstr("Twinkle, twinkle little star\n");
   attron(A_BLINK);
   addstr("How I wonder what you are.\n");
   attroff(A_BOLD);
   addstr("Up above the world so high,\n");
   addstr("Like a diamond in the sky.\n");
   attrset(A_NORMAL);
   addstr("Twinkle, twinkle little star\n");
   addstr("How I wonder what you are.\n");
   refresh();

   endwin();

   return 0;
}

我像這樣編譯它:

$ gcc -o blink blink.c -lncurses

您可以通過將其輸出傳遞到以下位置來看到它正在工作hexdump

$ ./blink | hexdump -C
00000000  1b 5b 3f 31 30 34 39 68  1b 5b 31 3b 33 31 72 1b  |.[?1049h.[1;31r.|
00000010  28 42 1b 5b 6d 1b 5b 34  6c 1b 5b 3f 37 68 1b 5b  |(B.[m.[4l.[?7h.[|
00000020  48 1b 5b 32 4a 1b 28 42  1b 5b 30 3b 31 6d 54 77  |H.[2J.(B.[0;1mTw|
00000030  69 6e 6b 6c 65 2c 20 74  77 69 6e 6b 6c 65 20 6c  |inkle, twinkle l|
00000040  69 74 74 6c 65 20 73 74  61 72 0d 0a 1b 28 42 1b  |ittle star...(B.|
00000050  5b 30 3b 31 3b 35 6d 48  6f 77 20 49 20 77 6f 6e  |[0;1;5mHow I won|
00000060  64 65 72 20 77 68 61 74  20 79 6f 75 20 61 72 65  |der what you are|
00000070  2e 0d 0a 1b 28 42 1b 5b  30 3b 35 6d 55 70 20 61  |....(B.[0;5mUp a|
00000080  62 6f 76 65 20 74 68 65  20 77 6f 72 6c 64 20 73  |bove the world s|
00000090  6f 20 68 69 67 68 2c 0d  0a 4c 69 6b 65 20 61 20  |o high,..Like a |
000000a0  64 69 61 6d 6f 6e 64 20  69 6e 20 74 68 65 20 73  |diamond in the s|
000000b0  6b 79 2e 0d 0a 1b 28 42  1b 5b 6d 54 77 69 6e 6b  |ky....(B.[mTwink|
000000c0  6c 65 2c 20 74 77 69 6e  6b 6c 65 20 6c 69 74 74  |le, twinkle litt|
000000d0  6c 65 20 73 74 61 72 0d  0a 48 6f 77 20 49 20 77  |le star..How I w|
000000e0  6f 6e 64 65 72 20 77 68  61 74 20 79 6f 75 20 61  |onder what you a|
000000f0  72 65 2e 0d 0a 1b 5b 33  31 3b 31 48 1b 5b 3f 31  |re....[31;1H.[?1|
00000100  30 34 39 6c 0d 1b 5b 3f  31 6c 1b 3e              |049l..[?1l.>|
0000010c

切換到xterm設置$TERMvt100。這是終端的螢幕截圖。

                 SS#1

                 SS#2

引用自:https://unix.stackexchange.com/questions/151673