+static void
+show_help(WINDOW *current)
+{
+ /* *INDENT-OFF* */
+ static struct {
+ int key;
+ CONST_FMT char * msg;
+ } help[] = {
+ { HELP_KEY_1, "Show this screen" },
+ { CTRL('L'), "Repaint screen" },
+ { '$', "Scroll to end of combining-character range" },
+ { '+', "Scroll to next combining-character in range" },
+ { KEY_DOWN, "(same as \"+\")" },
+ { '-', "Scroll to previous combining-character in range" },
+ { KEY_UP, "(same as \"-\")" },
+ { '0', "Scroll to beginning of combining-character range" },
+ { 'c', "Toggle command-line option \"-c\"" },
+ { 'd', "Dump screen using scr_dump unless \"-l\" option used" },
+ { 'h', "Scroll test-data left one column" },
+ { 'j', "Scroll test-data down one row" },
+ { 'k', "Scroll test-data up one row" },
+ { 'l', "Scroll test-data right one column" },
+ { 'q', "Quit" },
+ { ESCAPE, "(same as \"q\")" },
+ { QUIT, "(same as \"q\")" },
+ { 'r', "Toggle command-line option \"-r\"" },
+ };
+ /* *INDENT-ON* */
+
+ char **msgs = typeCalloc(char *, SIZEOF(help) + 3);
+ size_t s;
+ int d = 0;
+
+ msgs[d++] = strdup("Test diacritic combining-characters range "
+ "U+0300..U+036F");
+ msgs[d++] = strdup("");
+ for (s = 0; s < SIZEOF(help); ++s) {
+ char *name = strdup(keyname(help[s].key));
+ size_t need = (11 + strlen(name) + strlen(help[s].msg));
+ msgs[d] = typeMalloc(char, need);
+ _nc_SPRINTF(msgs[d], _nc_SLIMIT(need) "%-10s%s", name, help[s].msg);
+ free(name);
+ ++d;
+ }
+ popup_msg2(current, msgs);
+ for (s = 0; msgs[s] != 0; ++s) {
+ free(msgs[s]);
+ }
+ free(msgs);
+}
+