dnkbdmap.c revision 1.3.6.2 1 1.3.6.2 jruoho /* $NetBSD: dnkbdmap.c,v 1.3.6.2 2011/06/06 09:05:35 jruoho Exp $ */
2 1.3.6.2 jruoho /* $OpenBSD: dnkbdmap.c,v 1.2 2005/05/06 22:22:53 miod Exp $ */
3 1.3.6.2 jruoho /*
4 1.3.6.2 jruoho * Copyright (c) 2005, Miodrag Vallat
5 1.3.6.2 jruoho *
6 1.3.6.2 jruoho * Redistribution and use in source and binary forms, with or without
7 1.3.6.2 jruoho * modification, are permitted provided that the following conditions
8 1.3.6.2 jruoho * are met:
9 1.3.6.2 jruoho * 1. Redistributions of source code must retain the above copyright
10 1.3.6.2 jruoho * notice, this list of conditions and the following disclaimer.
11 1.3.6.2 jruoho * 2. Redistributions in binary form must reproduce the above copyright
12 1.3.6.2 jruoho * notice, this list of conditions and the following disclaimer in the
13 1.3.6.2 jruoho * documentation and/or other materials provided with the distribution.
14 1.3.6.2 jruoho *
15 1.3.6.2 jruoho * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16 1.3.6.2 jruoho * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17 1.3.6.2 jruoho * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 1.3.6.2 jruoho * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
19 1.3.6.2 jruoho * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 1.3.6.2 jruoho * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21 1.3.6.2 jruoho * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 1.3.6.2 jruoho * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
23 1.3.6.2 jruoho * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
24 1.3.6.2 jruoho * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 1.3.6.2 jruoho * POSSIBILITY OF SUCH DAMAGE.
26 1.3.6.2 jruoho */
27 1.3.6.2 jruoho
28 1.3.6.2 jruoho #include "opt_wsdisplay_compat.h"
29 1.3.6.2 jruoho
30 1.3.6.2 jruoho #include <sys/types.h>
31 1.3.6.2 jruoho
32 1.3.6.2 jruoho #include <dev/wscons/wsksymdef.h>
33 1.3.6.2 jruoho #include <dev/wscons/wsksymvar.h>
34 1.3.6.2 jruoho
35 1.3.6.2 jruoho #include <hp300/dev/dnkbdmap.h>
36 1.3.6.2 jruoho
37 1.3.6.2 jruoho #ifdef WSDISPLAY_COMPAT_RAWKBD
38 1.3.6.2 jruoho
39 1.3.6.2 jruoho /*
40 1.3.6.2 jruoho * Translate Domain keycodes to US keyboard XT scancodes, for proper
41 1.3.6.2 jruoho * X11-over-wsmux operation.
42 1.3.6.2 jruoho */
43 1.3.6.2 jruoho const uint8_t dnkbd_raw[0x80] = {
44 1.3.6.2 jruoho 0x00, 0x00, 0x00, 0x00, 0x44, 0x3b, 0x3c, 0x3d,
45 1.3.6.2 jruoho 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x00, 0x00,
46 1.3.6.2 jruoho 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x01, 0x01,
47 1.3.6.2 jruoho 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
48 1.3.6.2 jruoho 0x0a, 0x0b, 0x0c, 0x0d, 0x29, 0x0e, 0x00, 0x00,
49 1.3.6.2 jruoho 0x00, 0x00, 0x00, 0x00, 0x0f, 0x10, 0x11, 0x12,
50 1.3.6.2 jruoho 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a,
51 1.3.6.2 jruoho 0x1b, 0x00, 0xd3, 0x00, 0x47, 0x48, 0x49, 0x4e,
52 1.3.6.2 jruoho 0x00, 0xc8, 0x00, 0x1d, 0x00, 0x00, 0x1e, 0x1f,
53 1.3.6.2 jruoho 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
54 1.3.6.2 jruoho 0x28, 0x00, 0x1c, 0x2b, 0x00, 0x4b, 0x4c, 0x4d,
55 1.3.6.2 jruoho 0x4a, 0xcb, 0x00, 0xcd, 0x00, 0x00, 0x2a, 0x00,
56 1.3.6.2 jruoho 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33,
57 1.3.6.2 jruoho 0x34, 0x35, 0x36, 0x00, 0x00, 0x00, 0x4f, 0x50,
58 1.3.6.2 jruoho 0x51, 0x00, 0x00, 0xd0, 0x00, 0x38, 0x39, 0xb8,
59 1.3.6.2 jruoho 0x00, 0x52, 0x00, 0x53, 0x9c, 0x00, 0x3a, 0x00
60 1.3.6.2 jruoho };
61 1.3.6.2 jruoho #endif
62 1.3.6.2 jruoho
63 1.3.6.2 jruoho #define KC(n) KS_KEYCODE(n)
64 1.3.6.2 jruoho
65 1.3.6.2 jruoho /*
66 1.3.6.2 jruoho * US English
67 1.3.6.2 jruoho */
68 1.3.6.2 jruoho
69 1.3.6.2 jruoho static const keysym_t dnkbd_keydesc_us[] = {
70 1.3.6.2 jruoho /* pos command normal shifted */
71 1.3.6.2 jruoho /* 01 Ins Mark */
72 1.3.6.2 jruoho /* 02 Line Del */
73 1.3.6.2 jruoho /* 03 Char Del */
74 1.3.6.2 jruoho KC(0x04), KS_f10,
75 1.3.6.2 jruoho KC(0x05), KS_f1,
76 1.3.6.2 jruoho KC(0x06), KS_f2,
77 1.3.6.2 jruoho KC(0x07), KS_f3,
78 1.3.6.2 jruoho KC(0x08), KS_f4,
79 1.3.6.2 jruoho KC(0x09), KS_f5,
80 1.3.6.2 jruoho KC(0x0a), KS_f6,
81 1.3.6.2 jruoho KC(0x0b), KS_f7,
82 1.3.6.2 jruoho KC(0x0c), KS_f8,
83 1.3.6.2 jruoho KC(0x0d), KS_f9,
84 1.3.6.2 jruoho /* 0e Again */
85 1.3.6.2 jruoho /* 0f Read */
86 1.3.6.2 jruoho /* 10 Save Edit */
87 1.3.6.2 jruoho /* 11 Abort Exit */
88 1.3.6.2 jruoho KC(0x12), KS_Hold_Screen,
89 1.3.6.2 jruoho /* 13 Cut Copy */
90 1.3.6.2 jruoho /* 14 Undo Paste */
91 1.3.6.2 jruoho /* 15 Move Grow */
92 1.3.6.2 jruoho KC(0x17), KS_Cmd_Debugger, KS_Escape,
93 1.3.6.2 jruoho KC(0x18), KS_1, KS_exclam,
94 1.3.6.2 jruoho KC(0x19), KS_2, KS_at,
95 1.3.6.2 jruoho KC(0x1a), KS_3, KS_numbersign,
96 1.3.6.2 jruoho KC(0x1b), KS_4, KS_dollar,
97 1.3.6.2 jruoho KC(0x1c), KS_5, KS_percent,
98 1.3.6.2 jruoho KC(0x1d), KS_6, KS_asciicircum,
99 1.3.6.2 jruoho KC(0x1e), KS_7, KS_ampersand,
100 1.3.6.2 jruoho KC(0x1f), KS_8, KS_asterisk,
101 1.3.6.2 jruoho KC(0x20), KS_9, KS_parenleft,
102 1.3.6.2 jruoho KC(0x21), KS_0, KS_parenright,
103 1.3.6.2 jruoho KC(0x22), KS_minus, KS_underscore,
104 1.3.6.2 jruoho KC(0x23), KS_equal, KS_plus,
105 1.3.6.2 jruoho KC(0x24), KS_grave, KS_asciitilde,
106 1.3.6.2 jruoho KC(0x25), KS_Cmd_ResetEmul, KS_Delete, /* backspace */
107 1.3.6.2 jruoho KC(0x27), KS_Home,
108 1.3.6.2 jruoho /* 28 Shell Cmd */
109 1.3.6.2 jruoho KC(0x29), KS_End,
110 1.3.6.2 jruoho KC(0x2c), KS_Tab,
111 1.3.6.2 jruoho KC(0x2d), KS_q,
112 1.3.6.2 jruoho KC(0x2e), KS_w,
113 1.3.6.2 jruoho KC(0x2f), KS_e,
114 1.3.6.2 jruoho KC(0x30), KS_r,
115 1.3.6.2 jruoho KC(0x31), KS_t,
116 1.3.6.2 jruoho KC(0x32), KS_y,
117 1.3.6.2 jruoho KC(0x33), KS_u,
118 1.3.6.2 jruoho KC(0x34), KS_i,
119 1.3.6.2 jruoho KC(0x35), KS_o,
120 1.3.6.2 jruoho KC(0x36), KS_p,
121 1.3.6.2 jruoho KC(0x37), KS_bracketleft, KS_braceleft,
122 1.3.6.2 jruoho KC(0x38), KS_bracketright,KS_braceright,
123 1.3.6.2 jruoho KC(0x3a), KS_Delete,
124 1.3.6.2 jruoho KC(0x3c), KS_KP_7,
125 1.3.6.2 jruoho KC(0x3d), KS_KP_8,
126 1.3.6.2 jruoho KC(0x3e), KS_KP_9,
127 1.3.6.2 jruoho KC(0x3f), KS_KP_Add,
128 1.3.6.2 jruoho /* 40 Left Box */
129 1.3.6.2 jruoho KC(0x41), KS_Up,
130 1.3.6.2 jruoho /* 42 Right Box */
131 1.3.6.2 jruoho KC(0x43), KS_Cmd1, KS_Control_L,
132 1.3.6.2 jruoho KC(0x46), KS_a,
133 1.3.6.2 jruoho KC(0x47), KS_s,
134 1.3.6.2 jruoho KC(0x48), KS_d,
135 1.3.6.2 jruoho KC(0x49), KS_f,
136 1.3.6.2 jruoho KC(0x4a), KS_g,
137 1.3.6.2 jruoho KC(0x4b), KS_h,
138 1.3.6.2 jruoho KC(0x4c), KS_j,
139 1.3.6.2 jruoho KC(0x4d), KS_k,
140 1.3.6.2 jruoho KC(0x4e), KS_l,
141 1.3.6.2 jruoho KC(0x4f), KS_semicolon, KS_colon,
142 1.3.6.2 jruoho KC(0x50), KS_apostrophe, KS_quotedbl,
143 1.3.6.2 jruoho KC(0x52), KS_Return,
144 1.3.6.2 jruoho KC(0x53), KS_backslash, KS_bar,
145 1.3.6.2 jruoho KC(0x55), KS_KP_4,
146 1.3.6.2 jruoho KC(0x56), KS_KP_5,
147 1.3.6.2 jruoho KC(0x57), KS_KP_6,
148 1.3.6.2 jruoho KC(0x58), KS_KP_Subtract,
149 1.3.6.2 jruoho KC(0x59), KS_Left,
150 1.3.6.2 jruoho /* 5a Next Wndw */
151 1.3.6.2 jruoho KC(0x5b), KS_Right,
152 1.3.6.2 jruoho /* 5d Rept */
153 1.3.6.2 jruoho KC(0x5e), KS_Shift_L,
154 1.3.6.2 jruoho KC(0x60), KS_z,
155 1.3.6.2 jruoho KC(0x61), KS_x,
156 1.3.6.2 jruoho KC(0x62), KS_c,
157 1.3.6.2 jruoho KC(0x63), KS_v,
158 1.3.6.2 jruoho KC(0x64), KS_b,
159 1.3.6.2 jruoho KC(0x65), KS_n,
160 1.3.6.2 jruoho KC(0x66), KS_m,
161 1.3.6.2 jruoho KC(0x67), KS_comma, KS_less,
162 1.3.6.2 jruoho KC(0x68), KS_period, KS_greater,
163 1.3.6.2 jruoho KC(0x69), KS_slash, KS_question,
164 1.3.6.2 jruoho KC(0x6a), KS_Shift_R,
165 1.3.6.2 jruoho /* 6c Pop */
166 1.3.6.2 jruoho KC(0x6e), KS_KP_1,
167 1.3.6.2 jruoho KC(0x6f), KS_KP_2,
168 1.3.6.2 jruoho KC(0x70), KS_KP_3,
169 1.3.6.2 jruoho /* 72 Top Box */
170 1.3.6.2 jruoho KC(0x73), KS_Down,
171 1.3.6.2 jruoho /* 74 Bottom Box */
172 1.3.6.2 jruoho KC(0x75), KS_Cmd2, KS_Alt_L,
173 1.3.6.2 jruoho KC(0x76), KS_space,
174 1.3.6.2 jruoho KC(0x77), KS_Cmd2, KS_Alt_R, KS_Multi_key,
175 1.3.6.2 jruoho KC(0x79), KS_KP_0,
176 1.3.6.2 jruoho KC(0x7b), KS_KP_Separator,
177 1.3.6.2 jruoho KC(0x7c), KS_KP_Enter,
178 1.3.6.2 jruoho KC(0x7e), KS_Caps_Lock
179 1.3.6.2 jruoho };
180 1.3.6.2 jruoho
181 1.3.6.2 jruoho /*
182 1.3.6.2 jruoho * German
183 1.3.6.2 jruoho */
184 1.3.6.2 jruoho
185 1.3.6.2 jruoho static const keysym_t dnkbd_keydesc_de[] = {
186 1.3.6.2 jruoho /* pos normal shifted altgr */
187 1.3.6.2 jruoho KC(0x17), KS_dead_circumflex, KS_dead_abovering,
188 1.3.6.2 jruoho KC(0x19), KS_2, KS_quotedbl,
189 1.3.6.2 jruoho KC(0x1a), KS_3, KS_at, KS_section,
190 1.3.6.2 jruoho KC(0x1d), KS_6, KS_ampersand,
191 1.3.6.2 jruoho KC(0x1e), KS_7, KS_slash,
192 1.3.6.2 jruoho KC(0x1f), KS_8, KS_parenleft,
193 1.3.6.2 jruoho KC(0x20), KS_9, KS_parenright,
194 1.3.6.2 jruoho KC(0x21), KS_0, KS_equal,
195 1.3.6.2 jruoho KC(0x22), KS_dead_tilde, KS_question, KS_ssharp,
196 1.3.6.2 jruoho KC(0x23), KS_dead_acute, KS_dead_grave,
197 1.3.6.2 jruoho KC(0x32), KS_z,
198 1.3.6.2 jruoho KC(0x37), KS_braceright, KS_bracketright,KS_udiaeresis,
199 1.3.6.2 jruoho KC(0x38), KS_plus, KS_asterisk,
200 1.3.6.2 jruoho KC(0x4f), KS_bar, KS_backslash, KS_odiaeresis,
201 1.3.6.2 jruoho KC(0x50), KS_braceleft, KS_bracketleft, KS_adiaeresis,
202 1.3.6.2 jruoho KC(0x51), KS_numbersign, KS_apostrophe,
203 1.3.6.2 jruoho KC(0x5f), KS_less, KS_greater,
204 1.3.6.2 jruoho KC(0x60), KS_y,
205 1.3.6.2 jruoho KC(0x67), KS_comma, KS_semicolon,
206 1.3.6.2 jruoho KC(0x68), KS_period, KS_colon,
207 1.3.6.2 jruoho KC(0x69), KS_minus, KS_underscore,
208 1.3.6.2 jruoho KC(0x77), KS_Mode_switch, KS_Multi_key
209 1.3.6.2 jruoho };
210 1.3.6.2 jruoho
211 1.3.6.2 jruoho static const keysym_t dnkbd_keydesc_de_nodead[] = {
212 1.3.6.2 jruoho KC(0x17), KS_asciicircum, KS_degree,
213 1.3.6.2 jruoho KC(0x22), KS_asciitilde, KS_question, KS_ssharp,
214 1.3.6.2 jruoho KC(0x23), KS_apostrophe, KS_grave
215 1.3.6.2 jruoho };
216 1.3.6.2 jruoho
217 1.3.6.2 jruoho /*
218 1.3.6.2 jruoho * Norwegian / Danish
219 1.3.6.2 jruoho */
220 1.3.6.2 jruoho
221 1.3.6.2 jruoho static const keysym_t dnkbd_keydesc_dk[] = {
222 1.3.6.2 jruoho /* pos normal shifted altgr */
223 1.3.6.2 jruoho KC(0x17), KS_underscore,
224 1.3.6.2 jruoho KC(0x19), KS_2, KS_quotedbl,
225 1.3.6.2 jruoho KC(0x1d), KS_6, KS_ampersand,
226 1.3.6.2 jruoho KC(0x1e), KS_7, KS_slash,
227 1.3.6.2 jruoho KC(0x1f), KS_8, KS_parenleft,
228 1.3.6.2 jruoho KC(0x20), KS_9, KS_parenright,
229 1.3.6.2 jruoho KC(0x21), KS_0, KS_equal,
230 1.3.6.2 jruoho KC(0x22), KS_plus, KS_question,
231 1.3.6.2 jruoho KC(0x23), KS_dead_grave, KS_at,
232 1.3.6.2 jruoho KC(0x37), KS_braceright, KS_bracketright,KS_aring,
233 1.3.6.2 jruoho KC(0x38), KS_dead_tilde, KS_dead_circumflex,KS_dead_diaeresis,
234 1.3.6.2 jruoho KC(0x4f), KS_bar, KS_backslash, KS_oslash,
235 1.3.6.2 jruoho KC(0x50), KS_braceleft, KS_bracketleft, KS_ae,
236 1.3.6.2 jruoho KC(0x51), KS_dead_acute, KS_asterisk,
237 1.3.6.2 jruoho KC(0x5f), KS_less, KS_greater,
238 1.3.6.2 jruoho KC(0x67), KS_comma, KS_semicolon,
239 1.3.6.2 jruoho KC(0x68), KS_period, KS_colon,
240 1.3.6.2 jruoho KC(0x69), KS_minus, KS_underscore,
241 1.3.6.2 jruoho KC(0x77), KS_Mode_switch, KS_Multi_key
242 1.3.6.2 jruoho };
243 1.3.6.2 jruoho
244 1.3.6.2 jruoho static const keysym_t dnkbd_keydesc_dk_nodead[] = {
245 1.3.6.2 jruoho /* pos normal shifted altgr */
246 1.3.6.2 jruoho KC(0x23), KS_grave, KS_at,
247 1.3.6.2 jruoho KC(0x38), KS_asciitilde, KS_asciicircum, KS_diaeresis,
248 1.3.6.2 jruoho KC(0x51), KS_apostrophe, KS_asterisk,
249 1.3.6.2 jruoho };
250 1.3.6.2 jruoho
251 1.3.6.2 jruoho /*
252 1.3.6.2 jruoho * French
253 1.3.6.2 jruoho */
254 1.3.6.2 jruoho
255 1.3.6.2 jruoho static const keysym_t dnkbd_keydesc_fr[] = {
256 1.3.6.2 jruoho /* pos normal shifted altgr */
257 1.3.6.2 jruoho KC(0x17), KS_bracketleft, KS_degree,
258 1.3.6.2 jruoho KC(0x18), KS_ampersand, KS_1,
259 1.3.6.2 jruoho KC(0x19), KS_braceleft, KS_2, KS_eacute,
260 1.3.6.2 jruoho KC(0x1a), KS_quotedbl, KS_3,
261 1.3.6.2 jruoho KC(0x1b), KS_apostrophe, KS_4,
262 1.3.6.2 jruoho KC(0x1c), KS_parenleft, KS_5,
263 1.3.6.2 jruoho KC(0x1d), KS_bracketright,KS_6, KS_section,
264 1.3.6.2 jruoho KC(0x1e), KS_braceright, KS_7, KS_egrave,
265 1.3.6.2 jruoho KC(0x1f), KS_exclam, KS_8,
266 1.3.6.2 jruoho KC(0x20), KS_backslash, KS_9, KS_ccedilla,
267 1.3.6.2 jruoho KC(0x21), KS_at, KS_0, KS_agrave,
268 1.3.6.2 jruoho KC(0x22), KS_parenright, KS_degree,
269 1.3.6.2 jruoho KC(0x23), KS_minus, KS_underscore,
270 1.3.6.2 jruoho KC(0x2d), KS_a,
271 1.3.6.2 jruoho KC(0x2e), KS_z,
272 1.3.6.2 jruoho KC(0x37), KS_dead_circumflex, KS_asciitilde, KS_dead_diaeresis,
273 1.3.6.2 jruoho KC(0x38), KS_dollar, KS_asterisk,
274 1.3.6.2 jruoho KC(0x46), KS_q,
275 1.3.6.2 jruoho KC(0x4f), KS_m,
276 1.3.6.2 jruoho KC(0x50), KS_bar, KS_percent, KS_ugrave,
277 1.3.6.2 jruoho KC(0x51), KS_grave, KS_numbersign,
278 1.3.6.2 jruoho KC(0x5f), KS_less, KS_greater,
279 1.3.6.2 jruoho KC(0x60), KS_w,
280 1.3.6.2 jruoho KC(0x66), KS_comma, KS_question,
281 1.3.6.2 jruoho KC(0x67), KS_semicolon, KS_period,
282 1.3.6.2 jruoho KC(0x68), KS_colon, KS_slash,
283 1.3.6.2 jruoho KC(0x69), KS_equal, KS_plus,
284 1.3.6.2 jruoho KC(0x77), KS_Mode_switch, KS_Multi_key
285 1.3.6.2 jruoho };
286 1.3.6.2 jruoho
287 1.3.6.2 jruoho /*
288 1.3.6.2 jruoho * Japanese (and basis for international layouts)
289 1.3.6.2 jruoho *
290 1.3.6.2 jruoho * Apparently this layout lacks all japanese keys (Zenkaku/Hankaku,
291 1.3.6.2 jruoho * Hiragana/Katakana, Henkan and Muhenkan). Makes one wonder about
292 1.3.6.2 jruoho * its usefulness.
293 1.3.6.2 jruoho */
294 1.3.6.2 jruoho
295 1.3.6.2 jruoho static const keysym_t dnkbd_keydesc_jp[] = {
296 1.3.6.2 jruoho /* pos cmd normal shifted */
297 1.3.6.2 jruoho KC(0x16), KS_Cmd_Debugger, KS_Escape,
298 1.3.6.2 jruoho KC(0x17), KS_grave, KS_asciitilde,
299 1.3.6.2 jruoho KC(0x24), KS_Cmd_ResetEmul, KS_Delete, /* backspace */
300 1.3.6.2 jruoho KC(0x25), KS_Delete,
301 1.3.6.2 jruoho /* 2b Rept */
302 1.3.6.2 jruoho KC(0x3b), KS_KP_Add,
303 1.3.6.2 jruoho KC(0x3f), KS_parenleft, /* KS_KP_parenleft */
304 1.3.6.2 jruoho KC(0x51), KS_backslash, KS_bar,
305 1.3.6.2 jruoho KC(0x54), KS_KP_Subtract,
306 1.3.6.2 jruoho KC(0x58), KS_parenright, /* KS_KP_parenright */
307 1.3.6.2 jruoho KC(0x5f), KS_less, KS_greater,
308 1.3.6.2 jruoho KC(0x6d), KS_KP_Multiply,
309 1.3.6.2 jruoho KC(0x78), KS_KP_Divide,
310 1.3.6.2 jruoho };
311 1.3.6.2 jruoho
312 1.3.6.2 jruoho /*
313 1.3.6.2 jruoho * Swiss (relative to the German layout)
314 1.3.6.2 jruoho */
315 1.3.6.2 jruoho
316 1.3.6.2 jruoho static const keysym_t dnkbd_keydesc_sg[] = {
317 1.3.6.2 jruoho /* pos normal shifted altgr */
318 1.3.6.2 jruoho KC(0x17), KS_at, KS_exclam, KS_section,
319 1.3.6.2 jruoho KC(0x18), KS_1, KS_plus,
320 1.3.6.2 jruoho KC(0x1a), KS_3, KS_asterisk,
321 1.3.6.2 jruoho KC(0x1b), KS_4, KS_backslash, KS_ccedilla,
322 1.3.6.2 jruoho KC(0x22), KS_apostrophe, KS_question,
323 1.3.6.2 jruoho KC(0x23), KS_dead_circumflex,KS_dead_grave,
324 1.3.6.2 jruoho KC(0x37), KS_braceright, KS_dead_tilde, KS_udiaeresis, KS_egrave,
325 1.3.6.2 jruoho KC(0x38), KS_dead_diaeresis,KS_dead_acute,
326 1.3.6.2 jruoho KC(0x4f), KS_bar, KS_bracketleft, KS_odiaeresis, KS_eacute,
327 1.3.6.2 jruoho KC(0x50), KS_braceleft, KS_bracketright,KS_adiaeresis, KS_agrave,
328 1.3.6.2 jruoho KC(0x51), KS_dollar, KS_numbersign, KS_sterling
329 1.3.6.2 jruoho };
330 1.3.6.2 jruoho
331 1.3.6.2 jruoho static const keysym_t dnkbd_keydesc_sg_nodead[] = {
332 1.3.6.2 jruoho /* pos normal shifted altgr */
333 1.3.6.2 jruoho KC(0x23), KS_asciicircum, KS_grave,
334 1.3.6.2 jruoho KC(0x37), KS_braceright, KS_asciitilde, KS_udiaeresis, KS_egrave,
335 1.3.6.2 jruoho KC(0x38), KS_diaeresis, KS_apostrophe
336 1.3.6.2 jruoho };
337 1.3.6.2 jruoho
338 1.3.6.2 jruoho /*
339 1.3.6.2 jruoho * Swedish / Finnish (relative to the Norwegian / Danish layout)
340 1.3.6.2 jruoho */
341 1.3.6.2 jruoho
342 1.3.6.2 jruoho static const keysym_t dnkbd_keydesc_sv[] = {
343 1.3.6.2 jruoho /* pos normal shifted altgr */
344 1.3.6.2 jruoho KC(0x1b), KS_4, KS_dollar, KS_currency,
345 1.3.6.2 jruoho KC(0x23), KS_dead_grave, KS_at, KS_eacute,
346 1.3.6.2 jruoho KC(0x38), KS_dead_tilde, KS_dead_circumflex,KS_udiaeresis,
347 1.3.6.2 jruoho KC(0x4f), KS_bar, KS_backslash, KS_odiaeresis,
348 1.3.6.2 jruoho KC(0x50), KS_braceleft, KS_bracketleft, KS_adiaeresis
349 1.3.6.2 jruoho };
350 1.3.6.2 jruoho
351 1.3.6.2 jruoho static const keysym_t dnkbd_keydesc_sv_nodead[] = {
352 1.3.6.2 jruoho /* pos normal shifted altgr */
353 1.3.6.2 jruoho KC(0x23), KS_grave, KS_at, KS_eacute,
354 1.3.6.2 jruoho KC(0x38), KS_asciitilde, KS_asciicircum, KS_udiaeresis,
355 1.3.6.2 jruoho KC(0x51), KS_apostrophe, KS_asterisk,
356 1.3.6.2 jruoho };
357 1.3.6.2 jruoho
358 1.3.6.2 jruoho /*
359 1.3.6.2 jruoho * UK English
360 1.3.6.2 jruoho */
361 1.3.6.2 jruoho
362 1.3.6.2 jruoho static const keysym_t dnkbd_keydesc_uk[] = {
363 1.3.6.2 jruoho /* pos normal shifted */
364 1.3.6.2 jruoho KC(0x17), KS_underscore,
365 1.3.6.2 jruoho KC(0x19), KS_2, KS_quotedbl,
366 1.3.6.2 jruoho KC(0x1d), KS_6, KS_ampersand,
367 1.3.6.2 jruoho KC(0x1e), KS_7, KS_apostrophe,
368 1.3.6.2 jruoho KC(0x1f), KS_8, KS_parenleft,
369 1.3.6.2 jruoho KC(0x20), KS_9, KS_parenright,
370 1.3.6.2 jruoho KC(0x21), KS_0, KS_underscore,
371 1.3.6.2 jruoho KC(0x22), KS_minus, KS_equal,
372 1.3.6.2 jruoho KC(0x23), KS_asciicircum, KS_asciitilde,
373 1.3.6.2 jruoho KC(0x37), KS_at, KS_grave,
374 1.3.6.2 jruoho KC(0x38), KS_bracketleft, KS_braceleft,
375 1.3.6.2 jruoho KC(0x4f), KS_semicolon, KS_plus,
376 1.3.6.2 jruoho KC(0x50), KS_colon, KS_asterisk,
377 1.3.6.2 jruoho KC(0x51), KS_bracketright,KS_braceright,
378 1.3.6.2 jruoho KC(0x5f), KS_backslash, KS_bar
379 1.3.6.2 jruoho };
380 1.3.6.2 jruoho
381 1.3.6.2 jruoho #define KBD_MAP(name, base, map) \
382 1.3.6.2 jruoho { name, base, sizeof(map) / sizeof(keysym_t), map }
383 1.3.6.2 jruoho
384 1.3.6.2 jruoho const struct wscons_keydesc dnkbd_keydesctab[] = {
385 1.3.6.2 jruoho KBD_MAP(KB_US, 0, dnkbd_keydesc_us),
386 1.3.6.2 jruoho KBD_MAP(KB_DE, KB_JP, dnkbd_keydesc_de),
387 1.3.6.2 jruoho KBD_MAP(KB_DE | KB_NODEAD, KB_DE, dnkbd_keydesc_de_nodead),
388 1.3.6.2 jruoho KBD_MAP(KB_DK, KB_JP, dnkbd_keydesc_dk),
389 1.3.6.2 jruoho KBD_MAP(KB_DK | KB_NODEAD, KB_DK, dnkbd_keydesc_dk_nodead),
390 1.3.6.2 jruoho KBD_MAP(KB_FR, KB_JP, dnkbd_keydesc_fr),
391 1.3.6.2 jruoho KBD_MAP(KB_JP, KB_US, dnkbd_keydesc_jp),
392 1.3.6.2 jruoho KBD_MAP(KB_SG, KB_DE, dnkbd_keydesc_sg),
393 1.3.6.2 jruoho KBD_MAP(KB_SG | KB_NODEAD, KB_SG, dnkbd_keydesc_sg_nodead),
394 1.3.6.2 jruoho KBD_MAP(KB_SV, KB_DK, dnkbd_keydesc_sv),
395 1.3.6.2 jruoho KBD_MAP(KB_SV | KB_NODEAD, KB_SV, dnkbd_keydesc_sv_nodead),
396 1.3.6.2 jruoho KBD_MAP(KB_UK, KB_JP, dnkbd_keydesc_uk),
397 1.3.6.2 jruoho { 0, 0, 0, 0 }
398 1.3.6.2 jruoho };
399