Hey all interested, while writing a small wscons(4) keycode utility i asked myself why KS_GROUP_Ascii is named the way it is, since the (lower) byte carries more information, at least eventually.
I looked around a bit, and found out that NetBSD did change the name to KS_GROUP_Plain, which is in my view less misleading than the current naming scheme. So the diff below changes all occurrences in todays src/ (no change at all in xenocara) to _Plain. And i've also missed a macro which tells an application wether a second byte is necessary to complete the current raw keycode. I.e., currently i hardcode ((rc & 0xF0) == 0xE0 || (rc & 0xF8) == 0xF0) but can/could use KS_GROUP()/KS_VALUE() to separate the components after i finally have read the complete keysym. This is not part of the diff, however. Ciao, --steffen Index: sbin/wsconsctl/keysym.c =================================================================== RCS file: /cvs/src/sbin/wsconsctl/keysym.c,v retrieving revision 1.6 diff -a -p -u -r1.6 keysym.c --- sbin/wsconsctl/keysym.c 28 Jun 2010 20:40:39 -0000 1.6 +++ sbin/wsconsctl/keysym.c 29 Jan 2012 17:37:04 -0000 @@ -229,7 +229,7 @@ ksym_upcase(keysym_t ksym) if (ksym >= KS_f1 && ksym <= KS_f20) return(KS_F1 - KS_f1 + ksym); - if (KS_GROUP(ksym) == KS_GROUP_Ascii && ksym <= 0xff && + if (KS_GROUP(ksym) == KS_GROUP_Plain && ksym <= 0xff && latin1_to_upper[ksym] != 0x00) return(latin1_to_upper[ksym]); Index: sys/dev/wscons/wsdisplay.c =================================================================== RCS file: /cvs/src/sys/dev/wscons/wsdisplay.c,v retrieving revision 1.105 diff -a -p -u -r1.105 wsdisplay.c --- sys/dev/wscons/wsdisplay.c 3 Jul 2011 18:11:21 -0000 1.105 +++ sys/dev/wscons/wsdisplay.c 29 Jan 2012 17:38:44 -0000 @@ -1594,7 +1594,7 @@ wsdisplay_kbdinput(struct device *dev, k tp = scr->scr_tty; for (; num > 0; num--, ks++) { - if (KS_GROUP(*ks) == KS_GROUP_Ascii) + if (KS_GROUP(*ks) == KS_GROUP_Plain) (*linesw[tp->t_line].l_rint)(KS_VALUE(*ks), tp); else { count = (*scr->scr_dconf->wsemul->translate) Index: sys/dev/wscons/wskbd.c =================================================================== RCS file: /cvs/src/sys/dev/wscons/wskbd.c,v retrieving revision 1.70 diff -a -p -u -r1.70 wskbd.c --- sys/dev/wscons/wskbd.c 9 Nov 2011 14:27:52 -0000 1.70 +++ sys/dev/wscons/wskbd.c 29 Jan 2012 17:38:16 -0000 @@ -1265,7 +1265,7 @@ wskbd_cngetc(dev_t dev) for(;;) { if (num-- > 0) { ks = wskbd_console_data.t_symbols[pos++]; - if (KS_GROUP(ks) == KS_GROUP_Ascii) + if (KS_GROUP(ks) == KS_GROUP_Plain) return (KS_VALUE(ks)); } else { (*wskbd_console_data.t_consops->getc) @@ -1667,7 +1667,7 @@ wskbd_translate(struct wskbd_internal *i res = KS_voidSymbol; switch (KS_GROUP(ksym)) { - case KS_GROUP_Ascii: + case KS_GROUP_Plain: case KS_GROUP_Keypad: case KS_GROUP_Function: res = ksym; @@ -1716,7 +1716,7 @@ wskbd_translate(struct wskbd_internal *i } /* We are done, return the symbol */ - if (KS_GROUP(res) == KS_GROUP_Ascii) { + if (KS_GROUP(res) == KS_GROUP_Plain) { if (MOD_ONESET(id, MOD_ANYCONTROL)) { if ((res >= KS_at && res <= KS_z) || res == KS_space) res = res & 0x1f; Index: sys/dev/wscons/wskbdutil.c =================================================================== RCS file: /cvs/src/sys/dev/wscons/wskbdutil.c,v retrieving revision 1.9 diff -a -p -u -r1.9 wskbdutil.c --- sys/dev/wscons/wskbdutil.c 28 Aug 2010 12:48:14 -0000 1.9 +++ sys/dev/wscons/wskbdutil.c 29 Jan 2012 17:37:44 -0000 @@ -268,7 +268,7 @@ ksym_upcase(keysym_t ksym) if (ksym >= KS_f1 && ksym <= KS_f20) return(KS_F1 - KS_f1 + ksym); - if (KS_GROUP(ksym) == KS_GROUP_Ascii && ksym <= 0xff && + if (KS_GROUP(ksym) == KS_GROUP_Plain && ksym <= 0xff && latin1_to_upper[ksym] != 0x00) return(latin1_to_upper[ksym]); Index: sys/dev/wscons/wsksymdef.h =================================================================== RCS file: /cvs/src/sys/dev/wscons/wsksymdef.h,v retrieving revision 1.34 diff -a -p -u -r1.34 wsksymdef.h --- sys/dev/wscons/wsksymdef.h 5 Apr 2011 19:12:13 -0000 1.34 +++ sys/dev/wscons/wsksymdef.h 29 Jan 2012 17:45:41 -0000 @@ -684,7 +684,7 @@ #define KS_GROUP_Command 0xf400 #define KS_GROUP_Internal 0xf500 #define KS_GROUP_Dead 0xf801 /* not encoded in keysym */ -#define KS_GROUP_Ascii 0xf802 /* not encoded in keysym */ +#define KS_GROUP_Plain 0xf802 /* not encoded in keysym */ #define KS_GROUP_Keycode 0xf803 /* not encoded in keysym */ #define KS_NUMKEYCODES 0x1000 @@ -693,7 +693,7 @@ #define KS_GROUP(k) ((k) >= 0x0300 && (k) < 0x0370 ? KS_GROUP_Dead : \ (((k) & 0xf000) == 0xe000 ? KS_GROUP_Keycode : \ (((k) & 0xf800) == 0xf000 ? ((k) & 0xff00) : \ - KS_GROUP_Ascii))) + KS_GROUP_Plain))) #define KS_VALUE(k) (((k) & 0xf000) == 0xe000 ? ((k) & 0x0fff) : \ (((k) & 0xf800) == 0xf000 ? ((k) & 0x00ff) : (k)))