1*350be3edSkiyohara /* $NetBSD: epockbdmap.h,v 1.2 2013/06/20 13:42:02 kiyohara Exp $ */ 2d7b7d02eSkiyohara /* 3d7b7d02eSkiyohara * Copyright (c) 2013 KIYOHARA Takashi 4d7b7d02eSkiyohara * All rights reserved. 5d7b7d02eSkiyohara * 6d7b7d02eSkiyohara * Redistribution and use in source and binary forms, with or without 7d7b7d02eSkiyohara * modification, are permitted provided that the following conditions 8d7b7d02eSkiyohara * are met: 9d7b7d02eSkiyohara * 1. Redistributions of source code must retain the above copyright 10d7b7d02eSkiyohara * notice, this list of conditions and the following disclaimer. 11d7b7d02eSkiyohara * 2. Redistributions in binary form must reproduce the above copyright 12d7b7d02eSkiyohara * notice, this list of conditions and the following disclaimer in the 13d7b7d02eSkiyohara * documentation and/or other materials provided with the distribution. 14d7b7d02eSkiyohara * 15d7b7d02eSkiyohara * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 16d7b7d02eSkiyohara * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17d7b7d02eSkiyohara * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18d7b7d02eSkiyohara * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 19d7b7d02eSkiyohara * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20d7b7d02eSkiyohara * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 21d7b7d02eSkiyohara * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22d7b7d02eSkiyohara * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 23d7b7d02eSkiyohara * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 24d7b7d02eSkiyohara * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25d7b7d02eSkiyohara * POSSIBILITY OF SUCH DAMAGE. 26d7b7d02eSkiyohara */ 27d7b7d02eSkiyohara 28d7b7d02eSkiyohara #include <dev/wscons/wsksymdef.h> 29d7b7d02eSkiyohara #include <dev/wscons/wsksymvar.h> 30d7b7d02eSkiyohara 31d7b7d02eSkiyohara #define KC(n) KS_KEYCODE(n) 32d7b7d02eSkiyohara 33d7b7d02eSkiyohara static const keysym_t epockbd_keysym_us[] = { 34d7b7d02eSkiyohara /* pos normal shifted altgr shift+altgr */ 35d7b7d02eSkiyohara KC(1), KS_6, KS_asciicircum, KS_greater, 36d7b7d02eSkiyohara KC(2), KS_5, KS_percent, KS_less, 37d7b7d02eSkiyohara KC(3), KS_4, KS_dollar, KS_slash, KS_Cmd_Screen3, 38d7b7d02eSkiyohara KC(4), KS_3, KS_numbersign, KS_backslash, KS_Cmd_Screen2, 39d7b7d02eSkiyohara KC(5), KS_2, KS_at, KS_asciitilde, KS_Cmd_Screen1, 40d7b7d02eSkiyohara KC(6), KS_1, KS_exclam, KS_underscore, KS_Cmd_Screen0, 41d7b7d02eSkiyohara // KC(7), REC 42d7b7d02eSkiyohara KC(9), KS_colon, KS_quotedbl, KS_semicolon, 43d7b7d02eSkiyohara KC(10), KS_Delete, KS_BackSpace, 44d7b7d02eSkiyohara KC(11), KS_0, KS_parenright, KS_braceright, 45d7b7d02eSkiyohara KC(12), KS_9, KS_parenleft, KS_braceleft, 46d7b7d02eSkiyohara KC(13), KS_8, KS_asterisk, KS_bracketright, 47d7b7d02eSkiyohara KC(14), KS_7, KS_ampersand, KS_bracketleft, 48d7b7d02eSkiyohara // KC(15), Play 49*350be3edSkiyohara KC(17), KS_y, KS_Y, KS_asterisk, 50d7b7d02eSkiyohara KC(18), KS_t, 51d7b7d02eSkiyohara KC(19), KS_r, 52d7b7d02eSkiyohara KC(20), KS_e, 53d7b7d02eSkiyohara KC(21), KS_w, 54d7b7d02eSkiyohara KC(22), KS_q, 55d7b7d02eSkiyohara KC(23), KS_Escape, 56d7b7d02eSkiyohara KC(25), KS_Return, 57d7b7d02eSkiyohara KC(26), KS_l, 58d7b7d02eSkiyohara KC(27), KS_p, KS_P, KS_equal, 59d7b7d02eSkiyohara KC(28), KS_o, KS_O, KS_minus, 60d7b7d02eSkiyohara KC(29), KS_i, KS_I, KS_plus, 61d7b7d02eSkiyohara KC(30), KS_u, KS_U, KS_slash, 62d7b7d02eSkiyohara KC(31), KS_Menu, 63d7b7d02eSkiyohara KC(33), KS_g, 64d7b7d02eSkiyohara KC(34), KS_f, 65d7b7d02eSkiyohara KC(35), KS_d, 66d7b7d02eSkiyohara KC(36), KS_s, 67d7b7d02eSkiyohara KC(37), KS_a, 68d7b7d02eSkiyohara KC(38), KS_Tab, KS_Tab, KS_Caps_Lock, 69d7b7d02eSkiyohara KC(39), KS_Control_L, 70d7b7d02eSkiyohara KC(41), KS_Down, 71d7b7d02eSkiyohara KC(42), KS_period, KS_apostrophe, KS_plus, 72d7b7d02eSkiyohara KC(43), KS_m, KS_M, KS_minus, 73d7b7d02eSkiyohara KC(44), KS_k, 74d7b7d02eSkiyohara KC(45), KS_j, 75d7b7d02eSkiyohara KC(46), KS_h, 76d7b7d02eSkiyohara KC(47), KS_Mode_switch, KS_Multi_key, 77d7b7d02eSkiyohara KC(49), KS_n, 78d7b7d02eSkiyohara KC(50), KS_b, 79d7b7d02eSkiyohara KC(51), KS_v, 80d7b7d02eSkiyohara KC(52), KS_c, 81d7b7d02eSkiyohara KC(53), KS_x, 82d7b7d02eSkiyohara KC(54), KS_z, 83d7b7d02eSkiyohara KC(55), KS_Shift_R, 84d7b7d02eSkiyohara KC(57), KS_Right, KS_Right, KS_End, 85d7b7d02eSkiyohara KC(58), KS_Left, KS_Left, KS_Home, 86d7b7d02eSkiyohara KC(59), KS_comma, KS_question, KS_Help, 87d7b7d02eSkiyohara KC(60), KS_Up, 88d7b7d02eSkiyohara KC(61), KS_space, KS_space, KS_Cmd_BacklightToggle, 89d7b7d02eSkiyohara // KC(62), Stop 90d7b7d02eSkiyohara KC(63), KS_Shift_L, 91d7b7d02eSkiyohara }; 92d7b7d02eSkiyohara 93d7b7d02eSkiyohara static const keysym_t epockbd_keysym_uk[] = { 94d7b7d02eSkiyohara /* pos normal shifted altgr */ 95*350be3edSkiyohara KC(3), KS_4, KS_dollar, KS_at, KS_Cmd_Screen3, 96*350be3edSkiyohara KC(4), KS_3, KS_sterling, KS_backslash, KS_Cmd_Screen2, 97*350be3edSkiyohara KC(5), KS_2, KS_quotedbl, KS_numbersign, KS_Cmd_Screen1, 98d7b7d02eSkiyohara KC(9), KS_apostrophe, KS_asciitilde, KS_colon, 99d7b7d02eSkiyohara KC(26), KS_l, KS_L, KS_semicolon, 100d7b7d02eSkiyohara KC(42), KS_period, KS_question, KS_plus, 101d7b7d02eSkiyohara KC(59), KS_comma, KS_slash, KS_Help, 102d7b7d02eSkiyohara }; 103d7b7d02eSkiyohara 104*350be3edSkiyohara static const keysym_t epockbd_keysym_de[] = { 105*350be3edSkiyohara /* pos normal shifted altgr shift+altgr */ 106*350be3edSkiyohara KC(1), KS_6, KS_ampersand, KS_greater, 107*350be3edSkiyohara KC(3), KS_4, KS_dollar, KS_asciitilde, KS_Cmd_Screen3, 108*350be3edSkiyohara KC(4), KS_3, KS_section, KS_backslash, KS_Cmd_Screen2, 109*350be3edSkiyohara KC(5), KS_2, KS_quotedbl, KS_slash, KS_Cmd_Screen1, 110*350be3edSkiyohara KC(9), KS_numbersign, KS_asterisk, KS_equal, 111*350be3edSkiyohara KC(11), KS_0, KS_apostrophe, KS_braceright, 112*350be3edSkiyohara KC(12), KS_9, KS_parenright, KS_braceleft, 113*350be3edSkiyohara KC(13), KS_8, KS_parenleft, KS_bracketright, 114*350be3edSkiyohara KC(14), KS_7, KS_question, KS_bracketleft, 115*350be3edSkiyohara KC(19), KS_r, KS_R, KS_masculine, 116*350be3edSkiyohara KC(20), KS_e, KS_E, KS_currency, 117*350be3edSkiyohara KC(21), KS_w, KS_W, KS_asciicircum, 118*350be3edSkiyohara KC(22), KS_q, KS_Q, KS_at, 119*350be3edSkiyohara KC(26), KS_l, KS_L, KS_minus, 120*350be3edSkiyohara KC(27), KS_p, KS_P, KS_ssharp, 121*350be3edSkiyohara KC(28), KS_o, KS_O, KS_diaeresis, 122*350be3edSkiyohara KC(29), KS_i, KS_I, KS_mu, 123*350be3edSkiyohara KC(30), KS_u, KS_U, KS_udiaeresis, 124*350be3edSkiyohara KC(31), KS_Menu, 125*350be3edSkiyohara KC(37), KS_a, KS_A, KS_adiaeresis, 126*350be3edSkiyohara KC(42), KS_comma, KS_semicolon, 127*350be3edSkiyohara KC(43), KS_m, 128*350be3edSkiyohara KC(44), KS_k, KS_K, KS_plus, 129*350be3edSkiyohara KC(45), KS_j, KS_J, KS_slash, 130*350be3edSkiyohara KC(47), KS_Mode_switch, KS_Multi_key, 131*350be3edSkiyohara KC(50), KS_b, KS_B, KS_dead_caron, 132*350be3edSkiyohara KC(51), KS_v, KS_V, KS_dead_breve, 133*350be3edSkiyohara KC(52), KS_c, KS_C, KS_acute, 134*350be3edSkiyohara KC(54), KS_y, KS_Y, KS_diaeresis, 135*350be3edSkiyohara KC(59), KS_period, KS_colon, 136*350be3edSkiyohara }; 137*350be3edSkiyohara 138*350be3edSkiyohara static const keysym_t epockbd_keysym_fr[] = { 139*350be3edSkiyohara /* pos normal shifted altgr shift+altgr */ 140*350be3edSkiyohara KC(1), KS_6, KS_dollar, KS_parenright, 141*350be3edSkiyohara KC(2), KS_5, KS_degree, KS_parenleft, 142*350be3edSkiyohara KC(3), KS_4, KS_dead_tilde, KS_apostrophe, KS_Cmd_Screen3, 143*350be3edSkiyohara KC(4), KS_3, KS_numbersign, KS_quotedbl, KS_Cmd_Screen2, 144*350be3edSkiyohara KC(5), KS_2, KS_percent, KS_eacute, KS_Cmd_Screen1, 145*350be3edSkiyohara KC(6), KS_1, KS_exclam, KS_ampersand, KS_Cmd_Screen0, 146*350be3edSkiyohara KC(9), KS_m, KS_M, KS_minus, 147*350be3edSkiyohara KC(11), KS_0, KS_at, KS_agrave, 148*350be3edSkiyohara KC(12), KS_9, KS_dead_circumflex, KS_ccedilla, 149*350be3edSkiyohara KC(13), KS_8, KS_backslash, KS_underscore, 150*350be3edSkiyohara KC(14), KS_7, KS_sterling, KS_eacute, 151*350be3edSkiyohara KC(17), KS_y, KS_Y, KS_braceright, 152*350be3edSkiyohara KC(18), KS_t, KS_T, KS_braceleft, 153*350be3edSkiyohara KC(19), KS_r, KS_R, KS_bracketright, 154*350be3edSkiyohara KC(20), KS_e, KS_E, KS_bracketleft, 155*350be3edSkiyohara KC(21), KS_z, KS_Z, KS_greater, 156*350be3edSkiyohara KC(22), KS_a, KS_A, KS_less, 157*350be3edSkiyohara KC(26), KS_l, KS_L, KS_plus, 158*350be3edSkiyohara KC(28), KS_o, 159*350be3edSkiyohara KC(29), KS_i, KS_I, KS_bar, 160*350be3edSkiyohara KC(30), KS_u, KS_U, KS_ugrave, 161*350be3edSkiyohara KC(37), KS_q, 162*350be3edSkiyohara KC(42), KS_period, KS_semicolon, KS_slash, 163*350be3edSkiyohara KC(43), KS_question, KS_comma, 164*350be3edSkiyohara KC(44), KS_k, KS_K, KS_KP_Divide, 165*350be3edSkiyohara KC(50), KS_b, KS_B, KS_dead_circumflex, 166*350be3edSkiyohara KC(51), KS_v, KS_V, KS_dead_tilde, 167*350be3edSkiyohara KC(52), KS_c, KS_C, KS_apostrophe, 168*350be3edSkiyohara KC(53), KS_x, KS_X, KS_grave, 169*350be3edSkiyohara KC(54), KS_w, KS_W, KS_dead_diaeresis, 170*350be3edSkiyohara KC(59), KS_colon, KS_mu, 171*350be3edSkiyohara }; 172*350be3edSkiyohara 173d7b7d02eSkiyohara #define KBD_MAP(name, base, map) \ 174d7b7d02eSkiyohara { name, base, sizeof(map)/sizeof(keysym_t), map } 175d7b7d02eSkiyohara 176d7b7d02eSkiyohara struct wscons_keydesc epockbd_keydesctab[] = { 177d7b7d02eSkiyohara KBD_MAP(KB_UK, KB_US, epockbd_keysym_uk), 178d7b7d02eSkiyohara KBD_MAP(KB_US, 0, epockbd_keysym_us), 179*350be3edSkiyohara KBD_MAP(KB_DE, KB_US, epockbd_keysym_de), 180*350be3edSkiyohara KBD_MAP(KB_FR, KB_US, epockbd_keysym_fr), 181d7b7d02eSkiyohara 182d7b7d02eSkiyohara { 0, 0, 0, NULL } 183d7b7d02eSkiyohara }; 184