From 9f23c4b66ef43b3d1582ece2127784fdb241a93e Mon Sep 17 00:00:00 2001 From: hendrik Date: Fri, 10 Apr 2009 22:44:16 +0000 Subject: [PATCH] anfang von openbsd/wscons treiber --- unix/openbsd/wskbdmap_mfii.c | 1097 ++++++++++++++++++++++++++++++++++ unix/openbsd/wsksymdef.h | 781 ++++++++++++++++++++++++ 2 files changed, 1878 insertions(+) create mode 100644 unix/openbsd/wskbdmap_mfii.c create mode 100644 unix/openbsd/wsksymdef.h diff --git a/unix/openbsd/wskbdmap_mfii.c b/unix/openbsd/wskbdmap_mfii.c new file mode 100644 index 00000000..ba803102 --- /dev/null +++ b/unix/openbsd/wskbdmap_mfii.c @@ -0,0 +1,1097 @@ +/* $OpenBSD: wskbdmap_mfii.c,v 1.38 2008/07/30 15:53:31 deraadt Exp $ */ +/* $NetBSD: wskbdmap_mfii.c,v 1.15 2000/05/19 16:40:04 drochner Exp $ */ + +/* + * PLEASE DO NOT FORGET TO REGEN + * sys/dev/usb/ukbdmap.c + * AFTER ANY CHANGES TO THIS FILE! + */ + +/*- + * Copyright (c) 1997 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Juergen Hannken-Illjes. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include + +#define KC(n) KS_KEYCODE(n) + +static const keysym_t pckbd_keydesc_us[] = { +/* pos command normal shifted */ + KC(1), KS_Cmd_Debugger, KS_Escape, + KC(2), KS_1, KS_exclam, + KC(3), KS_2, KS_at, + KC(4), KS_3, KS_numbersign, + KC(5), KS_4, KS_dollar, + KC(6), KS_5, KS_percent, + KC(7), KS_6, KS_asciicircum, + KC(8), KS_7, KS_ampersand, + KC(9), KS_8, KS_asterisk, + KC(10), KS_9, KS_parenleft, + KC(11), KS_0, KS_parenright, + KC(12), KS_minus, KS_underscore, + KC(13), KS_equal, KS_plus, + KC(14), KS_Cmd_ResetEmul, KS_Delete, + KC(15), KS_Tab, + KC(16), KS_q, + KC(17), KS_w, + KC(18), KS_e, + KC(19), KS_r, + KC(20), KS_t, + KC(21), KS_y, + KC(22), KS_u, + KC(23), KS_i, + KC(24), KS_o, + KC(25), KS_p, + KC(26), KS_bracketleft, KS_braceleft, + KC(27), KS_bracketright, KS_braceright, + KC(28), KS_Return, + KC(29), KS_Cmd1, KS_Control_L, + KC(30), KS_a, + KC(31), KS_s, + KC(32), KS_d, + KC(33), KS_f, + KC(34), KS_g, + KC(35), KS_h, + KC(36), KS_j, + KC(37), KS_k, + KC(38), KS_l, + KC(39), KS_semicolon, KS_colon, + KC(40), KS_apostrophe, KS_quotedbl, + KC(41), KS_grave, KS_asciitilde, + KC(42), KS_Shift_L, + KC(43), KS_backslash, KS_bar, + KC(44), KS_z, + KC(45), KS_x, + KC(46), KS_c, + KC(47), KS_v, + KC(48), KS_b, + KC(49), KS_n, + KC(50), KS_m, + KC(51), KS_comma, KS_less, + KC(52), KS_period, KS_greater, + KC(53), KS_slash, KS_question, + KC(54), KS_Shift_R, + KC(55), KS_KP_Multiply, + KC(56), KS_Cmd2, KS_Alt_L, + KC(57), KS_space, + KC(58), KS_Caps_Lock, + KC(59), KS_Cmd_Screen0, KS_f1, + KC(60), KS_Cmd_Screen1, KS_f2, + KC(61), KS_Cmd_Screen2, KS_f3, + KC(62), KS_Cmd_Screen3, KS_f4, + KC(63), KS_Cmd_Screen4, KS_f5, + KC(64), KS_Cmd_Screen5, KS_f6, + KC(65), KS_Cmd_Screen6, KS_f7, + KC(66), KS_Cmd_Screen7, KS_f8, + KC(67), KS_Cmd_Screen8, KS_f9, + KC(68), KS_Cmd_Screen9, KS_f10, + KC(69), KS_Num_Lock, + KC(70), KS_Hold_Screen, + KC(71), KS_KP_Home, KS_KP_7, + KC(72), KS_KP_Up, KS_KP_8, + KC(73), KS_KP_Prior, KS_KP_9, + KC(74), KS_KP_Subtract, + KC(75), KS_KP_Left, KS_KP_4, + KC(76), KS_KP_Begin, KS_KP_5, + KC(77), KS_KP_Right, KS_KP_6, + KC(78), KS_KP_Add, + KC(79), KS_KP_End, KS_KP_1, + KC(80), KS_KP_Down, KS_KP_2, + KC(81), KS_KP_Next, KS_KP_3, + KC(82), KS_KP_Insert, KS_KP_0, + KC(83), KS_KP_Delete, KS_KP_Decimal, + KC(87), KS_Cmd_Screen10, KS_f11, + KC(88), KS_Cmd_Screen11, KS_f12, + KC(127), KS_Pause, /* Break */ + KC(156), KS_KP_Enter, + KC(157), KS_Cmd1, KS_Control_R, + KC(160), KS_AudioMute, + KC(170), KS_Print_Screen, + KC(174), KS_AudioLower, + KC(176), KS_AudioRaise, + KC(181), KS_KP_Divide, + KC(183), KS_Print_Screen, + KC(184), KS_Cmd2, KS_Alt_R, KS_Multi_key, +#if 0 + KC(198), KS_Cmd_ResetClose, /* CTL-Break */ +#endif + KC(199), KS_Home, + KC(200), KS_Up, + KC(201), KS_Cmd_ScrollBack, KS_Prior, + KC(203), KS_Left, + KC(205), KS_Right, + KC(207), KS_End, + KC(208), KS_Down, + KC(209), KS_Cmd_ScrollFwd, KS_Next, + KC(210), KS_Insert, + KC(211), KS_Cmd_KbdReset, KS_KP_Delete, + KC(219), KS_Meta_L, + KC(220), KS_Meta_R, + KC(221), KS_Menu, +}; + +#if !defined(WSKBD_NO_INTL_LAYOUTS) + +static const keysym_t pckbd_keydesc_de[] = { +/* pos normal shifted altgr shift-altgr */ + KC(3), KS_2, KS_quotedbl, KS_twosuperior, + KC(4), KS_3, KS_section, KS_threesuperior, + KC(7), KS_6, KS_ampersand, + KC(8), KS_7, KS_slash, KS_braceleft, + KC(9), KS_8, KS_parenleft, KS_bracketleft, + KC(10), KS_9, KS_parenright, KS_bracketright, + KC(11), KS_0, KS_equal, KS_braceright, + KC(12), KS_ssharp, KS_question, KS_backslash, + KC(13), KS_dead_acute, KS_dead_grave, + KC(16), KS_q, KS_Q, KS_at, + KC(21), KS_z, + KC(26), KS_udiaeresis, + KC(27), KS_plus, KS_asterisk, KS_dead_tilde, + KC(39), KS_odiaeresis, + KC(40), KS_adiaeresis, + KC(41), KS_dead_circumflex,KS_dead_abovering, + KC(43), KS_numbersign, KS_apostrophe, + KC(44), KS_y, + KC(50), KS_m, KS_M, KS_mu, + KC(51), KS_comma, KS_semicolon, + KC(52), KS_period, KS_colon, + KC(53), KS_minus, KS_underscore, + KC(86), KS_less, KS_greater, KS_bar, KS_brokenbar, + KC(184), KS_Mode_switch, KS_Multi_key, +}; + +static const keysym_t pckbd_keydesc_de_nodead[] = { +/* pos normal shifted altgr shift-altgr */ + KC(13), KS_apostrophe, KS_grave, + KC(27), KS_plus, KS_asterisk, KS_asciitilde, + KC(41), KS_asciicircum, KS_degree, +}; + +static const keysym_t pckbd_keydesc_neo[] = { +/* pos normal shifted altgr shift-altgr */ + KC(1), KS_Escape, + KC(2), KS_1, KS_exclam, + KC(3), KS_2, KS_at, + KC(4), KS_3, KS_numbersign, + KC(5), KS_4, KS_dollar, + KC(6), KS_5, KS_percent, + KC(7), KS_6, KS_asciicircum, + KC(8), KS_7, KS_ampersand, + KC(9), KS_8, KS_asterisk, + KC(10), KS_9, KS_parenleft, + KC(11), KS_0, KS_parenright, + KC(12), KS_minus, KS_underscore, + KC(13), KS_equal, KS_plus, + KC(14), KS_Delete, + KC(15), KS_Tab, + KC(16), KS_x, + KC(17), KS_v, + KC(18), KS_l, + KC(19), KS_c, + KC(20), KS_w, + KC(21), KS_k, + KC(22), KS_h, + KC(23), KS_g, + KC(24), KS_f, + KC(25), KS_q, + KC(26), KS_ssharp, + KC(27), KS_bracketright, + KC(28), KS_Return, + KC(29), KS_Control_L, + KC(30), KS_u, + KC(31), KS_i, + KC(32), KS_a, + KC(33), KS_e, + KC(34), KS_o, + KC(35), KS_s, + KC(36), KS_n, + KC(37), KS_r, + KC(38), KS_t, KS_T, KS_colon, + KC(39), KS_y, KS_Y, KS_at, + KC(40), KS_apostrophe, KS_quotedbl, + KC(41), KS_grave, KS_asciitilde, + KC(42), KS_Shift_L, + KC(43), KS_backslash, KS_bar, + KC(44), KS_z, + KC(45), KS_x, + KC(46), KS_c, + KC(47), KS_v, + KC(48), KS_b, + KC(49), KS_n, + KC(50), KS_m, + KC(51), KS_comma, KS_less, + KC(52), KS_period, KS_greater, + KC(53), KS_slash, KS_question, + KC(54), KS_Shift_R, + KC(55), KS_KP_Multiply, + KC(56), KS_Alt_L, + KC(57), KS_space, + KC(58), KS_Caps_Lock, + KC(157), KS_Control_R, + KC(184), KS_Alt_R, KS_Multi_key, + KC(219), KS_Meta_L, + KC(220), KS_Meta_R, +}; + +static const keysym_t pckbd_keydesc_dk[] = { +/* pos normal shifted altgr shift-altgr */ + KC(3), KS_2, KS_quotedbl, KS_at, + KC(4), KS_3, KS_numbersign, KS_sterling, + KC(5), KS_4, KS_currency, KS_dollar, + KC(7), KS_6, KS_ampersand, + KC(8), KS_7, KS_slash, KS_braceleft, + KC(9), KS_8, KS_parenleft, KS_bracketleft, + KC(10), KS_9, KS_parenright, KS_bracketright, + KC(11), KS_0, KS_equal, KS_braceright, + KC(12), KS_plus, KS_question, + KC(13), KS_dead_acute, KS_dead_grave, KS_bar, + KC(26), KS_aring, + KC(27), KS_dead_diaeresis, KS_dead_circumflex, KS_dead_tilde, + KC(39), KS_ae, + KC(40), KS_oslash, + KC(41), KS_onehalf, KS_paragraph, + KC(43), KS_apostrophe, KS_asterisk, + KC(51), KS_comma, KS_semicolon, + KC(52), KS_period, KS_colon, + KC(53), KS_minus, KS_underscore, + KC(86), KS_less, KS_greater, KS_backslash, + KC(184), KS_Mode_switch, KS_Multi_key, +}; + +static const keysym_t pckbd_keydesc_dk_nodead[] = { +/* pos normal shifted altgr shift-altgr */ + KC(13), KS_apostrophe, KS_grave, KS_bar, + KC(27), KS_diaeresis, KS_asciicircum, KS_asciitilde, +}; + +static const keysym_t pckbd_keydesc_sv[] = { +/* pos normal shifted altgr shift-altgr */ + KC(12), KS_plus, KS_question, KS_backslash, + KC(27), KS_dead_diaeresis, KS_dead_circumflex, KS_dead_tilde, + KC(39), KS_odiaeresis, + KC(40), KS_adiaeresis, + KC(41), KS_section, KS_onehalf, + KC(86), KS_less, KS_greater, KS_bar, + KC(184), KS_Mode_switch, KS_Multi_key, +}; + +static const keysym_t pckbd_keydesc_sv_nodead[] = { +/* pos normal shifted altgr shift-altgr */ + KC(13), KS_apostrophe, KS_grave, KS_bar, + KC(27), KS_diaeresis, KS_asciicircum, KS_asciitilde, +}; + +static const keysym_t pckbd_keydesc_no[] = { +/* pos normal shifted altgr shift-altgr */ + KC(13), KS_backslash, KS_dead_grave, KS_dead_acute, + KC(27), KS_dead_diaeresis, KS_dead_circumflex, KS_dead_tilde, + KC(39), KS_oslash, + KC(40), KS_ae, + KC(41), KS_bar, KS_paragraph, + KC(86), KS_less, KS_greater, +}; + +static const keysym_t pckbd_keydesc_no_nodead[] = { +/* pos normal shifted altgr shift-altgr */ + KC(13), KS_backslash, KS_grave, KS_acute, + KC(27), KS_diaeresis, KS_asciicircum, KS_asciitilde, +}; + +static const keysym_t pckbd_keydesc_fr[] = { +/* pos normal shifted altgr shift-altgr */ + KC(2), KS_ampersand, KS_1, + KC(3), KS_eacute, KS_2, KS_asciitilde, + KC(4), KS_quotedbl, KS_3, KS_numbersign, + KC(5), KS_apostrophe, KS_4, KS_braceleft, + KC(6), KS_parenleft, KS_5, KS_bracketleft, + KC(7), KS_minus, KS_6, KS_bar, + KC(8), KS_egrave, KS_7, KS_grave, + KC(9), KS_underscore, KS_8, KS_backslash, + KC(10), KS_ccedilla, KS_9, KS_asciicircum, + KC(11), KS_agrave, KS_0, KS_at, + KC(12), KS_parenright, KS_degree, KS_bracketright, + KC(13), KS_equal, KS_plus, KS_braceright, + KC(16), KS_a, + KC(17), KS_z, + KC(26), KS_dead_circumflex, KS_dead_diaeresis, + KC(27), KS_dollar, KS_sterling, KS_currency, + KC(30), KS_q, + KC(39), KS_m, + KC(40), KS_ugrave, KS_percent, + KC(41), KS_twosuperior, + KC(43), KS_asterisk, KS_mu, + KC(44), KS_w, + KC(50), KS_comma, KS_question, + KC(51), KS_semicolon, KS_period, + KC(52), KS_colon, KS_slash, + KC(53), KS_exclam, KS_section, + KC(86), KS_less, KS_greater, + KC(184), KS_Mode_switch, KS_Multi_key, +}; + +static const keysym_t pckbd_keydesc_it[] = { +/* pos normal shifted altgr shift-altgr */ + KC(3), KS_2, KS_quotedbl, KS_twosuperior, + KC(4), KS_3, KS_sterling, KS_threesuperior, + KC(6), KS_5, KS_percent, + KC(7), KS_6, KS_ampersand, + KC(8), KS_7, KS_slash, + KC(9), KS_8, KS_parenleft, + KC(10), KS_9, KS_parenright, + KC(11), KS_0, KS_equal, + KC(12), KS_apostrophe, KS_question, + KC(13), KS_igrave, KS_asciicircum, + KC(26), KS_egrave, KS_eacute, KS_braceleft, KS_bracketleft, + KC(27), KS_plus, KS_asterisk, KS_braceright, KS_bracketright, + KC(39), KS_ograve, KS_Ccedilla, KS_at, + KC(40), KS_agrave, KS_degree, KS_numbersign, + KC(41), KS_backslash, KS_bar, + KC(43), KS_ugrave, KS_section, + KC(51), KS_comma, KS_semicolon, + KC(52), KS_period, KS_colon, + KC(53), KS_minus, KS_underscore, + KC(86), KS_less, KS_greater, + KC(184), KS_Mode_switch, KS_Multi_key, +}; + +static const keysym_t pckbd_keydesc_uk[] = { +/* pos normal shifted altgr shift-altgr */ + KC(2), KS_1, KS_exclam, KS_plusminus, KS_exclamdown, + KC(3), KS_2, KS_quotedbl, KS_twosuperior, KS_cent, + KC(4), KS_3, KS_sterling, KS_threesuperior, + KC(5), KS_4, KS_dollar, KS_acute, KS_currency, + KC(6), KS_5, KS_percent, KS_mu, KS_yen, + KC(7), KS_6, KS_asciicircum, KS_paragraph, + KC(8), KS_7, KS_ampersand, KS_periodcentered, KS_brokenbar, + KC(9), KS_8, KS_asterisk, KS_cedilla, KS_ordfeminine, + KC(10), KS_9, KS_parenleft, KS_onesuperior, KS_diaeresis, + KC(11), KS_0, KS_parenright, KS_masculine, KS_copyright, + KC(12), KS_minus, KS_underscore, KS_hyphen, KS_ssharp, + KC(13), KS_equal, KS_plus, KS_onehalf, KS_guillemotleft, + KC(40), KS_apostrophe, KS_at, KS_section, KS_Agrave, + KC(41), KS_grave, KS_grave, KS_agrave, KS_agrave, + KC(43), KS_numbersign, KS_asciitilde, KS_sterling, KS_thorn, + KC(86), KS_backslash, KS_bar, KS_Udiaeresis, +}; + +static const keysym_t pckbd_keydesc_jp[] = { +/* pos normal shifted altgr shift-altgr */ + KC(3), KS_2, KS_quotedbl, + KC(7), KS_6, KS_ampersand, + KC(8), KS_7, KS_apostrophe, + KC(9), KS_8, KS_parenleft, + KC(10), KS_9, KS_parenright, + KC(11), KS_0, + KC(12), KS_minus, KS_equal, + KC(13), KS_asciicircum, KS_asciitilde, + KC(26), KS_at, KS_grave, + KC(27), KS_bracketleft, KS_braceleft, + KC(39), KS_semicolon, KS_plus, + KC(40), KS_colon, KS_asterisk, + KC(41), KS_Zenkaku_Hankaku, /* replace grave/tilde */ + KC(43), KS_bracketright, KS_braceright, + KC(112), KS_Hiragana_Katakana, + KC(115), KS_backslash, KS_underscore, + KC(121), KS_Henkan, + KC(123), KS_Muhenkan, + KC(125), KS_backslash, KS_bar, +}; + +static const keysym_t pckbd_keydesc_es[] = { +/* pos normal shifted altgr shift-altgr */ + KC(2), KS_1, KS_exclam, KS_bar, + KC(3), KS_2, KS_quotedbl, KS_at, + KC(4), KS_3, KS_periodcentered, KS_numbersign, + KC(5), KS_4, KS_dollar, KS_asciitilde, + KC(7), KS_6, KS_ampersand, + KC(8), KS_7, KS_slash, + KC(9), KS_8, KS_parenleft, + KC(10), KS_9, KS_parenright, + KC(11), KS_0, KS_equal, + KC(12), KS_apostrophe, KS_question, + KC(13), KS_exclamdown, KS_questiondown, + KC(26), KS_dead_grave, KS_dead_circumflex, KS_bracketleft, + KC(27), KS_plus, KS_asterisk, KS_bracketright, + KC(39), KS_ntilde, + KC(40), KS_dead_acute, KS_dead_diaeresis, KS_braceleft, + KC(41), KS_degree, KS_ordfeminine, KS_backslash, + KC(43), KS_ccedilla, KS_Ccedilla, KS_braceright, + KC(51), KS_comma, KS_semicolon, + KC(52), KS_period, KS_colon, + KC(53), KS_minus, KS_underscore, + KC(86), KS_less, KS_greater, + KC(184), KS_Mode_switch, KS_Multi_key, +}; + +static const keysym_t pckbd_keydesc_lt[] = { +/* pos normal shifted altgr shift-altgr */ + KC(2), KS_exclam, KS_1, KS_at, + KC(3), KS_minus, KS_2, KS_underscore, + KC(4), KS_slash, KS_3, KS_numbersign, + KC(5), KS_semicolon, KS_4, KS_dollar, + KC(6), KS_colon, KS_5, KS_paragraph, + KC(7), KS_comma, KS_6, KS_asciicircum, + KC(8), KS_period, KS_7, KS_ampersand, + KC(9), KS_equal, KS_8, KS_asterisk, + KC(10), KS_bracketleft, KS_9, KS_parenleft, + KC(11), KS_bracketright, KS_0, KS_parenright, + KC(12), KS_question, KS_plus, KS_apostrophe, + KC(13), KS_x, KS_X, KS_percent, + KC(16), KS_L7_aogonek, KS_L7_Aogonek, + KC(17), KS_L7_zcaron, KS_L7_Zcaron, + KC(18), KS_e, KS_E, KS_currency, + KC(26), KS_L7_iogonek, KS_L7_Iogonek, KS_braceleft, + KC(27), KS_w, KS_W, KS_braceright, + KC(33), KS_L7_scaron, KS_L7_Scaron, + KC(39), KS_L7_uogonek, KS_L7_Uogonek, + KC(40), KS_L7_edot, KS_L7_Edot, KS_quotedbl, + KC(41), KS_grave, KS_asciitilde, + KC(43), KS_q, KS_Q, KS_bar, + KC(45), KS_L7_umacron, KS_L7_Umacron, + KC(51), KS_L7_ccaron, KS_L7_Ccaron, KS_L7_dbllow9quot, + KC(52), KS_f, KS_F, KS_L7_leftdblquot, + KC(53), KS_L7_eogonek, KS_L7_Eogonek, KS_backslash, + KC(57), KS_space, KS_space, KS_nobreakspace, + KC(184), KS_Mode_switch, KS_Multi_key, +}; + +static const keysym_t pckbd_keydesc_be[] = { +/* pos normal shifted altgr shift-altgr */ + KC(2), KS_ampersand, KS_1, KS_bar, + KC(3), KS_eacute, KS_2, KS_at, + KC(4), KS_quotedbl, KS_3, KS_numbersign, + KC(5), KS_apostrophe, KS_4, + KC(6), KS_parenleft, KS_5, + KC(7), KS_section, KS_6, KS_asciicircum, + KC(8), KS_egrave, KS_7, + KC(9), KS_exclam, KS_8, + KC(10), KS_ccedilla, KS_9, KS_braceleft, + KC(11), KS_agrave, KS_0, KS_braceright, + KC(12), KS_parenright, KS_degree, + KC(13), KS_minus, KS_underscore, + KC(16), KS_a, + KC(17), KS_z, + KC(26), KS_dead_circumflex, KS_dead_diaeresis, KS_bracketleft, + KC(27), KS_dollar, KS_asterisk, KS_bracketright, + KC(30), KS_q, + KC(39), KS_m, + KC(40), KS_ugrave, KS_percent, KS_acute, + KC(41), KS_twosuperior, KS_threesuperior, + KC(43), KS_mu, KS_sterling, KS_grave, + KC(44), KS_w, + KC(50), KS_comma, KS_question, + KC(51), KS_semicolon, KS_period, + KC(52), KS_colon, KS_slash, + KC(53), KS_equal, KS_plus, KS_asciitilde, + KC(86), KS_less, KS_greater, KS_backslash, + KC(184), KS_Mode_switch, KS_Multi_key, +}; + +static const keysym_t pckbd_keydesc_us_declk[] = { +/* pos normal shifted altgr shift-altgr */ + KC(1), KS_grave, KS_asciitilde, /* replace escape */ + KC(41), KS_less, KS_greater, /* replace grave/tilde */ + KC(143), KS_Multi_key, /* left compose */ + KC(157), KS_Multi_key, /* right compose, replace right control */ + KC(87), KS_Cmd_Debugger, KS_Escape, /* replace F11 */ + KC(189), KS_f13, + KC(190), KS_f14, + KC(191), KS_Help, + KC(192), KS_Execute, + KC(193), KS_f17, + KC(183), KS_f18, + KC(70), KS_f19, /* replace scroll lock */ + KC(127), KS_f20, /* replace break */ + KC(69), KS_KP_F1, /* replace num lock */ + KC(181), KS_KP_F2, /* replace divide */ + KC(55), KS_KP_F3, /* replace multiply */ + KC(74), KS_KP_F4, /* replace subtract */ + + /* keypad is numbers only - no num lock */ + KC(71), KS_KP_7, + KC(72), KS_KP_8, + KC(73), KS_KP_9, + KC(75), KS_KP_4, + KC(76), KS_KP_5, + KC(77), KS_KP_6, + KC(79), KS_KP_1, + KC(80), KS_KP_2, + KC(81), KS_KP_3, + KC(82), KS_KP_0, + KC(83), KS_KP_Decimal, + + KC(206), KS_KP_Subtract, + KC(78), KS_KP_Separator, /* replace add */ + KC(199), KS_Find, /* replace home */ + KC(207), KS_Select, /* replace end */ +}; + +static const keysym_t pckbd_keydesc_us_dvorak[] = { +/* pos command normal shifted */ + KC(12), KS_bracketleft, KS_braceleft, + KC(13), KS_bracketright, KS_braceright, + KC(16), KS_apostrophe, KS_quotedbl, + KC(17), KS_comma, KS_less, + KC(18), KS_period, KS_greater, + KC(19), KS_p, + KC(20), KS_y, + KC(21), KS_f, + KC(22), KS_g, + KC(23), KS_c, + KC(24), KS_r, + KC(25), KS_l, + KC(26), KS_slash, KS_question, + KC(27), KS_equal, KS_plus, + KC(31), KS_o, + KC(32), KS_e, + KC(33), KS_u, + KC(34), KS_i, + KC(35), KS_d, + KC(36), KS_h, + KC(37), KS_t, + KC(38), KS_n, + KC(39), KS_s, + KC(40), KS_minus, KS_underscore, + KC(44), KS_semicolon, KS_colon, + KC(45), KS_q, + KC(46), KS_j, + KC(47), KS_k, + KC(48), KS_x, + KC(49), KS_b, + KC(51), KS_w, + KC(52), KS_v, + KC(53), KS_z, +}; + +static const keysym_t pckbd_keydesc_swapctrlcaps[] = { +/* pos command normal shifted */ + KC(29), KS_Caps_Lock, + KC(58), KS_Cmd1, KS_Control_L, +}; + +static const keysym_t pckbd_keydesc_iopener[] = { +/* pos command normal shifted */ + KC(59), KS_Cmd_Debugger, KS_Escape, + KC(60), KS_Cmd_Screen0, KS_f1, + KC(61), KS_Cmd_Screen1, KS_f2, + KC(62), KS_Cmd_Screen2, KS_f3, + KC(63), KS_Cmd_Screen3, KS_f4, + KC(64), KS_Cmd_Screen4, KS_f5, + KC(65), KS_Cmd_Screen5, KS_f6, + KC(66), KS_Cmd_Screen6, KS_f7, + KC(67), KS_Cmd_Screen7, KS_f8, + KC(68), KS_Cmd_Screen8, KS_f9, + KC(87), KS_Cmd_Screen9, KS_f10, + KC(88), KS_f11, +}; + +static const keysym_t pckbd_keydesc_ru[] = { +/* pos normal shifted altgr shift-altgr */ + KC(7), KS_6, KS_asciicircum, KS_6, KS_comma, + KC(8), KS_7, KS_ampersand, KS_7, KS_period, + KC(16), KS_q, KS_Q, KS_Cyrillic_ishort, KS_Cyrillic_ISHORT, + KC(17), KS_w, KS_W, KS_Cyrillic_tse, KS_Cyrillic_TSE, + KC(18), KS_e, KS_E, KS_Cyrillic_u, KS_Cyrillic_U, + KC(19), KS_r, KS_R, KS_Cyrillic_ka, KS_Cyrillic_KA, + KC(20), KS_t, KS_T, KS_Cyrillic_ie, KS_Cyrillic_IE, + KC(21), KS_y, KS_Y, KS_Cyrillic_en, KS_Cyrillic_EN, + KC(22), KS_u, KS_U, KS_Cyrillic_ge, KS_Cyrillic_GE, + KC(23), KS_i, KS_I, KS_Cyrillic_sha, KS_Cyrillic_SHA, + KC(24), KS_o, KS_O, KS_Cyrillic_scha, KS_Cyrillic_SCHA, + KC(25), KS_p, KS_P, KS_Cyrillic_ze, KS_Cyrillic_ZE, + KC(26), KS_bracketleft, KS_braceleft, KS_Cyrillic_ha, KS_Cyrillic_HA, + KC(27), KS_bracketright, KS_braceright, KS_Cyrillic_hsighn, KS_Cyrillic_HSIGHN, + KC(30), KS_a, KS_A, KS_Cyrillic_ef, KS_Cyrillic_EF, + KC(31), KS_s, KS_S, KS_Cyrillic_yeru, KS_Cyrillic_YERU, + KC(32), KS_d, KS_D, KS_Cyrillic_ve, KS_Cyrillic_VE, + KC(33), KS_f, KS_F, KS_Cyrillic_a, KS_Cyrillic_A, + KC(34), KS_g, KS_G, KS_Cyrillic_pe, KS_Cyrillic_PE, + KC(35), KS_h, KS_H, KS_Cyrillic_er, KS_Cyrillic_ER, + KC(36), KS_j, KS_J, KS_Cyrillic_o, KS_Cyrillic_O, + KC(37), KS_k, KS_K, KS_Cyrillic_el, KS_Cyrillic_EL, + KC(38), KS_l, KS_L, KS_Cyrillic_de, KS_Cyrillic_DE, + KC(39), KS_semicolon, KS_colon, KS_Cyrillic_zhe, KS_Cyrillic_ZHE, + KC(40), KS_apostrophe, KS_quotedbl, KS_Cyrillic_e, KS_Cyrillic_E, + KC(44), KS_z, KS_Z, KS_Cyrillic_ya, KS_Cyrillic_YA, + KC(45), KS_x, KS_X, KS_Cyrillic_che, KS_Cyrillic_CHE, + KC(46), KS_c, KS_C, KS_Cyrillic_es, KS_Cyrillic_ES, + KC(47), KS_v, KS_V, KS_Cyrillic_em, KS_Cyrillic_EM, + KC(48), KS_b, KS_B, KS_Cyrillic_i, KS_Cyrillic_I, + KC(49), KS_n, KS_N, KS_Cyrillic_te, KS_Cyrillic_TE, + KC(50), KS_m, KS_M, KS_Cyrillic_ssighn, KS_Cyrillic_SSIGHN, + KC(51), KS_comma, KS_less, KS_Cyrillic_be, KS_Cyrillic_BE, + KC(52), KS_period, KS_greater, KS_Cyrillic_yu, KS_Cyrillic_YU, + KC(53), KS_slash, KS_question, KS_Cyrillic_yo, KS_Cyrillic_YO, + KC(184), KS_Mode_switch, KS_Multi_key, +}; + +static const keysym_t pckbd_keydesc_ua[] = { +/* pos normal shifted altgr shift-altgr */ + KC(7), KS_6, KS_asciicircum, KS_6, KS_comma, + KC(8), KS_7, KS_ampersand, KS_7, KS_period, + KC(12), KS_minus, KS_underscore, KS_Cyrillic_iukr, KS_Cyrillic_IUKR, + KC(13), KS_equal, KS_plus, KS_Cyrillic_yeukr, KS_Cyrillic_YEUKR, + KC(16), KS_q, KS_Q, KS_Cyrillic_ishort, KS_Cyrillic_ISHORT, + KC(17), KS_w, KS_W, KS_Cyrillic_tse, KS_Cyrillic_TSE, + KC(18), KS_e, KS_E, KS_Cyrillic_u, KS_Cyrillic_U, + KC(19), KS_r, KS_R, KS_Cyrillic_ka, KS_Cyrillic_KA, + KC(20), KS_t, KS_T, KS_Cyrillic_ie, KS_Cyrillic_IE, + KC(21), KS_y, KS_Y, KS_Cyrillic_en, KS_Cyrillic_EN, + KC(22), KS_u, KS_U, KS_Cyrillic_ge, KS_Cyrillic_GE, + KC(23), KS_i, KS_I, KS_Cyrillic_sha, KS_Cyrillic_SHA, + KC(24), KS_o, KS_O, KS_Cyrillic_scha, KS_Cyrillic_SCHA, + KC(25), KS_p, KS_P, KS_Cyrillic_ze, KS_Cyrillic_ZE, + KC(26), KS_bracketleft, KS_braceleft, KS_Cyrillic_ha, KS_Cyrillic_HA, + KC(27), KS_bracketright, KS_braceright, KS_Cyrillic_hsighn, KS_Cyrillic_HSIGHN, + KC(30), KS_a, KS_A, KS_Cyrillic_ef, KS_Cyrillic_EF, + KC(31), KS_s, KS_S, KS_Cyrillic_yeru, KS_Cyrillic_YERU, + KC(32), KS_d, KS_D, KS_Cyrillic_ve, KS_Cyrillic_VE, + KC(33), KS_f, KS_F, KS_Cyrillic_a, KS_Cyrillic_A, + KC(34), KS_g, KS_G, KS_Cyrillic_pe, KS_Cyrillic_PE, + KC(35), KS_h, KS_H, KS_Cyrillic_er, KS_Cyrillic_ER, + KC(36), KS_j, KS_J, KS_Cyrillic_o, KS_Cyrillic_O, + KC(37), KS_k, KS_K, KS_Cyrillic_el, KS_Cyrillic_EL, + KC(38), KS_l, KS_L, KS_Cyrillic_de, KS_Cyrillic_DE, + KC(39), KS_semicolon, KS_colon, KS_Cyrillic_zhe, KS_Cyrillic_ZHE, + KC(40), KS_apostrophe, KS_quotedbl, KS_Cyrillic_e, KS_Cyrillic_E, + KC(41), KS_grave, KS_asciitilde, KS_Cyrillic_gheukr, KS_Cyrillic_GHEUKR, + KC(43), KS_backslash, KS_bar, KS_Cyrillic_yi, KS_Cyrillic_YI, + KC(44), KS_z, KS_Z, KS_Cyrillic_ya, KS_Cyrillic_YA, + KC(45), KS_x, KS_X, KS_Cyrillic_che, KS_Cyrillic_CHE, + KC(46), KS_c, KS_C, KS_Cyrillic_es, KS_Cyrillic_ES, + KC(47), KS_v, KS_V, KS_Cyrillic_em, KS_Cyrillic_EM, + KC(48), KS_b, KS_B, KS_Cyrillic_i, KS_Cyrillic_I, + KC(49), KS_n, KS_N, KS_Cyrillic_te, KS_Cyrillic_TE, + KC(50), KS_m, KS_M, KS_Cyrillic_ssighn, KS_Cyrillic_SSIGHN, + KC(51), KS_comma, KS_less, KS_Cyrillic_be, KS_Cyrillic_BE, + KC(52), KS_period, KS_greater, KS_Cyrillic_yu, KS_Cyrillic_YU, + KC(53), KS_slash, KS_question, KS_Cyrillic_yo, KS_Cyrillic_YO, + KC(184), KS_Mode_switch, KS_Multi_key, +}; + +static const keysym_t pckbd_keydesc_sg[] = { +/* pos normal shifted altgr shift-altgr */ + KC(2), KS_1, KS_plus, KS_bar, + KC(3), KS_2, KS_quotedbl, KS_at, + KC(4), KS_3, KS_asterisk, KS_numbersign, + KC(5), KS_4, KS_ccedilla, + KC(7), KS_6, KS_ampersand, KS_notsign, + KC(8), KS_7, KS_slash, KS_brokenbar, + KC(9), KS_8, KS_parenleft, KS_cent, + KC(10), KS_9, KS_parenright, + KC(11), KS_0, KS_equal, + KC(12), KS_apostrophe, KS_question, KS_dead_acute, + KC(13), KS_dead_circumflex,KS_dead_grave, KS_dead_tilde, + KC(18), KS_e, KS_E, KS_currency, + KC(21), KS_z, + KC(26), KS_udiaeresis, KS_egrave, KS_bracketleft, + KC(27), KS_dead_diaeresis, KS_exclam, KS_bracketright, + KC(39), KS_odiaeresis, KS_eacute, + KC(40), KS_adiaeresis, KS_agrave, KS_braceleft, + KC(41), KS_section, KS_degree, KS_dead_abovering, + KC(43), KS_dollar, KS_sterling, KS_braceright, + KC(44), KS_y, + KC(51), KS_comma, KS_semicolon, + KC(52), KS_period, KS_colon, + KC(53), KS_minus, KS_underscore, + KC(86), KS_less, KS_greater, KS_backslash, + KC(184), KS_Mode_switch, KS_Multi_key, +}; + +static const keysym_t pckbd_keydesc_sg_nodead[] = { +/* pos normal shifted altgr shift-altgr */ + KC(12), KS_apostrophe, KS_question, KS_acute, + KC(13), KS_asciicircum, KS_grave, KS_asciitilde, + KC(27), KS_diaeresis, KS_exclam, KS_bracketright +}; + +static const keysym_t pckbd_keydesc_sf[] = { +/* pos normal shifted altgr shift-altgr */ + KC(26), KS_egrave, KS_udiaeresis, KS_bracketleft, + KC(39), KS_eacute, KS_odiaeresis, + KC(40), KS_agrave, KS_adiaeresis, KS_braceleft +}; + +static const keysym_t pckbd_keydesc_pt[] = { +/* pos normal shifted altgr shift-altgr */ + KC(3), KS_2, KS_quotedbl, KS_at, + KC(4), KS_3, KS_numbersign, KS_sterling, + KC(7), KS_6, KS_ampersand, + KC(8), KS_7, KS_slash, KS_braceleft, + KC(9), KS_8, KS_parenleft, KS_bracketleft, + KC(10), KS_9, KS_parenright, KS_bracketright, + KC(11), KS_0, KS_equal, KS_braceright, + KC(12), KS_apostrophe, KS_question, + KC(13), KS_less, KS_greater, + KC(26), KS_plus, KS_asterisk, + KC(27), KS_dead_acute, KS_dead_grave, + KC(39), KS_ccedilla, KS_Ccedilla, + KC(40), KS_masculine, KS_ordfeminine, + KC(41), KS_backslash, KS_bar, + KC(43), KS_dead_tilde, KS_dead_circumflex, + KC(51), KS_comma, KS_semicolon, + KC(52), KS_period, KS_colon, + KC(53), KS_minus, KS_underscore, + KC(86), KS_less, KS_greater, + KC(184), KS_Mode_switch, KS_Multi_key, +}; + +static const keysym_t pckbd_keydesc_la[] = { +/* pos normal shifted altgr shift-altgr */ + KC(2), KS_1, KS_exclam, + KC(3), KS_2, KS_quotedbl, + KC(4), KS_3, KS_numbersign, + KC(7), KS_6, KS_ampersand, + KC(8), KS_7, KS_slash, + KC(9), KS_8, KS_parenleft, + KC(10), KS_9, KS_parenright, + KC(11), KS_0, KS_equal, + KC(12), KS_apostrophe, KS_question, KS_backslash, + KC(13), KS_questiondown, KS_exclamdown, + KC(16), KS_q, KS_Q, KS_at, + KC(26), KS_dead_acute, KS_dead_diaeresis, + KC(27), KS_plus, KS_asterisk, KS_asciitilde, + KC(39), KS_ntilde, + KC(40), KS_braceleft, KS_bracketleft, KS_dead_circumflex, + KC(41), KS_bar, KS_degree, KS_notsign, + KC(43), KS_braceright, KS_bracketright,KS_dead_grave, + KC(51), KS_comma, KS_semicolon, + KC(52), KS_period, KS_colon, + KC(53), KS_minus, KS_underscore, + KC(86), KS_less, KS_greater, + KC(184), KS_Mode_switch, KS_Multi_key, +}; + +static const keysym_t pckbd_keydesc_br[] = { +/* pos normal shifted altgr shift-altgr */ + KC(2), KS_1, KS_exclam, KS_onesuperior, + KC(3), KS_2, KS_at, KS_twosuperior, + KC(4), KS_3, KS_numbersign, KS_threesuperior, + KC(5), KS_4, KS_dollar, KS_sterling, + KC(6), KS_5, KS_percent, KS_cent, + KC(7), KS_6, KS_dead_diaeresis, KS_notsign, + KC(13), KS_equal, KS_plus, KS_section, + KC(26), KS_dead_acute, KS_dead_grave, + KC(27), KS_bracketleft, KS_braceleft, KS_ordfeminine, + KC(39), KS_ccedilla, KS_Ccedilla, + KC(40), KS_dead_tilde, KS_dead_circumflex, + KC(41), KS_apostrophe, KS_quotedbl, + KC(43), KS_bracketright, KS_braceright, KS_masculine, + KC(53), KS_semicolon, KS_colon, + KC(83), KS_KP_Delete, KS_KP_Decimal, + KC(86), KS_backslash, KS_bar, + KC(115), KS_slash, KS_question, KS_degree, +}; + +static const keysym_t pckbd_keydesc_tr[] = { +/* pos normal shifted altgr shift-altgr */ + KC(3), KS_2, KS_apostrophe, KS_sterling, + KC(4), KS_3, KS_asciicircum, KS_numbersign, + KC(5), KS_4, KS_plus, KS_dollar, + KC(6), KS_5, KS_percent, KS_onehalf, + KC(7), KS_6, KS_ampersand, + KC(8), KS_7, KS_slash, KS_braceleft, + KC(9), KS_8, KS_parenleft, KS_bracketleft, + KC(10), KS_9, KS_parenright, KS_bracketright, + KC(11), KS_0, KS_equal, KS_braceright, + KC(12), KS_asterisk, KS_question, KS_backslash, + KC(13), KS_minus, KS_underscore, + KC(16), KS_q, KS_Q, KS_at, + KC(23), KS_L5_idotless, KS_I, + KC(26), KS_L5_gbreve, KS_L5_Gbreve, KS_dead_diaeresis, + KC(27), KS_udiaeresis, KS_Udiaeresis, KS_asciitilde, + KC(39), KS_L5_scedilla, KS_L5_Scedilla, KS_dead_acute, + KC(40), KS_i, KS_L5_Idotabove, + KC(41), KS_quotedbl, KS_eacute, + KC(43), KS_comma, KS_semicolon, KS_dead_grave, + KC(51), KS_odiaeresis, KS_Odiaeresis, + KC(52), KS_ccedilla, KS_Ccedilla, + KC(53), KS_period, KS_colon, + KC(86), KS_less, KS_greater, KS_bar, + KC(184), KS_Mode_switch, KS_Multi_key, +}; + +static const keysym_t pckbd_keydesc_tr_nodead[] = { +/* pos normal shifted altgr shift-altgr */ + KC(26), KS_L5_gbreve, KS_L5_Gbreve, + KC(39), KS_L5_scedilla, KS_L5_Scedilla, KS_apostrophe, + KC(43), KS_comma, KS_semicolon, KS_grave, +}; + +static const keysym_t pckbd_keydesc_pl[] = { +/* pos normal shifted altgr shift-altgr */ + KC(18), KS_e, KS_E, KS_L2_eogonek, KS_L2_Eogonek, + KC(24), KS_o, KS_O, KS_oacute, KS_Oacute, + KC(30), KS_a, KS_A, KS_L2_aogonek, KS_L2_Aogonek, + KC(31), KS_s, KS_S, KS_L2_sacute, KS_L2_Sacute, + KC(38), KS_l, KS_L, KS_L2_lstroke, KS_L2_Lstroke, + KC(44), KS_z, KS_Z, KS_L2_zdotabove,KS_L2_Zdotabove, + KC(45), KS_x, KS_X, KS_L2_zacute, KS_L2_Zacute, + KC(46), KS_c, KS_C, KS_L2_cacute, KS_L2_Cacute, + KC(49), KS_n, KS_N, KS_L2_nacute, KS_L2_Nacute, + KC(184), KS_Mode_switch, KS_Multi_key, +}; + +static const keysym_t pckbd_keydesc_hu[] = { +/* pos normal shifted altgr shift-altgr */ + KC(2), KS_1, KS_apostrophe, KS_asciitilde, + KC(3), KS_2, KS_quotedbl, + KC(4), KS_3, KS_plus, KS_asciicircum, + KC(5), KS_4, KS_exclam, + KC(6), KS_5, KS_percent, + KC(7), KS_6, KS_slash, + KC(8), KS_7, KS_equal,KS_grave, + KC(9), KS_8, KS_parenleft, + KC(10), KS_9, KS_parenright, KS_acute, + KC(11), KS_odiaeresis, KS_Odiaeresis, + KC(12), KS_udiaeresis, KS_Udiaeresis, + KC(13), KS_oacute, KS_Oacute, + KC(16), KS_q, KS_Q, KS_backslash, + KC(17), KS_w, KS_W,KS_bar, + KC(21), KS_z, KS_Z, + KC(23), KS_i, KS_I, KS_iacute, + KC(26), KS_odoubleacute, KS_Odoubleacute, KS_division, + KC(27), KS_uacute, KS_Uacute, KS_multiply, + KC(33), KS_f, KS_F, KS_bracketleft, + KC(34), KS_g, KS_G, KS_bracketright, + KC(36), KS_j, KS_J, KS_iacute, + KC(39), KS_eacute, KS_Eacute, KS_dollar, + KC(40), KS_aacute, KS_Aacute, KS_ssharp, + KC(41), KS_0, KS_section, + KC(43), KS_udoubleacute, KS_Udoubleacute, KS_currency, + KC(44), KS_y, KS_Y, KS_greater, + KC(45), KS_x, KS_X, KS_numbersign, + KC(46), KS_c, KS_C, KS_ampersand, + KC(47), KS_v, KS_V, KS_at, + KC(48), KS_b, KS_B, KS_braceleft, + KC(49), KS_n, KS_N, KS_braceright, + KC(51), KS_comma, KS_question, KS_semicolon, + KC(52), KS_period, KS_colon, + KC(53), KS_minus, KS_underscore, KS_asterisk, + KC(86), KS_iacute, KS_Iacute, KS_less, + KC(184), KS_Mode_switch, KS_Multi_key, +}; + +static const keysym_t pckbd_keydesc_si[]= +{ +/* pos normal shifted altgr shift-altgr */ + KC(2), KS_1, KS_exclam, KS_asciitilde, + KC(3), KS_2, KS_quotedbl, KS_L2_caron, + KC(4), KS_3, KS_numbersign, KS_asciicircum, + KC(5), KS_4, KS_dollar, KS_L2_breve, + KC(6), KS_5, KS_percent, KS_degree, + KC(7), KS_6, KS_ampersand, KS_L2_ogonek, + KC(8), KS_7, KS_slash, KS_grave, + KC(9), KS_8, KS_parenleft, KS_L2_dotabove, + KC(10), KS_9, KS_parenright, KS_acute, + KC(11), KS_0, KS_equal, KS_L2_dblacute, + KC(12), KS_apostrophe, KS_question, KS_diaeresis, + KC(13), KS_plus, KS_asterisk, KS_cedilla, + KC(16), KS_q, KS_Q, KS_backslash, + KC(17), KS_w, KS_W, KS_bar, + KC(21), KS_z, KS_Z, + KC(26), KS_L2_scaron, KS_L2_Scaron, KS_division, + KC(27), KS_L2_dstroke, KS_L2_Dstroke, KS_multiply, + KC(33), KS_f, KS_F, KS_bracketleft, + KC(34), KS_g, KS_G, KS_bracketright, + KC(37), KS_k, KS_K, KS_L2_lstroke, + KC(38), KS_l, KS_L, KS_L2_Lstroke, + KC(39), KS_L2_ccaron, KS_L2_Ccaron, + KC(40), KS_L2_cacute, KS_L2_Cacute, KS_ssharp, + KC(41), KS_cedilla, KS_diaeresis, + KC(43), KS_L2_zcaron, KS_L2_Zcaron, KS_currency, + KC(44), KS_y, KS_Y, + KC(47), KS_v, KS_V, KS_at, + KC(48), KS_b, KS_B, KS_braceleft, + KC(49), KS_n, KS_N, KS_braceright, + KC(50), KS_m, KS_M, KS_section, + KC(51), KS_comma, KS_semicolon, + KC(52), KS_period, KS_colon, + KC(53), KS_minus, KS_underscore, + KC(86), KS_less, KS_greater, + KC(184), KS_Mode_switch, KS_Multi_key, +}; + +static const keysym_t pckbd_keydesc_cf[] = { +/* pos normal shifted altgr shift-altgr */ + KC(2), KS_1, KS_exclam, KS_plusminus, + KC(3), KS_2, KS_quotedbl, KS_at, + KC(4), KS_3, KS_slash, KS_sterling, + KC(5), KS_4, KS_dollar, KS_cent, + KC(6), KS_5, KS_percent, KS_diaeresis, + KC(7), KS_6, KS_question, KS_macron, + KC(8), KS_7, KS_ampersand, KS_brokenbar, + KC(9), KS_8, KS_asterisk, KS_twosuperior, + KC(10), KS_9, KS_parenleft, KS_threesuperior, + KC(11), KS_0, KS_parenright, KS_onequarter, + KC(12), KS_minus, KS_underscore, KS_onehalf, + KC(13), KS_equal, KS_plus, KS_threequarters, + KC(24), KS_o, KS_O, KS_section, + KC(25), KS_p, KS_P, KS_paragraph, + KC(26), KS_dead_circumflex,KS_dead_circumflex, KS_bracketleft, + KC(27), KS_dead_cedilla,KS_dead_diaeresis, KS_bracketright, + KC(39), KS_semicolon, KS_colon, KS_asciitilde, + KC(40), KS_dead_grave, KS_dead_grave, KS_braceleft, + KC(41), KS_numbersign, KS_bar, KS_backslash, + KC(43), KS_less, KS_greater, KS_braceright, + KC(50), KS_m, KS_M, KS_mu, + KC(51), KS_comma, KS_apostrophe, KS_hyphen, + KC(52), KS_period, KS_period, + KC(53), KS_eacute, KS_Eacute, KS_dead_acute, + KC(86), KS_guillemotleft,KS_guillemotright, KS_degree, + KC(184), KS_Mode_switch,KS_Multi_key, +}; + +static const keysym_t pckbd_keydesc_cf_nodead[] = { +/* pos normal shifted altgr shift-altgr */ + KC(26), KS_asciicircum,KS_asciicircum, KS_bracketleft, + KC(27), KS_cedilla, KS_diaeresis, KS_bracketright, + KC(40), KS_grave, KS_grave, KS_braceleft, + KC(53), KS_eacute, KS_Eacute, KS_acute, +}; + +static const keysym_t pckbd_keydesc_lv[] = { +/* pos normal shifted altgr shift-altgr */ + KC(18), KS_e, KS_E, KS_L7_emacron, KS_L7_Emacron, + KC(22), KS_u, KS_U, KS_L7_umacron, KS_L7_Umacron, + KC(23), KS_i, KS_I, KS_L7_imacron, KS_L7_Imacron, + KC(24), KS_o, KS_O, KS_L7_omacron, KS_L7_Omacron, + KC(30), KS_a, KS_A, KS_L7_amacron, KS_L7_Amacron, + KC(31), KS_s, KS_S, KS_L7_scaron, KS_L7_Scaron, + KC(34), KS_g, KS_G, KS_L7_gcedilla, KS_L7_Gcedilla, + KC(37), KS_k, KS_K, KS_L7_kcedilla, KS_L7_Kcedilla, + KC(38), KS_l, KS_L, KS_L7_lcedilla, KS_L7_Lcedilla, + KC(44), KS_z, KS_Z, KS_L7_zcaron, KS_L7_Zcaron, + KC(46), KS_c, KS_C, KS_L7_ccaron, KS_L7_Ccaron, + KC(49), KS_n, KS_N, KS_L7_ncedilla, KS_L7_Ncedilla, + KC(184), KS_Mode_switch, KS_Multi_key, +}; + +static const keysym_t pckbd_keydesc_nl[] = { +/* pos normal shifted altgr shift-altgr */ + KC(2), KS_1, KS_exclam, KS_onesuperior, + KC(3), KS_2, KS_quotedbl, KS_twosuperior, + KC(4), KS_3, KS_numbersign, KS_threesuperior, + KC(5), KS_4, KS_dollar, KS_onequarter, + KC(6), KS_5, KS_percent, KS_onehalf, + KC(7), KS_6, KS_ampersand, KS_threequarters, + KC(8), KS_7, KS_underscore, KS_sterling, + KC(9), KS_8, KS_parenleft, KS_braceleft, + KC(10), KS_9, KS_parenright, KS_braceright, + KC(11), KS_0, KS_apostrophe, + KC(12), KS_slash, KS_question, KS_backslash, + KC(13), KS_degree, KS_dead_tilde, KS_dead_cedilla, + KC(19), KS_r, KS_R, KS_paragraph, + KC(26), KS_dead_diaeresis, KS_dead_circumflex, + KC(27), KS_asterisk, KS_bar, + KC(31), KS_s, KS_S, KS_ssharp, + KC(39), KS_plus, KS_plusminus, + KC(40), KS_dead_acute, KS_dead_grave, + KC(41), KS_at, KS_section, KS_notsign, + KC(43), KS_less, KS_greater, + KC(44), KS_z, KS_Z, KS_guillemotleft, + KC(45), KS_x, KS_X, KS_guillemotright, + KC(46), KS_c, KS_C, KS_cent, + KC(50), KS_m, KS_M, KS_mu, + KC(51), KS_comma, KS_semicolon, + KC(52), KS_period, KS_colon, KS_periodcentered, + KC(53), KS_minus, KS_equal, + KC(86), KS_bracketright, KS_bracketleft, KS_brokenbar, + KC(184), KS_Mode_switch, KS_Multi_key, +}; + +static const keysym_t pckbd_keydesc_nl_nodead[] = { +/* pos normal shifted altgr shift-altgr */ + KC(13), KS_degree, KS_asciitilde, KS_cedilla, + KC(26), KS_quotedbl, KS_asciicircum, + KC(40), KS_apostrophe, KS_grave, +}; + +#endif /* WSKBD_NO_INTL_LAYOUTS */ + +#define KBD_MAP(name, base, map) \ + { name, base, sizeof(map)/sizeof(keysym_t), map } + +const struct wscons_keydesc pckbd_keydesctab[] = { + KBD_MAP(KB_US, 0, pckbd_keydesc_us), +#if !defined(WSKBD_NO_INTL_LAYOUTS) + KBD_MAP(KB_NEO, KB_US, pckbd_keydesc_neo), + KBD_MAP(KB_DE, KB_US, pckbd_keydesc_de), + KBD_MAP(KB_DE | KB_NODEAD, KB_DE, pckbd_keydesc_de_nodead), + KBD_MAP(KB_FR, KB_US, pckbd_keydesc_fr), + KBD_MAP(KB_DK, KB_US, pckbd_keydesc_dk), + KBD_MAP(KB_DK | KB_NODEAD, KB_DK, pckbd_keydesc_dk_nodead), + KBD_MAP(KB_IT, KB_US, pckbd_keydesc_it), + KBD_MAP(KB_UK, KB_US, pckbd_keydesc_uk), + KBD_MAP(KB_JP, KB_US, pckbd_keydesc_jp), + KBD_MAP(KB_SV, KB_DK, pckbd_keydesc_sv), + KBD_MAP(KB_SV | KB_NODEAD, KB_SV, pckbd_keydesc_sv_nodead), + KBD_MAP(KB_NO, KB_DK, pckbd_keydesc_no), + KBD_MAP(KB_NO | KB_NODEAD, KB_NO, pckbd_keydesc_no_nodead), + KBD_MAP(KB_US | KB_DECLK, KB_US, pckbd_keydesc_us_declk), + KBD_MAP(KB_US | KB_DVORAK, KB_US, pckbd_keydesc_us_dvorak), + KBD_MAP(KB_US | KB_SWAPCTRLCAPS, KB_US, pckbd_keydesc_swapctrlcaps), + KBD_MAP(KB_US | KB_IOPENER, KB_US, pckbd_keydesc_iopener), + KBD_MAP(KB_JP | KB_SWAPCTRLCAPS, KB_JP, pckbd_keydesc_swapctrlcaps), + KBD_MAP(KB_FR | KB_SWAPCTRLCAPS, KB_FR, pckbd_keydesc_swapctrlcaps), + KBD_MAP(KB_BE | KB_SWAPCTRLCAPS, KB_BE, pckbd_keydesc_swapctrlcaps), + KBD_MAP(KB_US | KB_DVORAK | KB_SWAPCTRLCAPS, KB_US | KB_DVORAK, + pckbd_keydesc_swapctrlcaps), + KBD_MAP(KB_US | KB_IOPENER | KB_SWAPCTRLCAPS, KB_US | KB_IOPENER, + pckbd_keydesc_swapctrlcaps), + KBD_MAP(KB_ES, KB_US, pckbd_keydesc_es), + KBD_MAP(KB_BE, KB_US, pckbd_keydesc_be), + KBD_MAP(KB_RU, KB_US, pckbd_keydesc_ru), + KBD_MAP(KB_UA, KB_US, pckbd_keydesc_ua), + KBD_MAP(KB_SG, KB_US, pckbd_keydesc_sg), + KBD_MAP(KB_SG | KB_NODEAD, KB_SG, pckbd_keydesc_sg_nodead), + KBD_MAP(KB_SF, KB_SG, pckbd_keydesc_sf), + KBD_MAP(KB_SF | KB_NODEAD, KB_SF, pckbd_keydesc_sg_nodead), + KBD_MAP(KB_PT, KB_US, pckbd_keydesc_pt), + KBD_MAP(KB_LT, KB_US, pckbd_keydesc_lt), + KBD_MAP(KB_LA, KB_US, pckbd_keydesc_la), + KBD_MAP(KB_BR, KB_US, pckbd_keydesc_br), + KBD_MAP(KB_TR, KB_US, pckbd_keydesc_tr), + KBD_MAP(KB_TR | KB_NODEAD, KB_TR, pckbd_keydesc_tr_nodead), + KBD_MAP(KB_PL, KB_US, pckbd_keydesc_pl), + KBD_MAP(KB_HU, KB_US, pckbd_keydesc_hu), + KBD_MAP(KB_SI, KB_US, pckbd_keydesc_si), + KBD_MAP(KB_CF, KB_US, pckbd_keydesc_cf), + KBD_MAP(KB_CF | KB_NODEAD, KB_CF, pckbd_keydesc_cf_nodead), + KBD_MAP(KB_LV, KB_US, pckbd_keydesc_lv), + KBD_MAP(KB_NL, KB_US, pckbd_keydesc_nl), + KBD_MAP(KB_NL | KB_NODEAD, KB_NL, pckbd_keydesc_nl_nodead), +#endif /* WSKBD_NO_INTL_LAYOUTS */ + {0, 0, 0, 0} +}; + +#undef KBD_MAP +#undef KC diff --git a/unix/openbsd/wsksymdef.h b/unix/openbsd/wsksymdef.h new file mode 100644 index 00000000..748ae5c8 --- /dev/null +++ b/unix/openbsd/wsksymdef.h @@ -0,0 +1,781 @@ +/* $OpenBSD: wsksymdef.h,v 1.32 2008/06/26 05:42:19 ray Exp $ */ +/* $NetBSD: wsksymdef.h,v 1.34.4.1 2000/07/07 09:49:54 hannken Exp $ */ + +/*- + * Copyright (c) 1997 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Juergen Hannken-Illjes. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _DEV_WSCONS_WSKSYMDEF_H_ +#define _DEV_WSCONS_WSKSYMDEF_H_ + +/* + * Keysymbols encoded as 16-bit Unicode. Special symbols + * are encoded in the private area (0xe000 - 0xf8ff). + * Currently only ISO Latin-1 subset is supported. + * + * This file is parsed from userland. Encode keysyms as: + * + * #define KS_[^ \t]* 0x[0-9a-f]* + * + * and don't modify the border comments. + */ + +/*BEGINKEYSYMDECL*/ + +/* + * Group Ascii (ISO Latin1) character in low byte + */ + +#define KS_BackSpace 0x08 +#define KS_Tab 0x09 +#define KS_Linefeed 0x0a +#define KS_Clear 0x0b +#define KS_Return 0x0d +#define KS_Escape 0x1b +#define KS_space 0x20 +#define KS_exclam 0x21 +#define KS_quotedbl 0x22 +#define KS_numbersign 0x23 +#define KS_dollar 0x24 +#define KS_percent 0x25 +#define KS_ampersand 0x26 +#define KS_apostrophe 0x27 +#define KS_parenleft 0x28 +#define KS_parenright 0x29 +#define KS_asterisk 0x2a +#define KS_plus 0x2b +#define KS_comma 0x2c +#define KS_minus 0x2d +#define KS_period 0x2e +#define KS_slash 0x2f +#define KS_0 0x30 +#define KS_1 0x31 +#define KS_2 0x32 +#define KS_3 0x33 +#define KS_4 0x34 +#define KS_5 0x35 +#define KS_6 0x36 +#define KS_7 0x37 +#define KS_8 0x38 +#define KS_9 0x39 +#define KS_colon 0x3a +#define KS_semicolon 0x3b +#define KS_less 0x3c +#define KS_equal 0x3d +#define KS_greater 0x3e +#define KS_question 0x3f +#define KS_at 0x40 +#define KS_A 0x41 +#define KS_B 0x42 +#define KS_C 0x43 +#define KS_D 0x44 +#define KS_E 0x45 +#define KS_F 0x46 +#define KS_G 0x47 +#define KS_H 0x48 +#define KS_I 0x49 +#define KS_J 0x4a +#define KS_K 0x4b +#define KS_L 0x4c +#define KS_M 0x4d +#define KS_N 0x4e +#define KS_O 0x4f +#define KS_P 0x50 +#define KS_Q 0x51 +#define KS_R 0x52 +#define KS_S 0x53 +#define KS_T 0x54 +#define KS_U 0x55 +#define KS_V 0x56 +#define KS_W 0x57 +#define KS_X 0x58 +#define KS_Y 0x59 +#define KS_Z 0x5a +#define KS_bracketleft 0x5b +#define KS_backslash 0x5c +#define KS_bracketright 0x5d +#define KS_asciicircum 0x5e +#define KS_underscore 0x5f +#define KS_grave 0x60 +#define KS_a 0x61 +#define KS_b 0x62 +#define KS_c 0x63 +#define KS_d 0x64 +#define KS_e 0x65 +#define KS_f 0x66 +#define KS_g 0x67 +#define KS_h 0x68 +#define KS_i 0x69 +#define KS_j 0x6a +#define KS_k 0x6b +#define KS_l 0x6c +#define KS_m 0x6d +#define KS_n 0x6e +#define KS_o 0x6f +#define KS_p 0x70 +#define KS_q 0x71 +#define KS_r 0x72 +#define KS_s 0x73 +#define KS_t 0x74 +#define KS_u 0x75 +#define KS_v 0x76 +#define KS_w 0x77 +#define KS_x 0x78 +#define KS_y 0x79 +#define KS_z 0x7a +#define KS_braceleft 0x7b +#define KS_bar 0x7c +#define KS_braceright 0x7d +#define KS_asciitilde 0x7e +#define KS_Delete 0x7f + +#define KS_nobreakspace 0xa0 +#define KS_exclamdown 0xa1 +#define KS_cent 0xa2 +#define KS_sterling 0xa3 +#define KS_currency 0xa4 +#define KS_yen 0xa5 +#define KS_brokenbar 0xa6 +#define KS_section 0xa7 +#define KS_diaeresis 0xa8 +#define KS_copyright 0xa9 +#define KS_ordfeminine 0xaa +#define KS_guillemotleft 0xab +#define KS_notsign 0xac +#define KS_hyphen 0xad +#define KS_registered 0xae +#define KS_macron 0xaf +#define KS_degree 0xb0 +#define KS_plusminus 0xb1 +#define KS_twosuperior 0xb2 +#define KS_threesuperior 0xb3 +#define KS_acute 0xb4 +#define KS_mu 0xb5 +#define KS_paragraph 0xb6 +#define KS_periodcentered 0xb7 +#define KS_cedilla 0xb8 +#define KS_onesuperior 0xb9 +#define KS_masculine 0xba +#define KS_guillemotright 0xbb +#define KS_onequarter 0xbc +#define KS_onehalf 0xbd +#define KS_threequarters 0xbe +#define KS_questiondown 0xbf +#define KS_Agrave 0xc0 +#define KS_Aacute 0xc1 +#define KS_Acircumflex 0xc2 +#define KS_Atilde 0xc3 +#define KS_Adiaeresis 0xc4 +#define KS_Aring 0xc5 +#define KS_AE 0xc6 +#define KS_Ccedilla 0xc7 +#define KS_Egrave 0xc8 +#define KS_Eacute 0xc9 +#define KS_Ecircumflex 0xca +#define KS_Ediaeresis 0xcb +#define KS_Igrave 0xcc +#define KS_Iacute 0xcd +#define KS_Icircumflex 0xce +#define KS_Idiaeresis 0xcf +#define KS_ETH 0xd0 +#define KS_Ntilde 0xd1 +#define KS_Ograve 0xd2 +#define KS_Oacute 0xd3 +#define KS_Ocircumflex 0xd4 +#define KS_Otilde 0xd5 +#define KS_Odiaeresis 0xd6 +#define KS_multiply 0xd7 +#define KS_Ooblique 0xd8 +#define KS_Ugrave 0xd9 +#define KS_Uacute 0xda +#define KS_Ucircumflex 0xdb +#define KS_Udiaeresis 0xdc +#define KS_Yacute 0xdd +#define KS_THORN 0xde +#define KS_ssharp 0xdf +#define KS_agrave 0xe0 +#define KS_aacute 0xe1 +#define KS_acircumflex 0xe2 +#define KS_atilde 0xe3 +#define KS_adiaeresis 0xe4 +#define KS_aring 0xe5 +#define KS_ae 0xe6 +#define KS_ccedilla 0xe7 +#define KS_egrave 0xe8 +#define KS_eacute 0xe9 +#define KS_ecircumflex 0xea +#define KS_ediaeresis 0xeb +#define KS_igrave 0xec +#define KS_iacute 0xed +#define KS_icircumflex 0xee +#define KS_idiaeresis 0xef +#define KS_eth 0xf0 +#define KS_ntilde 0xf1 +#define KS_ograve 0xf2 +#define KS_oacute 0xf3 +#define KS_ocircumflex 0xf4 +#define KS_otilde 0xf5 +#define KS_odiaeresis 0xf6 +#define KS_division 0xf7 +#define KS_oslash 0xf8 +#define KS_ugrave 0xf9 +#define KS_uacute 0xfa +#define KS_ucircumflex 0xfb +#define KS_udiaeresis 0xfc +#define KS_yacute 0xfd +#define KS_thorn 0xfe +#define KS_ydiaeresis 0xff + +#define KS_Odoubleacute 0x150 +#define KS_odoubleacute 0x151 +#define KS_Udoubleacute 0x170 +#define KS_udoubleacute 0x171 + +/* + * Group Dead (dead accents) + */ + +#define KS_dead_grave 0x0300 +#define KS_dead_acute 0x0301 +#define KS_dead_circumflex 0x0302 +#define KS_dead_tilde 0x0303 +#define KS_dead_diaeresis 0x0308 +#define KS_dead_abovering 0x030a +#define KS_dead_cedilla 0x0327 + +/* + * Group Cyrillic (koi8-r) + */ + +#define KS_Cyrillic_A 0xe1 +#define KS_Cyrillic_BE 0xe2 +#define KS_Cyrillic_VE 0xf7 +#define KS_Cyrillic_GE 0xe7 +#define KS_Cyrillic_DE 0xe4 +#define KS_Cyrillic_IE 0xe5 +#define KS_Cyrillic_YO 0xb3 +#define KS_Cyrillic_ZHE 0xf6 +#define KS_Cyrillic_ZE 0xfa +#define KS_Cyrillic_I 0xe9 +#define KS_Cyrillic_ISHORT 0xea +#define KS_Cyrillic_IUKR 0xb6 +#define KS_Cyrillic_YI 0xb7 +#define KS_Cyrillic_KA 0xeb +#define KS_Cyrillic_EL 0xec +#define KS_Cyrillic_EM 0xed +#define KS_Cyrillic_EN 0xee +#define KS_Cyrillic_O 0xef +#define KS_Cyrillic_PE 0xf0 +#define KS_Cyrillic_ER 0xf2 +#define KS_Cyrillic_ES 0xf3 +#define KS_Cyrillic_TE 0xf4 +#define KS_Cyrillic_U 0xf5 +#define KS_Cyrillic_EF 0xe6 +#define KS_Cyrillic_HA 0xe8 +#define KS_Cyrillic_TSE 0xe3 +#define KS_Cyrillic_CHE 0xfe +#define KS_Cyrillic_SHA 0xfb +#define KS_Cyrillic_SCHA 0xfd +#define KS_Cyrillic_HSIGHN 0xff +#define KS_Cyrillic_YERU 0xf9 +#define KS_Cyrillic_SSIGHN 0xf8 +#define KS_Cyrillic_E 0xfc +#define KS_Cyrillic_YU 0xe0 +#define KS_Cyrillic_YA 0xf1 +#define KS_Cyrillic_a 0xc1 +#define KS_Cyrillic_be 0xc2 +#define KS_Cyrillic_ve 0xd7 +#define KS_Cyrillic_ge 0xc7 +#define KS_Cyrillic_de 0xc4 +#define KS_Cyrillic_ie 0xc5 +#define KS_Cyrillic_yo 0xa3 +#define KS_Cyrillic_zhe 0xd6 +#define KS_Cyrillic_ze 0xda +#define KS_Cyrillic_i 0xc9 +#define KS_Cyrillic_ishort 0xca +#define KS_Cyrillic_iukr 0xa6 +#define KS_Cyrillic_yi 0xa7 +#define KS_Cyrillic_ka 0xcb +#define KS_Cyrillic_el 0xcc +#define KS_Cyrillic_em 0xcd +#define KS_Cyrillic_en 0xce +#define KS_Cyrillic_o 0xcf +#define KS_Cyrillic_pe 0xd0 +#define KS_Cyrillic_er 0xd2 +#define KS_Cyrillic_es 0xd3 +#define KS_Cyrillic_te 0xd4 +#define KS_Cyrillic_u 0xd5 +#define KS_Cyrillic_ef 0xc6 +#define KS_Cyrillic_ha 0xc8 +#define KS_Cyrillic_tse 0xc3 +#define KS_Cyrillic_che 0xde +#define KS_Cyrillic_sha 0xdb +#define KS_Cyrillic_scha 0xdd +#define KS_Cyrillic_hsighn 0xdf +#define KS_Cyrillic_yeru 0xd9 +#define KS_Cyrillic_ssighn 0xd8 +#define KS_Cyrillic_e 0xdc +#define KS_Cyrillic_yu 0xc0 +#define KS_Cyrillic_ya 0xd1 +#define KS_Cyrillic_gheukr 0xad +#define KS_Cyrillic_GHEUKR 0xbd +#define KS_Cyrillic_yeukr 0xa4 +#define KS_Cyrillic_YEUKR 0xb4 + +/* + * Group Latin-2 (iso8859-2) + */ + +#define KS_L2_Aogonek 0xa1 +#define KS_L2_breve 0xa2 +#define KS_L2_Lstroke 0xa3 +#define KS_L2_Lcaron 0xa5 +#define KS_L2_Sacute 0xa6 +#define KS_L2_Scaron 0xa9 +#define KS_L2_Scedilla 0xaa +#define KS_L2_Tcaron 0xab +#define KS_L2_Zacute 0xac +#define KS_L2_Zcaron 0xae +#define KS_L2_Zdotabove 0xaf +#define KS_L2_aogonek 0xb1 +#define KS_L2_ogonek 0xb2 +#define KS_L2_lstroke 0xb3 +#define KS_L2_lcaron 0xb5 +#define KS_L2_sacute 0xb6 +#define KS_L2_caron 0xb7 +#define KS_L2_scaron 0xb9 +#define KS_L2_scedilla 0xba +#define KS_L2_tcaron 0xbb +#define KS_L2_zacute 0xbc +#define KS_L2_dblacute 0xbd +#define KS_L2_zcaron 0xbe +#define KS_L2_zdotabove 0xbf +#define KS_L2_Racute 0xc0 +#define KS_L2_Abreve 0xc3 +#define KS_L2_Lacute 0xc5 +#define KS_L2_Cacute 0xc6 +#define KS_L2_Ccaron 0xc8 +#define KS_L2_Eogonek 0xca +#define KS_L2_Ecaron 0xcc +#define KS_L2_Dcaron 0xcf +#define KS_L2_Dstroke 0xd0 +#define KS_L2_Nacute 0xd1 +#define KS_L2_Ncaron 0xd2 +#define KS_L2_Odoubleacute 0xd5 +#define KS_L2_Rcaron 0xd8 +#define KS_L2_Uring 0xd9 +#define KS_L2_Udoubleacute 0xdb +#define KS_L2_Tcedilla 0xde +#define KS_L2_racute 0xe0 +#define KS_L2_abreve 0xe3 +#define KS_L2_lacute 0xe5 +#define KS_L2_cacute 0xe6 +#define KS_L2_ccaron 0xe8 +#define KS_L2_eogonek 0xea +#define KS_L2_ecaron 0xec +#define KS_L2_dcaron 0xef +#define KS_L2_dstroke 0xf0 +#define KS_L2_nacute 0xf1 +#define KS_L2_odoubleacute 0xf5 +#define KS_L2_rcaron 0xf8 +#define KS_L2_uring 0xf9 +#define KS_L2_udoubleacute 0xfb +#define KS_L2_tcedilla 0xfe +#define KS_L2_dotabove 0xff + +/* + * Group Latin-5 (iso8859-9) + */ + +#define KS_L5_Gbreve 0xd0 +#define KS_L5_Idotabove 0xdd +#define KS_L5_Scedilla 0xde +#define KS_L5_gbreve 0xf0 +#define KS_L5_idotless 0xfd +#define KS_L5_scedilla 0xfe + + /* + * Group Latin-7 (iso8859-13) + */ + +#define KS_L7_rightdblquot 0xa1 +#define KS_L7_dbllow9quot 0xa5 +#define KS_L7_Ostroke 0xa8 +#define KS_L7_Rcedilla 0xaa +#define KS_L7_AE 0xaf +#define KS_L7_leftdblquot 0xb4 +#define KS_L7_ostroke 0xb8 +#define KS_L7_rcedilla 0xba +#define KS_L7_ae 0xbf +#define KS_L7_Aogonek 0xc0 +#define KS_L7_Iogonek 0xc1 +#define KS_L7_Amacron 0xc2 +#define KS_L7_Cacute 0xc3 +#define KS_L7_Eogonek 0xc6 +#define KS_L7_Emacron 0xc7 +#define KS_L7_Ccaron 0xc8 +#define KS_L7_Zacute 0xca +#define KS_L7_Edot 0xcb +#define KS_L7_Gcedilla 0xcc +#define KS_L7_Kcedilla 0xcd +#define KS_L7_Imacron 0xce +#define KS_L7_Lcedilla 0xcf +#define KS_L7_Scaron 0xd0 +#define KS_L7_Nacute 0xd1 +#define KS_L7_Ncedilla 0xd2 +#define KS_L7_Omacron 0xd4 +#define KS_L7_Uogonek 0xd8 +#define KS_L7_Lstroke 0xd9 +#define KS_L7_Sacute 0xda +#define KS_L7_Umacron 0xdb +#define KS_L7_Zdot 0xdd +#define KS_L7_Zcaron 0xde +#define KS_L7_aogonek 0xe0 +#define KS_L7_iogonek 0xe1 +#define KS_L7_amacron 0xe2 +#define KS_L7_cacute 0xe3 +#define KS_L7_eogonek 0xe6 +#define KS_L7_emacron 0xe7 +#define KS_L7_ccaron 0xe8 +#define KS_L7_zacute 0xea +#define KS_L7_edot 0xeb +#define KS_L7_gcedilla 0xec +#define KS_L7_kcedilla 0xed +#define KS_L7_imacron 0xee +#define KS_L7_lcedilla 0xef +#define KS_L7_scaron 0xf0 +#define KS_L7_nacute 0xf1 +#define KS_L7_ncedilla 0xf2 +#define KS_L7_omacron 0xf4 +#define KS_L7_uogonek 0xf8 +#define KS_L7_lstroke 0xf9 +#define KS_L7_sacute 0xfa +#define KS_L7_umacron 0xfb +#define KS_L7_zdot 0xfd +#define KS_L7_zcaron 0xfe +#define KS_L7_rightsnglquot 0xff + +/* + * Group 1 (modifiers) + */ + +#define KS_Shift_L 0xf101 +#define KS_Shift_R 0xf102 +#define KS_Control_L 0xf103 +#define KS_Control_R 0xf104 +#define KS_Caps_Lock 0xf105 +#define KS_Shift_Lock 0xf106 +#define KS_Alt_L 0xf107 +#define KS_Alt_R 0xf108 +#define KS_Multi_key 0xf109 +#define KS_Mode_switch 0xf10a +#define KS_Num_Lock 0xf10b +#define KS_Hold_Screen 0xf10c +#define KS_Cmd 0xf10d +#define KS_Cmd1 0xf10e +#define KS_Cmd2 0xf10f +#define KS_Meta_L 0xf110 +#define KS_Meta_R 0xf111 +#define KS_Zenkaku_Hankaku 0xf112 /* Zenkaku/Hankaku toggle */ +#define KS_Hiragana_Katakana 0xf113 /* Hiragana/Katakana toggle */ +#define KS_Henkan_Mode 0xf114 /* Start/Stop Conversion */ +#define KS_Henkan 0xf115 /* Alias for Henkan_Mode */ +#define KS_Muhenkan 0xf116 /* Cancel Conversion */ +#define KS_Mode_Lock 0xf117 + +/* + * Group 2 (keypad) character in low byte + */ + +#define KS_KP_F1 0xf291 +#define KS_KP_F2 0xf292 +#define KS_KP_F3 0xf293 +#define KS_KP_F4 0xf294 +#define KS_KP_Home 0xf295 +#define KS_KP_Left 0xf296 +#define KS_KP_Up 0xf297 +#define KS_KP_Right 0xf298 +#define KS_KP_Down 0xf299 +#define KS_KP_Prior 0xf29a +#define KS_KP_Next 0xf29b +#define KS_KP_End 0xf29c +#define KS_KP_Begin 0xf29d +#define KS_KP_Insert 0xf29e +#define KS_KP_Delete 0xf29f + +#define KS_KP_Space 0xf220 +#define KS_KP_Tab 0xf209 +#define KS_KP_Enter 0xf20d +#define KS_KP_Equal 0xf23d +#define KS_KP_Numbersign 0xf223 +#define KS_KP_Multiply 0xf22a +#define KS_KP_Add 0xf22b +#define KS_KP_Separator 0xf22c +#define KS_KP_Subtract 0xf22d +#define KS_KP_Decimal 0xf22e +#define KS_KP_Divide 0xf22f +#define KS_KP_0 0xf230 +#define KS_KP_1 0xf231 +#define KS_KP_2 0xf232 +#define KS_KP_3 0xf233 +#define KS_KP_4 0xf234 +#define KS_KP_5 0xf235 +#define KS_KP_6 0xf236 +#define KS_KP_7 0xf237 +#define KS_KP_8 0xf238 +#define KS_KP_9 0xf239 + +/* + * Group 3 (function) + */ + +#define KS_f1 0xf300 +#define KS_f2 0xf301 +#define KS_f3 0xf302 +#define KS_f4 0xf303 +#define KS_f5 0xf304 +#define KS_f6 0xf305 +#define KS_f7 0xf306 +#define KS_f8 0xf307 +#define KS_f9 0xf308 +#define KS_f10 0xf309 +#define KS_f11 0xf30a +#define KS_f12 0xf30b +#define KS_f13 0xf30c +#define KS_f14 0xf30d +#define KS_f15 0xf30e +#define KS_f16 0xf30f +#define KS_f17 0xf310 +#define KS_f18 0xf311 +#define KS_f19 0xf312 +#define KS_f20 0xf313 + +#define KS_F1 0xf340 +#define KS_F2 0xf341 +#define KS_F3 0xf342 +#define KS_F4 0xf343 +#define KS_F5 0xf344 +#define KS_F6 0xf345 +#define KS_F7 0xf346 +#define KS_F8 0xf347 +#define KS_F9 0xf348 +#define KS_F10 0xf349 +#define KS_F11 0xf34a +#define KS_F12 0xf34b +#define KS_F13 0xf34c +#define KS_F14 0xf34d +#define KS_F15 0xf34e +#define KS_F16 0xf34f +#define KS_F17 0xf350 +#define KS_F18 0xf351 +#define KS_F19 0xf352 +#define KS_F20 0xf353 + +#define KS_Home 0xf381 +#define KS_Prior 0xf382 +#define KS_Next 0xf383 +#define KS_Up 0xf384 +#define KS_Down 0xf385 +#define KS_Left 0xf386 +#define KS_Right 0xf387 +#define KS_End 0xf388 +#define KS_Insert 0xf389 +#define KS_Help 0xf38a +#define KS_Execute 0xf38b +#define KS_Find 0xf38c +#define KS_Select 0xf38d +#define KS_Again 0xf38e +#define KS_Props 0xf38f +#define KS_Undo 0xf390 +#define KS_Front 0xf391 +#define KS_Copy 0xf392 +#define KS_Open 0xf393 +#define KS_Paste 0xf394 +#define KS_Cut 0xf395 + +#define KS_Menu 0xf3c0 +#define KS_Pause 0xf3c1 +#define KS_Print_Screen 0xf3c2 + +#define KS_AudioMute 0xf3d1 +#define KS_AudioLower 0xf3d2 +#define KS_AudioRaise 0xf3d3 + +/* + * Group 4 (command) + */ + +#define KS_Cmd_Screen0 0xf400 +#define KS_Cmd_Screen1 0xf401 +#define KS_Cmd_Screen2 0xf402 +#define KS_Cmd_Screen3 0xf403 +#define KS_Cmd_Screen4 0xf404 +#define KS_Cmd_Screen5 0xf405 +#define KS_Cmd_Screen6 0xf406 +#define KS_Cmd_Screen7 0xf407 +#define KS_Cmd_Screen8 0xf408 +#define KS_Cmd_Screen9 0xf409 +#define KS_Cmd_Screen10 0xf40a +#define KS_Cmd_Screen11 0xf40b +#define KS_Cmd_Debugger 0xf420 +#define KS_Cmd_ResetEmul 0xf421 +#define KS_Cmd_ResetClose 0xf422 +#define KS_Cmd_BacklightOn 0xf423 +#define KS_Cmd_BacklightOff 0xf424 +#define KS_Cmd_BacklightToggle 0xf425 +#define KS_Cmd_BrightnessUp 0xf426 +#define KS_Cmd_BrightnessDown 0xf427 +#define KS_Cmd_BrightnessRotate 0xf428 +#define KS_Cmd_ContrastUp 0xf429 +#define KS_Cmd_ContrastDown 0xf42a +#define KS_Cmd_ContrastRotate 0xf42b +#define KS_Cmd_ScrollBack 0xf42c +#define KS_Cmd_ScrollFwd 0xf42d +#define KS_Cmd_KbdReset 0xf42e + +/* + * Group 5 (internal) + */ + +#define KS_voidSymbol 0xf500 + +/*ENDKEYSYMDECL*/ + +/* + * keysym groups + */ + +#define KS_GROUP_Mod 0xf100 +#define KS_GROUP_Keypad 0xf200 +#define KS_GROUP_Function 0xf300 +#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_Keycode 0xf803 /* not encoded in keysym */ + +#define KS_NUMKEYCODES 0x1000 +#define KS_KEYCODE(v) ((v) | 0xe000) + +#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))) + +#define KS_VALUE(k) (((k) & 0xf000) == 0xe000 ? ((k) & 0x0fff) : \ + (((k) & 0xf800) == 0xf000 ? ((k) & 0x00ff) : (k))) + +/* + * Keyboard types: 8bit encoding, 24bit variant + */ + +#define KB_ENCODING(e) ((e) & 0x0000ff00) +#define KB_VARIANT(e) ((e) & 0xffff00ff) + +#define KB_NONE 0x0000 +#define KB_USER 0x0100 +#define KB_US 0x0200 +#define KB_DE 0x0300 +#define KB_DK 0x0400 +#define KB_IT 0x0500 +#define KB_FR 0x0600 +#define KB_UK 0x0700 +#define KB_JP 0x0800 +#define KB_SV 0x0900 +#define KB_NO 0x0a00 +#define KB_ES 0x0b00 +#define KB_HU 0x0c00 +#define KB_BE 0x0d00 +#define KB_RU 0x0e00 +#define KB_SG 0x0f00 +#define KB_SF 0x1000 +#define KB_PT 0x1100 +#define KB_UA 0x1200 +#define KB_LT 0x1300 +#define KB_LA 0x1400 +#define KB_BR 0x1500 +#define KB_NL 0x1600 +#define KB_TR 0x1700 +#define KB_PL 0x1800 +#define KB_SI 0x1900 +#define KB_CF 0x1a00 +#define KB_LV 0x1b00 +#define KB_NEO 0x1c00 + +#define KB_NODEAD 0x000001 /* disable dead accents */ +#define KB_DECLK 0x000002 /* DEC LKnnn layout */ +#define KB_LK401 0x000004 /* DEC LK401 instead LK201 */ +#define KB_SWAPCTRLCAPS 0x000008 /* swap Left-Control and Caps-Lock */ +#define KB_DVORAK 0x000010 /* Dvorak layout */ +#define KB_METAESC 0x000020 /* generate ESC prefix on ALT-key */ +#define KB_IOPENER 0x000040 /* f1-f12 -> ESC,f1-f11 */ +#define KB_MACHDEP 0x000080 /* machine dependent */ +#define KB_APPLE 0x010000 /* Apple specific layout */ + +#define KB_ENCTAB \ + { KB_USER, "user" }, \ + { KB_US, "us" }, \ + { KB_DE, "de" }, \ + { KB_DK, "dk" }, \ + { KB_IT, "it" }, \ + { KB_FR, "fr" }, \ + { KB_UK, "uk" }, \ + { KB_JP, "jp" }, \ + { KB_SV, "sv" }, \ + { KB_NO, "no" }, \ + { KB_ES, "es" }, \ + { KB_HU, "hu" }, \ + { KB_BE, "be" }, \ + { KB_RU, "ru" }, \ + { KB_UA, "ua" }, \ + { KB_SG, "sg" }, \ + { KB_SF, "sf" }, \ + { KB_PT, "pt" }, \ + { KB_LT, "lt" }, \ + { KB_LA, "la" }, \ + { KB_BR, "br" }, \ + { KB_NL, "nl" }, \ + { KB_TR, "tr" }, \ + { KB_PL, "pl" }, \ + { KB_SI, "si" }, \ + { KB_CF, "cf" }, \ + { KB_NEO, "neo" }, \ + { KB_LV, "lv" } + +#define KB_VARTAB \ + { KB_NODEAD, "nodead" }, \ + { KB_DECLK, "declk" }, \ + { KB_LK401, "lk401" }, \ + { KB_SWAPCTRLCAPS, "swapctrlcaps" }, \ + { KB_DVORAK, "dvorak" }, \ + { KB_METAESC, "metaesc" }, \ + { KB_IOPENER, "iopener" }, \ + { KB_MACHDEP, "machdep" }, \ + { KB_APPLE, "apple" } + +#endif /* !_DEV_WSCONS_WSKSYMDEF_H_ */