xref: /dragonfly/usr.bin/window/char.c (revision a68e0df0)
1 /*	$NetBSD: char.c,v 1.6 2009/04/14 08:50:06 lukem Exp $	*/
2 
3 /*
4  * Copyright (c) 1983, 1993
5  *	The Regents of the University of California.  All rights reserved.
6  *
7  * This code is derived from software contributed to Berkeley by
8  * Edward Wang at The University of California, Berkeley.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions
12  * are met:
13  * 1. Redistributions of source code must retain the above copyright
14  *    notice, this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright
16  *    notice, this list of conditions and the following disclaimer in the
17  *    documentation and/or other materials provided with the distribution.
18  * 3. Neither the name of the University nor the names of its contributors
19  *    may be used to endorse or promote products derived from this software
20  *    without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32  * SUCH DAMAGE.
33  */
34 
35 #include <sys/cdefs.h>
36 #ifndef lint
37 #if 0
38 static char sccsid[] = "@(#)char.c	8.1 (Berkeley) 6/6/93";
39 #else
40 __RCSID("$NetBSD: char.c,v 1.6 2009/04/14 08:50:06 lukem Exp $");
41 #endif
42 #endif /* not lint */
43 
44 #include "char.h"
45 
46 char _cmap[] = {
47 	_C|_U,		_C|_U,		_C|_U,		_C|_U,	/* ^@ - ^C */
48 	_C|_U,		_C|_U,		_C|_U,		_C|_U,	/* ^D - ^G */
49 	_C,		_C|_P,		_C,		_C|_U,	/* ^H - ^K */
50 	_C|_U,		_C,		_C|_U,		_C|_U,	/* ^L - ^O */
51 	_C|_U,		_C|_U,		_C|_U,		_C|_U,	/* ^P - ^S */
52 	_C|_U,		_C|_U,		_C|_U,		_C|_U,	/* ^T - ^W */
53 	_C|_U,		_C|_U,		_C|_U,		_C|_U,	/* ^U - ^[ */
54 	_C|_U,		_C|_U,		_C|_U,		_C|_U,	/* ^\ - ^_ */
55 
56 	_P|_U,		_P|_U,		_P|_U,		_P|_U,
57 	_P|_U,		_P|_U,		_P|_U,		_P|_U,
58 	_P|_U,		_P|_U,		_P|_U,		_P|_U,
59 	_P|_U,		_P|_U,		_P|_U,		_P|_U,
60 	_P|_U,		_P|_U,		_P|_U,		_P|_U,
61 	_P|_U,		_P|_U,		_P|_U,		_P|_U,
62 	_P|_U,		_P|_U,		_P|_U,		_P|_U,
63 	_P|_U,		_P|_U,		_P|_U,		_P|_U,
64 
65 	_P|_U,		_P|_U,		_P|_U,		_P|_U,
66 	_P|_U,		_P|_U,		_P|_U,		_P|_U,
67 	_P|_U,		_P|_U,		_P|_U,		_P|_U,
68 	_P|_U,		_P|_U,		_P|_U,		_P|_U,
69 	_P|_U,		_P|_U,		_P|_U,		_P|_U,
70 	_P|_U,		_P|_U,		_P|_U,		_P|_U,
71 	_P|_U,		_P|_U,		_P|_U,		_P|_U,
72 	_P|_U,		_P|_U,		_P|_U,		_P|_U,
73 
74 	_P|_U,		_P|_U,		_P|_U,		_P|_U,
75 	_P|_U,		_P|_U,		_P|_U,		_P|_U,
76 	_P|_U,		_P|_U,		_P|_U,		_P|_U,
77 	_P|_U,		_P|_U,		_P|_U,		_P|_U,
78 	_P|_U,		_P|_U,		_P|_U,		_P|_U,
79 	_P|_U,		_P|_U,		_P|_U,		_P|_U,
80 	_P|_U,		_P|_U,		_P|_U,		_P|_U,
81 	_P|_U,		_P|_U,		_P|_U,		_C|_U,
82 
83 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
84 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
85 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
86 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
87 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
88 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
89 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
90 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
91 
92 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
93 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
94 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
95 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
96 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
97 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
98 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
99 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
100 
101 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
102 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
103 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
104 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
105 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
106 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
107 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
108 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
109 
110 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
111 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
112 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
113 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
114 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
115 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
116 	_C|_U,		_C|_U,		_C|_U,		_C|_U,
117 	_C|_U,		_C|_U,		_C|_U,		_C|_U
118 };
119 
120 const char *_unctrl[] = {
121 	"^@",	"^A",	"^B",	"^C",	"^D",	"^E",	"^F",	"^G",
122 	"^H",	"^I",	"^J",	"^K",	"^L",	"^M",	"^N",	"^O",
123 	"^P",	"^Q",	"^R",	"^S",	"^T",	"^U",	"^V",	"^W",
124 	"^X",	"^Y",	"^Z",	"^[",	"^\\",	"^]",	"^^",	"^_",
125 	" ",	"!",	"\"",	"#",	"$",	"%",	"&",	"'",
126 	"(",	")",	"*",	"+",	",",	"-",	".",	"/",
127 	"0",	"1",	"2",	"3",	"4",	"5",	"6",	"7",
128 	"8",	"9",	":",	";",	"<",	"=",	">",	"?",
129 	"@",	"A",	"B",	"C",	"D",	"E",	"F",	"G",
130 	"H",	"I",	"J",	"K",	"L",	"M",	"N",	"O",
131 	"P",	"Q",	"R",	"S",	"T",	"U",	"V",	"W",
132 	"X",	"Y",	"Z",	"[",	"\\",	"]",	"^",	"_",
133 	"`",	"a",	"b",	"c",	"d",	"e",	"f",	"g",
134 	"h",	"i",	"j",	"k",	"l",	"m",	"n",	"o",
135 	"p",	"q",	"r",	"s",	"t",	"u",	"v",	"w",
136 	"x",	"y",	"z",	"{",	"|",	"}",	"~",	"^?",
137 	"\\200","\\201","\\202","\\203","\\204","\\205","\\206","\\207",
138 	"\\210","\\211","\\212","\\213","\\214","\\215","\\216","\\217",
139 	"\\220","\\221","\\222","\\223","\\224","\\225","\\226","\\227",
140 	"\\230","\\231","\\232","\\233","\\234","\\235","\\236","\\237",
141 	"\\240","\\241","\\242","\\243","\\244","\\245","\\246","\\247",
142 	"\\250","\\251","\\252","\\253","\\254","\\255","\\256","\\257",
143 	"\\260","\\261","\\262","\\263","\\264","\\265","\\266","\\267",
144 	"\\270","\\271","\\272","\\273","\\274","\\275","\\276","\\277",
145 	"\\300","\\301","\\302","\\303","\\304","\\305","\\306","\\307",
146 	"\\310","\\311","\\312","\\313","\\314","\\315","\\316","\\317",
147 	"\\320","\\321","\\322","\\323","\\324","\\325","\\326","\\327",
148 	"\\330","\\331","\\332","\\333","\\334","\\335","\\336","\\337",
149 	"\\340","\\341","\\342","\\343","\\344","\\345","\\346","\\347",
150 	"\\350","\\351","\\352","\\353","\\354","\\355","\\356","\\357",
151 	"\\360","\\361","\\362","\\363","\\364","\\365","\\366","\\367",
152 	"\\370","\\371","\\372","\\373","\\374","\\375","\\376","\\377"
153 };
154