diff --git a/test/key_names.c b/test/key_names.c
index 579f02f..fa7fdba 100644
--- a/test/key_names.c
+++ b/test/key_names.c
@@ -1,5 +1,6 @@
 /****************************************************************************
- * Copyright (c) 2007-2008,2014 Free Software Foundation, Inc.              *
+ * Copyright 2020,2022 Thomas E. Dickey                                     *
+ * Copyright 2007-2014,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -26,7 +27,7 @@
  * authorization.                                                           *
  ****************************************************************************/
 /*
- * $Id: key_names.c,v 1.5 2014/08/02 17:24:55 tom Exp $
+ * $Id: key_names.c,v 1.11 2022/12/04 00:40:11 tom Exp $
  */
 
 #include <test.priv.h>
@@ -34,15 +35,32 @@
 #if USE_WIDEC_SUPPORT
 
 static void
-usage(void)
+usage(int ok)
 {
-    fprintf(stderr, "Usage: key_names [-m] [-s]\n");
-    ExitProgram(EXIT_FAILURE);
+    static const char *msg[] =
+    {
+	"Usage: key_names"
+	,""
+	,USAGE_COMMON
+	,"Options:"
+	," -m       call meta(TRUE) in initialization"
+	," -s       call newterm, etc., to complete initialization"
+    };
+    size_t n;
+
+    for (n = 0; n < SIZEOF(msg); n++)
+	fprintf(stderr, "%s\n", msg[n]);
+
+    ExitProgram(ok ? EXIT_SUCCESS : EXIT_FAILURE);
 }
+/* *INDENT-OFF* */
+VERSION_COMMON()
+/* *INDENT-ON* */
 
 int
 main(int argc, char *argv[])
 {
+    int ch;
     int n;
 
     bool do_setup = FALSE;
@@ -50,16 +68,19 @@
 
     setlocale(LC_ALL, "");
 
-    while ((n = getopt(argc, argv, "ms")) != -1) {
-	switch (n) {
+    while ((ch = getopt(argc, argv, OPTS_COMMON "ms")) != -1) {
+	switch (ch) {
 	case 'm':
 	    do_meta = TRUE;
 	    break;
 	case 's':
 	    do_setup = TRUE;
 	    break;
+	case OPTS_VERSION:
+	    show_version(argv);
+	    ExitProgram(EXIT_SUCCESS);
 	default:
-	    usage();
+	    usage(ch == OPTS_USAGE);
 	    /* NOTREACHED */
 	}
     }
@@ -77,7 +98,8 @@
 	endwin();
     }
     for (n = -1; n < KEY_MAX + 512; n++) {
-	const char *result = key_name((wchar_t) n);
+	int check = wcwidth((wchar_t) n);
+	const char *result = check >= 0 ? key_name((wchar_t) n) : "?";
 	if (result != 0)
 	    printf("%d(%5o):%s\n", n, n, result);
     }
