1 /* $NetBSD: adb_keymap.h,v 1.2 2007/08/06 03:40:10 macallan Exp $ */
4 * Copyright (c) 1997 The NetBSD Foundation, Inc.
7 * This code is derived from software contributed to The NetBSD Foundation
8 * by Juergen Hannken-Illjes.
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
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.
19 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE.
32 /* XXX This list is incomplete. */
34 #define KC(n) KS_KEYCODE(n)
36 static const keysym_t akbd_keydesc_us
[] = {
37 /* pos command normal shifted */
56 KC(18), KS_1
, KS_exclam
,
58 KC(20), KS_3
, KS_numbersign
,
59 KC(21), KS_4
, KS_dollar
,
60 KC(22), KS_6
, KS_asciicircum
,
61 KC(23), KS_5
, KS_percent
,
62 KC(24), KS_equal
, KS_plus
,
63 KC(25), KS_9
, KS_parenleft
,
64 KC(26), KS_7
, KS_ampersand
,
65 KC(27), KS_minus
, KS_underscore
,
66 KC(28), KS_8
, KS_asterisk
,
67 KC(29), KS_0
, KS_parenright
,
68 KC(30), KS_bracketright
, KS_braceright
,
71 KC(33), KS_bracketleft
, KS_braceleft
,
77 KC(39), KS_apostrophe
, KS_quotedbl
,
79 KC(41), KS_semicolon
, KS_colon
,
80 KC(42), KS_backslash
, KS_bar
,
81 KC(43), KS_comma
, KS_less
,
82 KC(44), KS_slash
, KS_question
,
85 KC(47), KS_period
, KS_greater
,
88 KC(50), KS_grave
, KS_asciitilde
,
90 KC(52), KS_KP_Enter
, /* Pretend this is alt-R ? */
93 KC(55), KS_Cmd
, /* Command */
96 KC(58), KS_Cmd1
, /* Option */
99 KC(61), KS_Cmd_ScrollSlowDown
, KS_Down
,
100 KC(62), KS_Cmd_ScrollSlowUp
, KS_Up
,
101 KC(65), KS_KP_Decimal
,
102 KC(67), KS_KP_Multiply
,
105 KC(75), KS_KP_Divide
,
107 KC(78), KS_KP_Subtract
,
110 KC(82), KS_KP_Insert
, KS_KP_0
,
111 KC(83), KS_KP_End
, KS_KP_1
,
112 KC(84), KS_Cmd_ScrollSlowUp
, KS_KP_Down
, KS_KP_2
,
113 KC(85), KS_Cmd_ScrollFastDown
, KS_KP_Next
, KS_KP_3
,
114 KC(86), KS_KP_Left
, KS_KP_4
,
115 KC(87), KS_KP_Begin
, KS_KP_5
,
116 KC(88), KS_KP_Right
, KS_KP_6
,
117 KC(89), KS_KP_Home
, KS_KP_7
,
119 KC(91), KS_Cmd_ScrollSlowUp
, KS_KP_Up
, KS_KP_8
,
120 KC(92), KS_Cmd_ScrollFastUp
, KS_KP_Prior
, KS_KP_9
,
122 KC(95), KS_KP_Delete
, KS_KP_Decimal
,
123 KC(96), KS_Cmd_Screen4
, KS_f5
,
124 KC(97), KS_Cmd_Screen5
, KS_f6
,
125 KC(98), KS_Cmd_Screen6
, KS_f7
,
126 KC(99), KS_Cmd_Screen2
, KS_f3
,
127 KC(100),KS_Cmd_Screen7
, KS_f8
,
129 KC(101),KS_Cmd_Screen8
, KS_f9
,
133 KC(105), KS_Print_Screen
,
134 KC(106), KS_KP_Enter
,
135 KC(107), KS_Hold_Screen
,
137 KC(109),KS_Cmd_Screen9
, KS_f10
,
144 KC(116), KS_Cmd_ScrollFastUp
, KS_Prior
,
145 KC(117), KS_Delete
, /* BackSpace */
146 KC(118),KS_Cmd_Screen3
, KS_f4
,
148 KC(120),KS_Cmd_Screen1
, KS_f2
,
149 KC(121),KS_Cmd_ScrollFastDown
, KS_Next
,
150 KC(122),KS_Cmd_Screen0
, KS_f1
,
152 KC(127), KS_Cmd_Debugger
,
155 static const keysym_t akbd_keydesc_fr
[] = {
156 /* pos normal shifted altgr shift-altgr */
158 KC(1), KS_s
, KS_S
, KS_Ograve
,
159 KC(4), KS_h
, KS_H
, KS_Igrave
, KS_Icircumflex
,
160 KC(6), KS_w
, KS_W
, KS_less
, KS_greater
,
161 KC(8), KS_c
, KS_C
, KS_copyright
, KS_cent
,
162 KC(10), KS_at
, KS_numbersign
,
163 KC(11), KS_b
, KS_B
, KS_ssharp
,
164 KC(12), KS_a
, KS_A
, KS_ae
, KS_AE
,
165 KC(13), KS_z
, KS_Z
, KS_Acircumflex
, KS_Aring
,
166 KC(14), KS_e
, KS_E
, KS_ecircumflex
, KS_Ecircumflex
,
167 KC(15), KS_r
, KS_R
, KS_registered
, /* Euro */
168 KC(16), KS_y
, KS_Y
, KS_Uacute
,
169 KC(18), KS_ampersand
, KS_1
, KS_voidSymbol
, KS_dead_acute
,
170 KC(19), KS_eacute
, KS_2
, KS_ediaeresis
,
171 KC(20), KS_quotedbl
, KS_3
,
172 KC(21), KS_apostrophe
, KS_4
, KS_braceleft
, KS_bracketleft
,
173 KC(22), KS_section
, KS_6
, KS_paragraph
,
174 KC(23), KS_parenleft
, KS_5
, KS_braceleft
, KS_bracketleft
,
175 KC(24), KS_minus
, KS_underscore
, KS_braceright
,
176 KC(25), KS_ccedilla
, KS_9
, KS_Ccedilla
, KS_Agrave
,
177 KC(26), KS_egrave
, KS_7
, KS_guillemotleft
,KS_guillemotright
,
178 KC(27), KS_parenright
, KS_degree
, KS_braceright
, KS_bracketright
,
179 KC(28), KS_exclam
, KS_8
, KS_exclamdown
, KS_Ucircumflex
,
180 KC(29), KS_agrave
, KS_0
, KS_oslash
,
181 KC(30), KS_dollar
, KS_asterisk
, KS_comma
, KS_yen
,
182 KC(33), KS_dead_circumflex
, KS_dead_diaeresis
,KS_ocircumflex
,KS_Ocircumflex
,
183 KC(34), KS_i
, KS_I
, KS_icircumflex
, KS_Icircumflex
,
184 KC(37), KS_l
, KS_L
, KS_notsign
, KS_bar
,
185 KC(38), KS_j
, KS_J
, KS_Idiaeresis
, KS_Igrave
,
186 KC(39), KS_ugrave
, KS_percent
, KS_Ugrave
,
187 KC(40), KS_k
, KS_K
, KS_Egrave
, KS_Ediaeresis
,
188 KC(41), KS_m
, KS_M
, KS_mu
, KS_Ograve
,
189 KC(42), KS_dead_grave
, KS_sterling
, KS_at
, KS_numbersign
,
190 KC(43), KS_semicolon
, KS_period
,
191 KC(44), KS_equal
, KS_plus
, KS_voidSymbol
, KS_plusminus
,
192 KC(45), KS_n
, KS_N
, KS_dead_tilde
,
193 KC(46), KS_comma
, KS_question
, KS_voidSymbol
, KS_questiondown
,
194 KC(47), KS_colon
, KS_slash
, KS_division
, KS_backslash
,
195 KC(50), KS_less
, KS_greater
,
197 KC(55), KS_Meta_L
, /* Command */
198 KC(58), KS_Mode_switch
, KS_Multi_key
, /* Option */
201 static const keysym_t akbd_keydesc_fr_nodead
[] = {
202 KC(18), KS_ampersand
, KS_1
, KS_voidSymbol
, KS_acute
,
203 KC(33), KS_asciicircum
, KS_diaeresis
, KS_ocircumflex
, KS_Ocircumflex
,
204 KC(42), KS_grave
, KS_sterling
, KS_at
, KS_numbersign
,
205 KC(45), KS_n
, KS_N
, KS_asciitilde
,
208 static const keysym_t akbd_keydesc_jp
[] = {
209 /* pos command normal shifted */
210 KC(19), KS_2
, KS_quotedbl
,
211 KC(22), KS_6
, KS_ampersand
,
212 KC(24), KS_asciicircum
, KS_asciitilde
,
213 KC(25), KS_9
, KS_parenright
,
214 KC(26), KS_7
, KS_apostrophe
,
215 KC(27), KS_minus
, KS_equal
,
216 KC(28), KS_8
, KS_parenleft
,
218 KC(30), KS_bracketleft
, KS_braceleft
,
219 KC(33), KS_at
, KS_grave
,
220 KC(39), KS_colon
, KS_asterisk
,
222 KC(41), KS_semicolon
, KS_plus
,
223 KC(42), KS_bracketright
,KS_braceright
,
224 KC(93), KS_backslash
, KS_bar
,
225 KC(94), KS_underscore
,
228 static const keysym_t akbd_keydesc_uk
[] = {
229 /* pos normal shifted altgr shift-altgr */
230 KC(10), KS_section
, KS_plusminus
,
231 KC(20), KS_3
, KS_sterling
, KS_numbersign
,
233 KC(58), KS_Mode_switch
, KS_Multi_key
, /* Option */
236 static const keysym_t akbd_keydesc_sv
[] = {
237 /* pos normal shifted altgr shift-altgr */
238 KC(10), KS_section
, KS_degree
,
239 KC(19), KS_2
, KS_quotedbl
, KS_at
,
240 KC(21), KS_4
, KS_dollar
,
241 KC(22), KS_6
, KS_ampersand
,
242 KC(24), KS_dead_acute
, KS_dead_grave
,
243 KC(25), KS_9
, KS_parenright
, KS_bracketright
,
244 KC(26), KS_7
, KS_slash
, KS_braceleft
,
245 KC(27), KS_plus
, KS_question
, KS_backslash
,
246 KC(28), KS_8
, KS_parenleft
, KS_bracketleft
,
247 KC(29), KS_0
, KS_equal
, KS_braceright
,
248 KC(30), KS_dead_diaeresis
,KS_dead_circumflex
,KS_dead_tilde
,
250 KC(39), KS_adiaeresis
,
251 KC(41), KS_odiaeresis
,
252 KC(42), KS_apostrophe
, KS_asterisk
,
253 KC(43), KS_comma
, KS_semicolon
,
254 KC(44), KS_minus
, KS_underscore
,
255 KC(47), KS_period
, KS_colon
,
256 KC(50), KS_less
, KS_greater
, KS_bar
,
257 KC(58), KS_Mode_switch
,KS_Multi_key
,
260 static const keysym_t akbd_keydesc_sv_nodead
[] = {
261 /* pos normal shifted altgr shift-altgr */
262 KC(24), KS_apostrophe
, KS_grave
,
263 KC(30), KS_diaeresis
, KS_asciicircum
, KS_asciitilde
,
266 static const keysym_t akbd_keydesc_de
[] = {
267 /* pos normal shifted altgr shift-altgr */
268 KC(0), KS_a
, KS_A
, KS_aring
, KS_Aring
,
269 KC(1), KS_s
, KS_S
, KS_voidSymbol
, KS_Iacute
,
270 KC(3), KS_f
, KS_F
, KS_voidSymbol
, KS_Idiaeresis
,
271 KC(4), KS_h
, KS_H
, KS_ordfeminine
, KS_Oacute
,
272 KC(5), KS_g
, KS_G
, KS_copyright
, KS_Igrave
,
273 KC(6), KS_y
, KS_Y
, KS_yen
,
274 KC(7), KS_x
, KS_X
, KS_voidSymbol
, KS_Ugrave
,
275 KC(8), KS_c
, KS_C
, KS_ccedilla
, KS_Ccedilla
,
276 KC(10), KS_dead_circumflex
,KS_degree
,
277 KC(12), KS_q
, KS_Q
, KS_guillemotleft
,KS_guillemotright
,
278 KC(15), KS_r
, KS_R
, KS_registered
, KS_cedilla
,
280 KC(18), KS_1
, KS_exclam
, KS_exclamdown
, KS_notsign
,
281 KC(19), KS_2
, KS_quotedbl
,
282 KC(20), KS_3
, KS_section
, KS_paragraph
, KS_numbersign
,
283 KC(21), KS_4
, KS_dollar
, KS_cent
, KS_sterling
,
284 KC(22), KS_6
, KS_ampersand
, KS_bracketright
,KS_dead_circumflex
,
285 KC(23), KS_5
, KS_percent
, KS_bracketleft
,
286 KC(24), KS_dead_acute
, KS_dead_grave
, KS_apostrophe
,
287 KC(25), KS_9
, KS_parenright
, KS_braceright
, KS_periodcentered
,
288 KC(26), KS_7
, KS_slash
, KS_bar
, KS_backslash
,
289 KC(27), KS_ssharp
, KS_question
, KS_questiondown
,
290 KC(28), KS_8
, KS_parenleft
, KS_braceleft
,
291 KC(29), KS_0
, KS_equal
, KS_voidSymbol
, KS_macron
,
292 KC(30), KS_plus
, KS_asterisk
, KS_plusminus
,
293 KC(31), KS_o
, KS_O
, KS_oslash
, KS_Ooblique
,
294 KC(32), KS_u
, KS_U
, KS_dead_diaeresis
,KS_Aacute
,
295 KC(33), KS_udiaeresis
, KS_Udiaeresis
, KS_voidSymbol
, KS_degree
,
296 KC(34), KS_i
, KS_I
, KS_voidSymbol
, KS_Ucircumflex
,
297 KC(37), KS_l
, KS_L
, KS_at
,
298 KC(38), KS_j
, KS_J
, KS_masculine
,
299 KC(39), KS_adiaeresis
, KS_Adiaeresis
, KS_ae
, KS_AE
,
300 KC(41), KS_odiaeresis
, KS_Odiaeresis
,
301 KC(42), KS_numbersign
, KS_apostrophe
,
302 KC(43), KS_comma
, KS_semicolon
,
303 KC(44), KS_minus
, KS_underscore
,
304 KC(45), KS_n
, KS_N
, KS_dead_tilde
,
305 KC(46), KS_m
, KS_M
, KS_mu
,
306 KC(47), KS_period
, KS_colon
,
307 KC(50), KS_less
, KS_greater
,
308 KC(52), KS_Multi_key
,
309 KC(58), KS_Mode_switch
,
312 static const keysym_t akbd_keydesc_de_nodead
[] = {
313 /* pos normal shifted altgr shift-altgr */
314 KC(10), KS_asciicircum
, KS_degree
,
315 KC(22), KS_6
, KS_ampersand
, KS_bracketright
,KS_asciicircum
,
316 KC(24), KS_acute
, KS_grave
, KS_apostrophe
,
317 KC(32), KS_u
, KS_U
, KS_diaeresis
, KS_Aacute
,
318 KC(45), KS_n
, KS_N
, KS_asciitilde
,
321 static const keysym_t akbd_keydesc_sf
[] = {
322 /* pos normal shifted altgr shift-altgr */
324 KC(10), KS_paragraph
, KS_degree
,
326 KC(18), KS_plus
, KS_1
,
327 KC(19), KS_quotedbl
, KS_2
,
328 KC(20), KS_asterisk
, KS_3
,
329 KC(21), KS_ccedilla
, KS_4
, KS_Ccedilla
,
330 KC(22), KS_ampersand
, KS_6
,
331 KC(23), KS_percent
, KS_5
,
332 KC(24), KS_dead_circumflex
,KS_grave
,
333 KC(25), KS_parenright
, KS_9
,
334 KC(26), KS_slash
, KS_7
,
335 KC(27), KS_apostrophe
, KS_question
,
336 KC(28), KS_parenleft
, KS_8
,
337 KC(29), KS_equal
, KS_0
,
338 KC(30), KS_dead_diaeresis
,KS_exclam
,
339 KC(33), KS_egrave
, KS_udiaeresis
,
340 KC(39), KS_agrave
, KS_adiaeresis
,
341 KC(41), KS_eacute
, KS_odiaeresis
,
342 KC(42), KS_dollar
, KS_sterling
,
343 KC(43), KS_period
, KS_colon
,
344 KC(46), KS_comma
, KS_semicolon
,
345 KC(47), KS_minus
, KS_underscore
,
346 KC(50), KS_less
, KS_greater
,
349 static const keysym_t akbd_keydesc_es
[] = {
350 /* pos normal shifted altgr shift-altgr */
351 KC(10), KS_degree
, KS_ordfeminine
, KS_backslash
,
352 KC(18), KS_1
, KS_exclam
, KS_bar
,
353 KC(19), KS_2
, KS_quotedbl
, KS_at
,
354 KC(20), KS_3
, KS_periodcentered
, KS_numbersign
,
355 KC(21), KS_4
, KS_dollar
, KS_asciitilde
,
356 KC(22), KS_6
, KS_ampersand
, KS_notsign
,
357 KC(23), KS_5
, KS_percent
,
358 KC(24), KS_exclamdown
, KS_questiondown
,
359 KC(25), KS_9
, KS_parenright
,
360 KC(26), KS_7
, KS_slash
,
361 KC(27), KS_apostrophe
, KS_question
,
362 KC(28), KS_8
, KS_parenleft
,
363 KC(29), KS_0
, KS_equal
,
364 KC(30), KS_plus
, KS_asterisk
, KS_bracketright
,
365 KC(33), KS_dead_grave
, KS_dead_circumflex
, KS_bracketleft
,
366 KC(39), KS_dead_acute
, KS_dead_diaeresis
, KS_braceleft
,
368 KC(42), KS_ccedilla
, KS_Ccedilla
, KS_braceright
,
369 KC(43), KS_comma
, KS_semicolon
,
370 KC(44), KS_minus
, KS_underscore
,
371 KC(47), KS_period
, KS_colon
,
372 KC(50), KS_less
, KS_greater
,
373 KC(55), KS_Alt_L
, /* Command */
374 KC(58), KS_Mode_switch
, KS_Multi_key
, /* Option */
377 static const keysym_t akbd_keydesc_pt
[] = {
378 /* pos normal shifted altgr shift-altgr */
379 KC(7), KS_x
, KS_X
, KS_guillemotleft
, KS_guillemotright
,
380 KC(10), KS_section
, KS_plusminus
,
381 KC(19), KS_2
, KS_quotedbl
, KS_at
,
382 KC(20), KS_3
, KS_numbersign
, KS_sterling
,
383 KC(22), KS_6
, KS_ampersand
,
384 KC(24), KS_plus
, KS_asterisk
,
385 KC(25), KS_9
, KS_parenright
, KS_bracketright
, KS_braceright
,
386 KC(26), KS_7
, KS_slash
,
387 KC(27), KS_apostrophe
, KS_question
,
388 KC(28), KS_8
, KS_parenleft
, KS_bracketleft
, KS_braceleft
,
389 KC(29), KS_0
, KS_equal
,
390 KC(30), KS_dead_acute
, KS_dead_grave
,
391 KC(33), KS_masculine
, KS_ordfeminine
,
392 KC(39), KS_dead_tilde
, KS_dead_circumflex
,
393 KC(41), KS_ccedilla
, KS_Ccedilla
,
394 KC(43), KS_comma
, KS_semicolon
,
395 KC(44), KS_minus
, KS_underscore
,
396 KC(47), KS_period
, KS_colon
,
397 KC(50), KS_less
, KS_greater
,
398 KC(58), KS_Mode_switch
,
402 #define KBD_MAP(name, base, map) \
403 { name, base, sizeof(map)/sizeof(keysym_t), map }
405 static const struct wscons_keydesc akbd_keydesctab
[] = {
406 KBD_MAP(KB_US
, 0, akbd_keydesc_us
),
407 KBD_MAP(KB_FR
, KB_US
, akbd_keydesc_fr
),
408 KBD_MAP(KB_JP
, KB_US
, akbd_keydesc_jp
),
409 KBD_MAP(KB_FR
| KB_NODEAD
, KB_FR
, akbd_keydesc_fr_nodead
),
410 KBD_MAP(KB_SF
, KB_US
, akbd_keydesc_sf
),
411 KBD_MAP(KB_SV
, KB_US
, akbd_keydesc_sv
),
412 KBD_MAP(KB_SV
| KB_NODEAD
, KB_SV
, akbd_keydesc_sv_nodead
),
413 KBD_MAP(KB_DE
, KB_US
, akbd_keydesc_de
),
414 KBD_MAP(KB_DE
| KB_NODEAD
, KB_DE
, akbd_keydesc_de_nodead
),
415 KBD_MAP(KB_UK
, KB_US
, akbd_keydesc_uk
),
416 KBD_MAP(KB_ES
, KB_US
, akbd_keydesc_es
),
417 KBD_MAP(KB_PT
, KB_US
, akbd_keydesc_pt
),