--- /dev/null
+/* $OpenBSD: chrdef.h,v 1.7 2005/06/14 18:14:40 kjell Exp $ */
+
+/* This file is in the public domain. */
+
+/*
+ * sys/default/chardef.h: character set specific #defines for Mg 2a
+ * Warning: System specific ones exist
+ */
+
+/*
+ * Casting should be at least as efficient as anding with 0xff,
+ * and won't have the size problems. Override in sysdef.h if no
+ * unsigned char type.
+ */
+#define CHARMASK(c) ((unsigned char) (c))
+
+/*
+ * These flags, and the macros below them,
+ * make up a do-it-yourself set of "ctype" macros that
+ * understand the DEC multinational set, and let me ask
+ * a slightly different set of questions.
+ */
+#define _MG_W 0x01 /* Word. */
+#define _MG_U 0x02 /* Upper case letter. */
+#define _MG_L 0x04 /* Lower case letter. */
+#define _MG_C 0x08 /* Control. */
+#define _MG_P 0x10 /* end of sentence punctuation */
+#define _MG_D 0x20 /* is decimal digit */
+
+#define ISWORD(c) ((cinfo[CHARMASK(c)]&_MG_W)!=0)
+#define ISCTRL(c) ((cinfo[CHARMASK(c)]&_MG_C)!=0)
+#define ISUPPER(c) ((cinfo[CHARMASK(c)]&_MG_U)!=0)
+#define ISLOWER(c) ((cinfo[CHARMASK(c)]&_MG_L)!=0)
+#define ISEOSP(c) ((cinfo[CHARMASK(c)]&_MG_P)!=0)
+#define ISDIGIT(c) ((cinfo[CHARMASK(c)]&_MG_D)!=0)
+#define TOUPPER(c) ((c)-0x20)
+#define TOLOWER(c) ((c)+0x20)
+
+/*
+ * Generally useful thing for chars
+ */
+#define CCHR(x) ((x) ^ 0x40) /* CCHR('?') == DEL */
+
+#ifndef METACH
+#define METACH CCHR('[')
+#endif
+
+#ifdef XKEYS
+#define K00 256
+#define K01 257
+#define K02 258
+#define K03 259
+#define K04 260
+#define K05 261
+#define K06 262
+#define K07 263
+#define K08 264
+#define K09 265
+#define K0A 266
+#define K0B 267
+#define K0C 268
+#define K0D 269
+#define K0E 270
+#define K0F 271
+#define K10 272
+#define K11 273
+#define K12 274
+#define K13 275
+#define K14 276
+#define K15 277
+#define K16 278
+#define K17 279
+#define K18 280
+#define K19 281
+#define K1A 282
+#define K1B 283
+#define K1C 284
+#define K1D 285
+#define K1E 286
+#define K1F 287
+#endif