- static char crep[20];
- /*
- * We can show the actual character if it's either an ordinary printable
- * or one of the high-half characters.
- */
- if (isprint(ch) || (ch & 0x80))
- {
- crep[0] = '\'';
- crep[1] = ch; /* necessary; printf tries too hard on metachars */
- (void) sprintf(crep + 2, "' = 0x%02x", (unsigned)ch);
- }
- else
- (void) sprintf(crep, "0x%02x", (unsigned)ch);
- return(crep);
+ static char crep[40];
+ (void) sprintf(crep, "'%.30s' = %#03o",
+ ((ch > KEY_MIN || ch < 0)
+ ? keyname(ch)
+ : unctrl(ch)),
+ ch);
+ return (crep);