/***************************************************************************** * Copyright (c) 2013 IBM Corporation * All rights reserved. * This program and the accompanying materials * are made available under the terms of the BSD License * which accompanies this distribution, and is available at * http://www.opensource.org/licenses/bsd-license.php * * Contributors: * IBM Corporation - initial implementation *****************************************************************************/ #include /***********************************/ /* Keycodes for US Keyboard */ /* - no control keys pressed - */ /***********************************/ const uint8_t keycodes_std_US[] = { 0, /* 0 00 Reserved (no event indicated) */ 0, /* 1 01 Keyboard ErrorRollOver */ 0, /* 2 02 Keyboard POSTFail */ 0, /* 3 03 Keyboard ErrorUndefined */ 'a', /* 4 04 Keyboard a and A 31 */ 'b', /* 5 05 Keyboard b and B 50 */ 'c', /* 6 06 Keyboard c and C 48 */ 'd', /* 7 07 Keyboard d and D 33 */ 'e', /* 8 08 Keyboard e and E 19 */ 'f', /* 9 09 Keyboard f and F 34 */ 'g', /* 10 0A Keyboard g and G 35 */ 'h', /* 11 0B Keyboard h and H 36 */ 'i', /* 12 0C Keyboard i and I 24 */ 'j', /* 13 0D Keyboard j and J 37 */ 'k', /* 14 0E Keyboard k and K 38 */ 'l', /* 15 0F Keyboard l and L 39 */ 'm', /* 16 10 Keyboard m and M 52 */ 'n', /* 17 11 Keyboard n and N 51 */ 'o', /* 18 12 Keyboard o and O 25 */ 'p', /* 19 13 Keyboard p and P 26 */ 'q', /* 20 14 Keyboard q and Q 17 */ 'r', /* 21 15 Keyboard r and R 20 */ 's', /* 22 16 Keyboard s and S 32 */ 't', /* 23 17 Keyboard t and T 21 */ 'u', /* 24 18 Keyboard u and U 23 */ 'v', /* 25 19 Keyboard v and V 49 */ 'w', /* 26 1A Keyboard w and W 18 */ 'x', /* 27 1B Keyboard x and X 47 */ 'y', /* 28 1C Keyboard y and Y 22 */ 'z', /* 29 1D Keyboard z and Z 46 */ '1', /* 30 1E Keyboard 1 and ! 2 */ '2', /* 31 1F Keyboard 2 and @ 3 */ '3', /* 32 20 Keyboard 3 and # 4 */ '4', /* 33 21 Keyboard 4 and $ 5 */ '5', /* 34 22 Keyboard 5 and % 6 */ '6', /* 35 23 Keyboard 6 and ^ 7 */ '7', /* 36 24 Keyboard 7 and & 8 */ '8', /* 37 25 Keyboard 8 and * 9 */ '9', /* 38 26 Keyboard 9 and ( 10 */ '0', /* 39 27 Keyboard 0 and ) 11 */ 13, /* 40 28 Keyboard Return (ENTER) 43 */ 27, /* 41 29 Keyboard ESCAPE 110 */ 8, /* 42 2A Keyboard DELETE (BS) 15 */ 9, /* 43 2B Keyboard Tab 16 */ ' ', /* 44 2C Keyboard Spacebar 61 */ '-', /* 45 2D Keyboard - and (underscore) 12 */ '=', /* 46 2E Keyboard = and + 13 */ '[', /* 47 2F Keyboard [ and { 27 */ ']', /* 48 30 Keyboard ] and } 28 */ '\\', /* 49 31 Keyboard \ and | 29 */ '\\', /* 50 32 Keyboard \ and | 42 */ ';', /* 51 33 Keyboard ; and : 40 */ 39, /* 52 34 Keyboard ' and " 41 */ 96, /* 53 35 Keyboard Grave Accent and Tilde 1 */ ',', /* 54 36 Keyboard , and < 53 */ '.', /* 55 37 Keyboard . and > 54 */ '/', /* 56 38 Keyboard / and ? 55 */ 0, /* 57 39 Keyboard Caps Lock 30 */ 0, /* 58 3A Keyboard F1 112 */ 0, /* 59 3B Keyboard F2 113 */ 0, /* 60 3C Keyboard F3 114 */ 0, /* 61 3D Keyboard F4 115 */ 0, /* 62 3E Keyboard F5 116 */ 0, /* 63 3F Keyboard F6 117 */ 0, /* 64 40 Keyboard F7 118 */ 0, /* 65 41 Keyboard F8 119 */ 0, /* 66 42 Keyboard F9 120 */ 0, /* 67 43 Keyboard F10 121 */ 0, /* 68 44 Keyboard F11 122 */ 0, /* 69 45 Keyboard F12 123 */ 0, /* 70 46 Keyboard PrintScreen 124 */ 0, /* 71 47 Keyboard Scroll Lock 125 */ 0, /* 72 48 Keyboard Pause 126 */ 0, /* 73 49 Keyboard Insert 75 */ 0, /* 74 4A Keyboard Home 80 */ 0, /* 75 4B Keyboard PageUp 85 */ 0, /* 76 4C Keyboard Delete Forward 76 */ 0, /* 77 4D Keyboard End 81 */ 0, /* 78 4E Keyboard PageDown 86 */ 0, /* 79 4F Keyboard RightArrow 89 */ 0, /* 80 50 Keyboard LeftArrow 79 */ 0, /* 81 51 Keyboard DownArrow 84 */ 0, /* 82 52 Keyboard UpArrow 83 */ 0, /* 83 53 Keypad Num Lock and Clear 90 */ '/', /* 84 54 Keypad / 95 */ '*', /* 85 55 Keypad * 100 */ '-', /* 86 56 Keypad - 105 */ '+', /* 87 57 Keypad + 106 */ 13, /* 88 58 Keypad ENTER 108 */ '1', /* 89 59 Keypad 1 and End 93 */ '2', /* 90 5A Keypad 2 and Down Arrow 98 */ '3', /* 91 5B Keypad 3 and PageDn 103 */ '4', /* 92 5C Keypad 4 and Left Arrow 92 */ '5', /* 93 5D Keypad 5 97 */ '6', /* 94 5E Keypad 6 and Right Arrow 102 */ '7', /* 95 5F Keypad 7 and Home 91 */ '8', /* 96 60 Keypad 8 and Up Arrow 96 */ '9', /* 97 61 Keypad 9 and PageUp 101 */ '0', /* 98 62 Keypad 0 and Insert 99 */ '.', /* 99 63 Keypad . and Delete 104 */ '\\' /* 100 64 Keyboard Non-US \ and | 45 */ }; /***********************************/ /* Keycodes for US Keyboard */ /* - SHIFT-KEY pressed - */ /***********************************/ const uint8_t keycodes_shift_US[] = { 0, /* 0 00 Reserved (no event indicated) */ 0, /* 1 01 Keyboard ErrorRollOver */ 0, /* 2 02 Keyboard POSTFail */ 0, /* 3 03 Keyboard ErrorUndefined */ 'A', /* 4 04 Keyboard a and A 31 */ 'B', /* 5 05 Keyboard b and B 50 */ 'C', /* 6 06 Keyboard c and C 48 */ 'D', /* 7 07 Keyboard d and D 33 */ 'E', /* 8 08 Keyboard e and E 19 */ 'F', /* 9 09 Keyboard f and F 34 */ 'G', /* 10 0A Keyboard g and G 35 */ 'H', /* 11 0B Keyboard h and H 36 */ 'I', /* 12 0C Keyboard i and I 24 */ 'J', /* 13 0D Keyboard j and J 37 */ 'K', /* 14 0E Keyboard k and K 38 */ 'L', /* 15 0F Keyboard l and L 39 */ 'M', /* 16 10 Keyboard m and M 52 */ 'N', /* 17 11 Keyboard n and N 51 */ 'O', /* 18 12 Keyboard o and O 25 */ 'P', /* 19 13 Keyboard p and P 26 */ 'Q', /* 20 14 Keyboard q and Q 17 */ 'R', /* 21 15 Keyboard r and R 20 */ 'S', /* 22 16 Keyboard s and S 32 */ 'T', /* 23 17 Keyboard t and T 21 */ 'U', /* 24 18 Keyboard u and U 23 */ 'V', /* 25 19 Keyboard v and V 49 */ 'W', /* 26 1A Keyboard w and W 18 */ 'X', /* 27 1B Keyboard x and X 47 */ 'Y', /* 28 1C Keyboard y and Y 22 */ 'Z', /* 29 1D Keyboard z and Z 46 */ '!', /* 30 1E Keyboard 1 and ! 2 */ '@', /* 31 1F Keyboard 2 and @ 3 */ '#', /* 32 20 Keyboard 3 and # 4 */ '$', /* 33 21 Keyboard 4 and $ 5 */ '%', /* 34 22 Keyboard 5 and % 6 */ '^', /* 35 23 Keyboard 6 and ^ 7 */ '&', /* 36 24 Keyboard 7 and & 8 */ '*', /* 37 25 Keyboard 8 and * 9 */ '(', /* 38 26 Keyboard 9 and ( 10 */ ')', /* 39 27 Keyboard 0 and ) 11 */ 13, /* 40 28 Keyboard Return (ENTER) 43 */ 27, /* 41 29 Keyboard ESCAPE 110 */ 8, /* 42 2A Keyboard DELETE (BS) 15 */ 9, /* 43 2B Keyboard Tab 16 */ ' ', /* 44 2C Keyboard Spacebar 61 */ '_', /* 45 2D Keyboard - and (underscore) 12 */ '+', /* 46 2E Keyboard = and + 13 */ '{', /* 47 2F Keyboard [ and { 27 */ '}', /* 48 30 Keyboard ] and } 28 */ '|', /* 49 31 Keyboard \ and | 29 */ '|', /* 50 32 Keyboard \ and | 42 */ ':', /* 51 33 Keyboard ; and : 40 */ '"', /* 52 34 Keyboard ' and " 41 */ '~', /* 53 35 Keyboard Grave Accent and Tilde 1 */ '<', /* 54 36 Keyboard , and < 53 */ '>', /* 55 37 Keyboard . and > 54 */ '?', /* 56 38 Keyboard / and ? 55 */ 0, /* 57 39 Keyboard Caps Lock 30 */ 0, /* 58 3A Keyboard F1 112 */ 0, /* 59 3B Keyboard F2 113 */ 0, /* 60 3C Keyboard F3 114 */ 0, /* 61 3D Keyboard F4 115 */ 0, /* 62 3E Keyboard F5 116 */ 0, /* 63 3F Keyboard F6 117 */ 0, /* 64 40 Keyboard F7 118 */ 0, /* 65 41 Keyboard F8 119 */ 0, /* 66 42 Keyboard F9 120 */ 0, /* 67 43 Keyboard F10 121 */ 0, /* 68 44 Keyboard F11 122 */ 0, /* 69 45 Keyboard F12 123 */ 0, /* 70 46 Keyboard PrintScreen 124 */ 0, /* 71 47 Keyboard Scroll Lock 125 */ 0, /* 72 48 Keyboard Pause 126 */ 48, /* 73 49 Keyboard Insert 75 */ 55, /* 74 4A Keyboard Home 80 */ 57, /* 75 4B Keyboard PageUp 85 */ 46, /* 76 4C Keyboard Delete Forward 76 */ 49, /* 77 4D Keyboard End 81 */ 51, /* 78 4E Keyboard PageDown 86 */ 54, /* 79 4F Keyboard RightArrow 89 */ 52, /* 80 50 Keyboard LeftArrow 79 */ 50, /* 81 51 Keyboard DownArrow 84 */ 56, /* 82 52 Keyboard UpArrow 83 */ 0, /* 83 53 Keypad Num Lock and Clear 90 */ '/', /* 84 54 Keypad / 95 */ '*', /* 85 55 Keypad * 100 */ '-', /* 86 56 Keypad - 105 */ '+', /* 87 57 Keypad + 106 */ 13, /* 88 58 Keypad ENTER 108 */ '1', /* 89 59 Keypad 1 and End 93 */ '2', /* 90 5A Keypad 2 and Down Arrow 98 */ '3', /* 91 5B Keypad 3 and PageDn 103 */ '4', /* 92 5C Keypad 4 and Left Arrow 92 */ '5', /* 93 5D Keypad 5 97 */ '6', /* 94 5E Keypad 6 and Right Arrow 102 */ '7', /* 95 5F Keypad 7 and Home 91 */ '8', /* 96 60 Keypad 8 and Up Arrow 96 */ '9', /* 97 61 Keypad 9 and PageUp 101 */ '0', /* 98 62 Keypad 0 and Insert 99 */ '.', /* 99 63 Keypad . and Delete 104 */ '|' /* 100 64 Keyboard Non-US \ and | 45 */ }; /***********************************/ /* Keycodes for 1 byte translation */ /* - CONTROL-KEY pressed - */ /***********************************/ const uint8_t keycodes_alt_GR[] = { 0, /* 0 00 Reserved (no event indicated) */ 0, /* 1 01 Keyboard ErrorRollOver */ 0, /* 2 02 Keyboard POSTFail */ 0, /* 3 03 Keyboard ErrorUndefined */ 0, /* 4 04 Keyboard a and A 31 */ 0, /* 5 05 Keyboard b and B 50 */ 0, /* 6 06 Keyboard c and C 48 */ 0, /* 7 07 Keyboard d and D 33 */ 0, /* 8 08 Keyboard e and E 19 */ 0, /* 9 09 Keyboard f and F 34 */ 0, /* 10 0A Keyboard g and G 35 */ 0, /* 11 0B Keyboard h and H 36 */ 0, /* 12 0C Keyboard i and I 24 */ 0, /* 13 0D Keyboard j and J 37 */ 0, /* 14 0E Keyboard k and K 38 */ 0, /* 15 0F Keyboard l and L 39 */ 0, /* 16 10 Keyboard m and M 52 */ 0, /* 17 11 Keyboard n and N 51 */ 0, /* 18 12 Keyboard o and O 25 */ 0, /* 19 13 Keyboard p and P 26 */ '@', /* 20 14 Keyboard q and Q 17 */ 0, /* 21 15 Keyboard r and R 20 */ 0, /* 22 16 Keyboard s and S 32 */ 0, /* 23 17 Keyboard t and T 21 */ 0, /* 24 18 Keyboard u and U 23 */ 0, /* 25 19 Keyboard v and V 49 */ 0, /* 26 1A Keyboard w and W 18 */ 0, /* 27 1B Keyboard x and X 47 */ 0, /* 28 1C Keyboard y and Y 22 */ 0, /* 29 1D Keyboard z and Z 46 */ 0, /* 30 1E Keyboard 1 and ! 2 */ 0, /* 31 1F Keyboard 2 and @ 3 */ 0, /* 32 20 Keyboard 3 and # 4 */ 0, /* 33 21 Keyboard 4 and $ 5 */ 0, /* 34 22 Keyboard 5 and % 6 */ 0, /* 35 23 Keyboard 6 and ^ 7 */ '{', /* 36 24 Keyboard 7 and & 8 */ '[', /* 37 25 Keyboard 8 and * 9 */ ']', /* 38 26 Keyboard 9 and ( 10 */ '}', /* 39 27 Keyboard 0 and ) 11 */ 0, /* 40 28 Keyboard Return (ENTER) 43 */ 0, /* 41 29 Keyboard ESCAPE 110 */ 0, /* 42 2A Keyboard DELETE (BS) 15 */ 0, /* 43 2B Keyboard Tab 16 */ 0, /* 44 2C Keyboard Spacebar 61 */ '\\', /* 45 2D Keyboard - and (underscore) 12 */ 0, /* 46 2E Keyboard = and + 13 */ 0, /* 47 2F Keyboard [ and { 27 */ '~', /* 48 30 Keyboard ] and } 28 */ 0, /* 49 31 Keyboard \ and | 29 */ 0, /* 50 32 Keyboard Non-US # and ~ 42 */ 0, /* 51 33 Keyboard ; and : 40 */ 0, /* 52 34 Keyboard ' and " 41 */ 0, /* 53 35 Keyboard Grave Accent and Tilde 1 */ 0, /* 54 36 Keyboard , and < 53 */ 0, /* 55 37 Keyboard . and > 54 */ 0, /* 56 38 Keyboard / and ? 55 */ 0, /* 57 39 Keyboard Caps Lock 30 */ 0, /* 58 3A Keyboard F1 112 */ 0, /* 59 3B Keyboard F2 113 */ 0, /* 60 3C Keyboard F3 114 */ 0, /* 61 3D Keyboard F4 115 */ 0, /* 62 3E Keyboard F5 116 */ 0, /* 63 3F Keyboard F6 117 */ 0, /* 64 40 Keyboard F7 118 */ 0, /* 65 41 Keyboard F8 119 */ 0, /* 66 42 Keyboard F9 120 */ 0, /* 67 43 Keyboard F10 121 */ 0, /* 68 44 Keyboard F11 122 */ 0, /* 69 45 Keyboard F12 123 */ 0, /* 70 46 Keyboard PrintScreen 124 */ 0, /* 71 47 Keyboard Scroll Lock 125 */ 0, /* 72 48 Keyboard Pause 126 */ 0, /* 73 49 Keyboard Insert 75 */ 0, /* 74 4A Keyboard Home 80 */ 0, /* 75 4B Keyboard PageUp 85 */ 0, /* 76 4C Keyboard Delete Forward 76 */ 0, /* 77 4D Keyboard End 81 */ 0, /* 78 4E Keyboard PageDown 86 */ 0, /* 79 4F Keyboard RightArrow 89 */ 0, /* 80 50 Keyboard LeftArrow 79 */ 0, /* 81 51 Keyboard DownArrow 84 */ 0, /* 82 52 Keyboard UpArrow 83 */ 0, /* 83 53 Keypad Num Lock and Clear 90 */ 0, /* 84 54 Keypad / 95 */ 0, /* 85 55 Keypad * 100 */ 0, /* 86 56 Keypad - 105 */ 0, /* 87 57 Keypad + 106 */ 0, /* 88 58 Keypad ENTER 108 */ 0, /* 89 59 Keypad 1 and End 93 */ 0, /* 90 5A Keypad 2 and Down Arrow 98 */ 0, /* 91 5B Keypad 3 and PageDn 103 */ 0, /* 92 5C Keypad 4 and Left Arrow 92 */ 0, /* 93 5D Keypad 5 97 */ 0, /* 94 5E Keypad 6 and Right Arrow 102 */ 0, /* 95 5F Keypad 7 and Home 91 */ 0, /* 96 60 Keypad 8 and Up Arrow 96 */ 0, /* 97 61 Keypad 9 and PageUp 101 */ 0, /* 98 62 Keypad 0 and Insert 99 */ 0, /* 99 63 Keypad . and Delete 104 */ '|' /* 100 64 Keyboard Non-US \ and | 45 */ }; /***********************************/ /* Keycodes for 1 byte translation */ /* - CONTROL-KEY pressed - */ /***********************************/ const uint8_t keycodes_ctrl[] = { 0, /* 0 00 Reserved (no event indicated) */ 0, /* 1 01 Keyboard ErrorRollOver */ 0, /* 2 02 Keyboard POSTFail */ 0, /* 3 03 Keyboard ErrorUndefined */ 1, /* 4 04 Keyboard a and A 31 */ 2, /* 5 05 Keyboard b and B 50 */ 3, /* 6 06 Keyboard c and C 48 */ 4, /* 7 07 Keyboard d and D 33 */ 5, /* 8 08 Keyboard e and E 19 */ 6, /* 9 09 Keyboard f and F 34 */ 7, /* 10 0A Keyboard g and G 35 */ 8, /* 11 0B Keyboard h and H 36 */ 9, /* 12 0C Keyboard i and I 24 */ 10, /* 13 0D Keyboard j and J 37 */ 11, /* 14 0E Keyboard k and K 38 */ 12, /* 15 0F Keyboard l and L 39 */ 13, /* 16 10 Keyboard m and M 52 */ 14, /* 17 11 Keyboard n and N 51 */ 15, /* 18 12 Keyboard o and O 25 */ 16, /* 19 13 Keyboard p and P 26 */ 17, /* 20 14 Keyboard q and Q 17 */ 18, /* 21 15 Keyboard r and R 20 */ 19, /* 22 16 Keyboard s and S 32 */ 20, /* 23 17 Keyboard t and T 21 */ 21, /* 24 18 Keyboard u and U 23 */ 22, /* 25 19 Keyboard v and V 49 */ 23, /* 26 1A Keyboard w and W 18 */ 24, /* 27 1B Keyboard x and X 47 */ 25, /* 28 1C Keyboard y and Y 22 */ 26, /* 29 1D Keyboard z and Z 46 */ 0, /* 30 1E Keyboard 1 and ! 2 */ 0, /* 31 1F Keyboard 2 and @ 3 */ 0, /* 32 20 Keyboard 3 and # 4 */ 0, /* 33 21 Keyboard 4 and $ 5 */ 0, /* 34 22 Keyboard 5 and % 6 */ 0, /* 35 23 Keyboard 6 and ^ 7 */ 0, /* 36 24 Keyboard 7 and & 8 */ 0, /* 37 25 Keyboard 8 and * 9 */ 0, /* 38 26 Keyboard 9 and ( 10 */ 0, /* 39 27 Keyboard 0 and ) 11 */ 0, /* 40 28 Keyboard Return (ENTER) 43 */ 0, /* 41 29 Keyboard ESCAPE 110 */ 0, /* 42 2A Keyboard DELETE (BS) 15 */ 0, /* 43 2B Keyboard Tab 16 */ 0, /* 44 2C Keyboard Spacebar 61 */ 0, /* 45 2D Keyboard - and (underscore) 12 */ 0, /* 46 2E Keyboard = and + 13 */ 0, /* 47 2F Keyboard [ and { 27 */ 0, /* 48 30 Keyboard ] and } 28 */ 0, /* 49 31 Keyboard \ and | 29 */ 0, /* 50 32 Keyboard Non-US # and ~ 42 */ 0, /* 51 33 Keyboard ; and : 40 */ 0, /* 52 34 Keyboard ' and " 41 */ 0, /* 53 35 Keyboard Grave Accent and Tilde 1 */ 0, /* 54 36 Keyboard , and < 53 */ 0, /* 55 37 Keyboard . and > 54 */ 0, /* 56 38 Keyboard / and ? 55 */ 0, /* 57 39 Keyboard Caps Lock 30 */ 0, /* 58 3A Keyboard F1 112 */ 0, /* 59 3B Keyboard F2 113 */ 0, /* 60 3C Keyboard F3 114 */ 0, /* 61 3D Keyboard F4 115 */ 0, /* 62 3E Keyboard F5 116 */ 0, /* 63 3F Keyboard F6 117 */ 0, /* 64 40 Keyboard F7 118 */ 0, /* 65 41 Keyboard F8 119 */ 0, /* 66 42 Keyboard F9 120 */ 0, /* 67 43 Keyboard F10 121 */ 0, /* 68 44 Keyboard F11 122 */ 0, /* 69 45 Keyboard F12 123 */ 0, /* 70 46 Keyboard PrintScreen 124 */ 0, /* 71 47 Keyboard Scroll Lock 125 */ 0, /* 72 48 Keyboard Pause 126 */ 0, /* 73 49 Keyboard Insert 75 */ 0, /* 74 4A Keyboard Home 80 */ 0, /* 75 4B Keyboard PageUp 85 */ 0, /* 76 4C Keyboard Delete Forward 76 */ 0, /* 77 4D Keyboard End 81 */ 0, /* 78 4E Keyboard PageDown 86 */ 0, /* 79 4F Keyboard RightArrow 89 */ 0, /* 80 50 Keyboard LeftArrow 79 */ 0, /* 81 51 Keyboard DownArrow 84 */ 0, /* 82 52 Keyboard UpArrow 83 */ 0, /* 83 53 Keypad Num Lock and Clear 90 */ 0, /* 84 54 Keypad / 95 */ 0, /* 85 55 Keypad * 100 */ 0, /* 86 56 Keypad - 105 */ 0, /* 87 57 Keypad + 106 */ 0, /* 88 58 Keypad ENTER 108 */ 0, /* 89 59 Keypad 1 and End 93 */ 0, /* 90 5A Keypad 2 and Down Arrow 98 */ 0, /* 91 5B Keypad 3 and PageDn 103 */ 0, /* 92 5C Keypad 4 and Left Arrow 92 */ 0, /* 93 5D Keypad 5 97 */ 0, /* 94 5E Keypad 6 and Right Arrow 102 */ 0, /* 95 5F Keypad 7 and Home 91 */ 0, /* 96 60 Keypad 8 and Up Arrow 96 */ 0, /* 97 61 Keypad 9 and PageUp 101 */ 0, /* 98 62 Keypad 0 and Insert 99 */ 0, /* 99 63 Keypad . and Delete 104 */ 0 /* 100 64 Keyboard Non-US \ and | 45 */ };