2017-02-15 3 views
1

Ich schreibe ein Terminal-Programm für den Raspberry Pi mit Ncurses. Ich möchte einen Schatten um eine Box hinzufügen. Ich möchte mvaddch() verwenden, um erweiterte Zeichen wie Char 233 (obere Hälfte Box-Zeichen) zu drucken. Wie lautet die Syntax für den Befehl mvaddch()? Oder gibt es einen anderen Weg, dies zu erreichen?gcc ncurses druck erweitern Zeichen (Glyphen) wie char 223

Antwort

1

Sie beziehen sich wahrscheinlich auf etwas wie code page 866. Ncurses wird davon ausgehen, dass Ihr Terminal Zeichen zeigt, die mit der locale encoding übereinstimmen, die wahrscheinlich UTF-8 ist. Also (wenn Sie die Zeichen in Ihrem Programm nicht konvertieren möchten), verwenden Sie Unicode-Werte. Die Unicode-Organisation verfügt über Tabellen, mit denen Sie einen bestimmten Code suchen können, beispielsweise ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP866.TXT. In Ihrem Beispiel lautet die entsprechende Zeile

0xdf 0x2580 #UPPER HALF BLOCK 

(weil 0xdf ist 223). Sie würden den Unicode 0x2580 in einem Aufruf der Funktion mvaddwstr, z.

wchar_t mydata[] = { 0x2580, 0 }; 
mvaddwstr(0,0, mydata); 

(die ähnlich benannten wadd_wch verwendet eine Datenstruktur, die komplizierter ist).

Sie müssten mit der ncursesw Bibliothek und natürlich initialize your program's locale using setlocale wie in der ncurses Handbuchseite erwähnt verknüpfen.