1 /* 2 * PROJECT: ReactOS On-Screen Keyboard 3 * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) 4 * PURPOSE: Keyboard layout data. 5 * COPYRIGHT: Baruch Rutman (peterooch at gmail dot com) 6 * 7 * This is partialy based on the original en-US dialog templates. 8 */ 9 #include "precomp.h" 10 11 KEY EnhancedKeyboardKeys[] = 12 { 13 {L"Esc", SCAN_CODE_110, 4, 4, 28, 28, 0, FALSE}, 14 {L"F1", SCAN_CODE_112, 68, 4, 28, 28, 0, FALSE}, 15 {L"F2", SCAN_CODE_113, 100, 4, 28, 28, 0, FALSE}, 16 {L"F3", SCAN_CODE_114, 132, 4, 28, 28, 0, FALSE}, 17 {L"F4", SCAN_CODE_115, 164, 4, 28, 28, 0, FALSE}, 18 {L"F5", SCAN_CODE_116, 228, 4, 28, 28, 0, FALSE}, 19 {L"F6", SCAN_CODE_117, 260, 4, 28, 28, 0, FALSE}, 20 {L"F7", SCAN_CODE_118, 292, 4, 28, 28, 0, FALSE}, 21 {L"F8", SCAN_CODE_119, 324, 4, 28, 28, 0, FALSE}, 22 {L"F9", SCAN_CODE_120, 388, 4, 28, 28, 0, FALSE}, 23 {L"F10", SCAN_CODE_121, 420, 4, 28, 28, 0, FALSE}, 24 {L"F11", SCAN_CODE_122, 452, 4, 28, 28, 0, FALSE}, 25 {L"F12", SCAN_CODE_123, 484, 4, 28, 28, 0, FALSE}, 26 {L"Prn", SCAN_CODE_124, 516, 4, 28, 28, 0, FALSE}, 27 {L"Stop", SCAN_CODE_125, 548, 4, 28, 28, 0, FALSE}, 28 {L"Attn", SCAN_CODE_126, 580, 4, 28, 28, 0, FALSE}, 29 {L"`", SCAN_CODE_1, 4, 35, 28, 28, 0, TRUE}, 30 {L"1", SCAN_CODE_2, 36, 35, 28, 28, 0, TRUE}, 31 {L"2", SCAN_CODE_3, 68, 35, 28, 28, 0, TRUE}, 32 {L"3", SCAN_CODE_4, 100, 35, 28, 28, 0, TRUE}, 33 {L"4", SCAN_CODE_5, 132, 35, 28, 28, 0, TRUE}, 34 {L"5", SCAN_CODE_6, 164, 35, 28, 28, 0, TRUE}, 35 {L"6", SCAN_CODE_7, 196, 35, 28, 28, 0, TRUE}, 36 {L"7", SCAN_CODE_8, 228, 35, 28, 28, 0, TRUE}, 37 {L"8", SCAN_CODE_9, 260, 35, 28, 28, 0, TRUE}, 38 {L"9", SCAN_CODE_10, 292, 35, 28, 28, 0, TRUE}, 39 {L"0", SCAN_CODE_11, 324, 35, 28, 28, 0, TRUE}, 40 {L"-", SCAN_CODE_12, 356, 35, 28, 28, 0, TRUE}, 41 {L"=", SCAN_CODE_13, 388, 35, 28, 28, 0, TRUE}, 42 {L"<--", SCAN_CODE_15, 420, 35, 92, 28, BS_ICON, FALSE}, 43 {L"Tab", SCAN_CODE_16, 4, 65, 60, 28, BS_ICON, FALSE}, 44 {L"q", SCAN_CODE_17, 67, 65, 28, 28, 0, TRUE}, 45 {L"w", SCAN_CODE_18, 97, 65, 28, 28, 0, TRUE}, 46 {L"e", SCAN_CODE_19, 128, 65, 28, 28, 0, TRUE}, 47 {L"r", SCAN_CODE_20, 158, 65, 28, 28, 0, TRUE}, 48 {L"t", SCAN_CODE_21, 188, 65, 28, 28, 0, TRUE}, 49 {L"y", SCAN_CODE_22, 219, 65, 28, 28, 0, TRUE}, 50 {L"u", SCAN_CODE_23, 249, 65, 28, 28, 0, TRUE}, 51 {L"i", SCAN_CODE_24, 280, 65, 28, 28, 0, TRUE}, 52 {L"o", SCAN_CODE_25, 310, 65, 28, 28, 0, TRUE}, 53 {L"p", SCAN_CODE_26, 340, 65, 28, 28, 0, TRUE}, 54 {L"[", SCAN_CODE_27, 371, 65, 28, 28, 0, TRUE}, 55 {L"]", SCAN_CODE_28, 401, 65, 28, 28, 0, TRUE}, 56 {L"lock", SCAN_CODE_30, 4, 96, 78, 28, BS_ICON, FALSE}, 57 {L"a", SCAN_CODE_31, 84, 96, 28, 28, 0, TRUE}, 58 {L"s", SCAN_CODE_32, 115, 96, 28, 28, 0, TRUE}, 59 {L"d", SCAN_CODE_33, 145, 96, 28, 28, 0, TRUE}, 60 {L"f", SCAN_CODE_34, 176, 96, 28, 28, 0, TRUE}, 61 {L"g", SCAN_CODE_35, 206, 96, 28, 28, 0, TRUE}, 62 {L"h", SCAN_CODE_36, 236, 96, 28, 28, 0, TRUE}, 63 {L"j", SCAN_CODE_37, 267, 96, 28, 28, 0, TRUE}, 64 {L"k", SCAN_CODE_38, 297, 96, 28, 28, 0, TRUE}, 65 {L"l", SCAN_CODE_39, 328, 96, 28, 28, 0, TRUE}, 66 {L";", SCAN_CODE_40, 358, 96, 28, 28, 0, TRUE}, 67 {L"'", SCAN_CODE_41, 388, 96, 28, 28, 0, TRUE}, 68 {L"\\", SCAN_CODE_29, 432, 65, 80, 28, 0, TRUE}, 69 {L"ret", SCAN_CODE_43, 419, 96, 93, 28, BS_ICON, FALSE}, 70 {L"shift", SCAN_CODE_44, 4, 126, 95, 28, BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE}, 71 {L"z", SCAN_CODE_46, 102, 126, 28, 28, 0, TRUE}, 72 {L"x", SCAN_CODE_47, 132, 126, 28, 28, 0, TRUE}, 73 {L"c", SCAN_CODE_48, 163, 126, 28, 28, 0, TRUE}, 74 {L"v", SCAN_CODE_49, 193, 126, 28, 28, 0, TRUE}, 75 {L"b", SCAN_CODE_50, 224, 126, 28, 28, 0, TRUE}, 76 {L"n", SCAN_CODE_51, 254, 126, 28, 28, 0, TRUE}, 77 {L"m", SCAN_CODE_52, 284, 126, 28, 28, 0, TRUE}, 78 {L",", SCAN_CODE_53, 315, 126, 28, 28, 0, TRUE}, 79 {L".", SCAN_CODE_54, 345, 126, 28, 28, 0, TRUE}, 80 {L"/", SCAN_CODE_55, 376, 126, 28, 28, 0, TRUE}, 81 {L"shift", SCAN_CODE_57, 406, 126, 106, 28, BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE}, 82 {L"ctrl", SCAN_CODE_58, 4, 156, 43, 28, BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE}, 83 {L"v", SCAN_CODE_84, 548, 156, 28, 28, BS_ICON, FALSE}, 84 {L"ROS", SCAN_CODE_127, 48, 156, 43, 28, BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE}, 85 {L"alt", SCAN_CODE_60, 91, 156, 43, 28, BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE}, 86 {L"", SCAN_CODE_61, 134, 156, 204, 28, 0, FALSE}, 87 {L"alt", SCAN_CODE_62, 340, 156, 43, 28, BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE}, 88 {L"ROS", SCAN_CODE_128, 384, 156, 43, 28, BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE}, 89 {L"menu", SCAN_CODE_129, 427, 156, 43, 28, BS_ICON, FALSE}, 90 {L"ctrl", SCAN_CODE_64, 470, 156, 42, 28, BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE}, 91 {L"ins", SCAN_CODE_75, 516, 35, 28, 28, 0, FALSE}, 92 {L"del", SCAN_CODE_76, 516, 65, 28, 28, 0, FALSE}, 93 {L"hm", SCAN_CODE_80, 548, 35, 28, 28, BS_ICON, FALSE}, 94 {L"end", SCAN_CODE_81, 548, 65, 28, 28, 0, FALSE}, 95 {L"pup", SCAN_CODE_85, 580, 35, 28, 28, BS_ICON, FALSE}, 96 {L"pdn", SCAN_CODE_86, 580, 65, 28, 28, BS_ICON, FALSE}, 97 {L"<-", SCAN_CODE_79, 516, 156, 28, 28, BS_ICON, FALSE}, 98 {L"^", SCAN_CODE_83, 548, 126, 28, 28, BS_ICON, FALSE}, 99 {L"->", SCAN_CODE_89, 580, 156, 28, 28, BS_ICON, FALSE}, 100 {L"nlk", SCAN_CODE_90, 612, 35, 28, 28, 0, FALSE}, 101 {L"7", SCAN_CODE_91, 612, 65, 28, 28, 0, FALSE}, 102 {L"4", SCAN_CODE_92, 612, 96, 28, 28, 0, FALSE}, 103 {L"1", SCAN_CODE_93, 612, 126, 28, 28, 0, FALSE}, 104 {L"/", SCAN_CODE_95, 644, 35, 28, 28, 0, FALSE}, 105 {L"8", SCAN_CODE_96, 644, 65, 28, 28, 0, FALSE}, 106 {L"5", SCAN_CODE_97, 644, 96, 28, 28, 0, FALSE}, 107 {L"2", SCAN_CODE_98, 644, 126, 28, 28, 0, FALSE}, 108 {L"0", SCAN_CODE_99, 612, 156, 60, 28, 0, FALSE}, 109 {L"*", SCAN_CODE_100, 676, 35, 28, 28, 0, FALSE}, 110 {L"9", SCAN_CODE_101, 676, 65, 28, 28, 0, FALSE}, 111 {L"6", SCAN_CODE_102, 676, 96, 28, 28, 0, FALSE}, 112 {L"3", SCAN_CODE_103, 676, 126, 28, 28, 0, FALSE}, 113 {L".", SCAN_CODE_104, 676, 156, 28, 28, 0, FALSE}, 114 {L"-", SCAN_CODE_105, 708, 35, 28, 28, 0, FALSE}, 115 {L"+", SCAN_CODE_106, 708, 65, 28, 59, 0, FALSE}, 116 {L"ent", SCAN_CODE_108, 708, 126, 28, 58, 0, FALSE}, 117 }; 118 119 KEY StandardKeyboardKeys[] = 120 { 121 {L"Esc", SCAN_CODE_110, 4, 4, 28, 28, 0, FALSE}, 122 {L"F1", SCAN_CODE_112, 68, 4, 28, 28, 0, FALSE}, 123 {L"F2", SCAN_CODE_113, 100, 4, 28, 28, 0, FALSE}, 124 {L"F3", SCAN_CODE_114, 132, 4, 28, 28, 0, FALSE}, 125 {L"F4", SCAN_CODE_115, 164, 4, 28, 28, 0, FALSE}, 126 {L"F5", SCAN_CODE_116, 196, 4, 28, 28, 0, FALSE}, 127 {L"F6", SCAN_CODE_117, 228, 4, 28, 28, 0, FALSE}, 128 {L"F7", SCAN_CODE_118, 292, 4, 28, 28, 0, FALSE}, 129 {L"F8", SCAN_CODE_119, 324, 4, 28, 28, 0, FALSE}, 130 {L"F9", SCAN_CODE_120, 356, 4, 28, 28, 0, FALSE}, 131 {L"F10", SCAN_CODE_121, 388, 4, 28, 28, 0, FALSE}, 132 {L"F11", SCAN_CODE_122, 420, 4, 28, 28, 0, FALSE}, 133 {L"F12", SCAN_CODE_123, 452, 4, 28, 28, 0, FALSE}, 134 {L"Prn", SCAN_CODE_124, 486, 4, 28, 28, 0, FALSE}, 135 {L"Stop", SCAN_CODE_125, 518, 4, 28, 28, 0, FALSE}, 136 {L"Attn", SCAN_CODE_126, 550, 4, 28, 28, 0, FALSE}, 137 {L"`", SCAN_CODE_1, 4, 35, 28, 28, 0, TRUE}, 138 {L"1", SCAN_CODE_2, 36, 35, 28, 28, 0, TRUE}, 139 {L"2", SCAN_CODE_3, 68, 35, 28, 28, 0, TRUE}, 140 {L"3", SCAN_CODE_4, 100, 35, 28, 28, 0, TRUE}, 141 {L"4", SCAN_CODE_5, 132, 35, 28, 28, 0, TRUE}, 142 {L"5", SCAN_CODE_6, 164, 35, 28, 28, 0, TRUE}, 143 {L"6", SCAN_CODE_7, 196, 35, 28, 28, 0, TRUE}, 144 {L"7", SCAN_CODE_8, 228, 35, 28, 28, 0, TRUE}, 145 {L"8", SCAN_CODE_9, 260, 35, 28, 28, 0, TRUE}, 146 {L"9", SCAN_CODE_10, 292, 35, 28, 28, 0, TRUE}, 147 {L"0", SCAN_CODE_11, 324, 35, 28, 28, 0, TRUE}, 148 {L"-", SCAN_CODE_12, 356, 35, 28, 28, 0, TRUE}, 149 {L"=", SCAN_CODE_13, 388, 35, 28, 28, 0, TRUE}, 150 {L"<--", SCAN_CODE_15, 420, 35, 63, 28, BS_ICON, FALSE}, 151 {L"Tab", SCAN_CODE_16, 4, 65, 60, 28, BS_ICON, FALSE}, 152 {L"q", SCAN_CODE_17, 67, 65, 28, 28, 0, TRUE}, 153 {L"w", SCAN_CODE_18, 97, 65, 28, 28, 0, TRUE}, 154 {L"e", SCAN_CODE_19, 128, 65, 28, 28, 0, TRUE}, 155 {L"r", SCAN_CODE_20, 158, 65, 28, 28, 0, TRUE}, 156 {L"t", SCAN_CODE_21, 188, 65, 28, 28, 0, TRUE}, 157 {L"y", SCAN_CODE_22, 219, 65, 28, 28, 0, TRUE}, 158 {L"u", SCAN_CODE_23, 249, 65, 28, 28, 0, TRUE}, 159 {L"i", SCAN_CODE_24, 280, 65, 28, 28, 0, TRUE}, 160 {L"o", SCAN_CODE_25, 310, 65, 28, 28, 0, TRUE}, 161 {L"p", SCAN_CODE_26, 340, 65, 28, 28, 0, TRUE}, 162 {L"[", SCAN_CODE_27, 371, 65, 28, 28, 0, TRUE}, 163 {L"]", SCAN_CODE_28, 401, 65, 28, 28, 0, TRUE}, 164 {L"lock", SCAN_CODE_30, 4, 96, 78, 28, BS_ICON, FALSE}, 165 {L"a", SCAN_CODE_31, 84, 96, 28, 28, 0, TRUE}, 166 {L"s", SCAN_CODE_32, 115, 96, 28, 28, 0, TRUE}, 167 {L"d", SCAN_CODE_33, 145, 96, 28, 28, 0, TRUE}, 168 {L"f", SCAN_CODE_34, 176, 96, 28, 28, 0, TRUE}, 169 {L"g", SCAN_CODE_35, 206, 96, 28, 28, 0, TRUE}, 170 {L"h", SCAN_CODE_36, 236, 96, 28, 28, 0, TRUE}, 171 {L"j", SCAN_CODE_37, 267, 96, 28, 28, 0, TRUE}, 172 {L"k", SCAN_CODE_38, 297, 96, 28, 28, 0, TRUE}, 173 {L"l", SCAN_CODE_39, 328, 96, 28, 28, 0, TRUE}, 174 {L";", SCAN_CODE_40, 358, 96, 28, 28, 0, TRUE}, 175 {L"'", SCAN_CODE_41, 388, 96, 28, 28, 0, TRUE}, 176 {L"\\", SCAN_CODE_29, 432, 65, 51, 28, 0, TRUE}, 177 {L"ret", SCAN_CODE_43, 419, 96, 64, 28, BS_ICON, FALSE}, 178 {L"shift", SCAN_CODE_44, 4, 126, 96, 28, BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE}, 179 {L"z", SCAN_CODE_46, 102, 126, 28, 28, 0, TRUE}, 180 {L"x", SCAN_CODE_47, 132, 126, 28, 28, 0, TRUE}, 181 {L"c", SCAN_CODE_48, 163, 126, 28, 28, 0, TRUE}, 182 {L"v", SCAN_CODE_49, 193, 126, 28, 28, 0, TRUE}, 183 {L"b", SCAN_CODE_50, 224, 126, 28, 28, 0, TRUE}, 184 {L"n", SCAN_CODE_51, 254, 126, 28, 28, 0, TRUE}, 185 {L"m", SCAN_CODE_52, 284, 126, 28, 28, 0, TRUE}, 186 {L",", SCAN_CODE_53, 315, 126, 28, 28, 0, TRUE}, 187 {L".", SCAN_CODE_54, 345, 126, 28, 28, 0, TRUE}, 188 {L"/", SCAN_CODE_55, 376, 126, 28, 28, 0, TRUE}, 189 {L"shift", SCAN_CODE_57, 406, 126, 77, 28, BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE}, 190 {L"ctrl", SCAN_CODE_58, 4, 156, 43, 28, BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE}, 191 {L"v", SCAN_CODE_84, 518, 156, 28, 28, BS_ICON, FALSE}, 192 {L"ROS", SCAN_CODE_127, 48, 156, 43, 28, BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE}, 193 {L"alt", SCAN_CODE_60, 91, 156, 43, 28, BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE}, 194 {L"", SCAN_CODE_61, 134, 156, 174, 28, 0, FALSE}, 195 {L"alt", SCAN_CODE_62, 310, 156, 43, 28, BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE}, 196 {L"ROS", SCAN_CODE_128, 353, 156, 43, 28, BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE}, 197 {L"menu", SCAN_CODE_129, 396, 156, 43, 28, BS_ICON, FALSE}, 198 {L"ctrl", SCAN_CODE_64, 440, 156, 43, 28, BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE}, 199 {L"ins", SCAN_CODE_75, 486, 35, 28, 28, 0, FALSE}, 200 {L"del", SCAN_CODE_76, 486, 65, 28, 28, 0, FALSE}, 201 {L"hm", SCAN_CODE_80, 518, 35, 28, 28, BS_ICON, FALSE}, 202 {L"end", SCAN_CODE_81, 518, 65, 28, 28, 0, FALSE}, 203 {L"pup", SCAN_CODE_85, 550, 35, 28, 28, BS_ICON, FALSE}, 204 {L"pdn", SCAN_CODE_86, 550, 65, 28, 28, BS_ICON, FALSE}, 205 {L"<-", SCAN_CODE_79, 486, 156, 28, 28, BS_ICON, FALSE}, 206 {L"^", SCAN_CODE_83, 518, 126, 28, 28, BS_ICON, FALSE}, 207 {L"->", SCAN_CODE_89, 550, 156, 28, 28, BS_ICON, FALSE}, 208 {L"nlk", SCAN_CODE_90, 582, 35, 28, 28, 0, FALSE}, 209 {L"7", SCAN_CODE_91, 582, 65, 28, 28, 0, FALSE}, 210 {L"4", SCAN_CODE_92, 582, 96, 28, 28, 0, FALSE}, 211 {L"1", SCAN_CODE_93, 582, 126, 28, 28, 0, FALSE}, 212 {L"/", SCAN_CODE_95, 614, 35, 28, 28, 0, FALSE}, 213 {L"8", SCAN_CODE_96, 614, 65, 28, 28, 0, FALSE}, 214 {L"5", SCAN_CODE_97, 614, 96, 28, 28, 0, FALSE}, 215 {L"2", SCAN_CODE_98, 614, 126, 28, 28, 0, FALSE}, 216 {L"0", SCAN_CODE_99, 582, 156, 60, 28, 0, FALSE}, 217 {L"*", SCAN_CODE_100, 646, 35, 28, 28, 0, FALSE}, 218 {L"9", SCAN_CODE_101, 646, 65, 28, 28, 0, FALSE}, 219 {L"6", SCAN_CODE_102, 646, 96, 28, 28, 0, FALSE}, 220 {L"3", SCAN_CODE_103, 646, 126, 28, 28, 0, FALSE}, 221 {L".", SCAN_CODE_104, 646, 156, 28, 28, 0, FALSE}, 222 {L"-", SCAN_CODE_105, 678, 35, 28, 28, 0, FALSE}, 223 {L"+", SCAN_CODE_106, 678, 65, 28, 59, 0, FALSE}, 224 {L"ent", SCAN_CODE_108, 678, 126, 28, 58, 0, FALSE}, 225 }; 226 227 KEYBOARD_STRUCT EnhancedKeyboard = 228 { 229 EnhancedKeyboardKeys, 230 _countof(EnhancedKeyboardKeys), 231 { 746, 193 }, 232 { 620, 6 }, 233 { 40, 15 }, 234 40, 235 { 628, 25 }, 236 { 7, 5 }, 237 40 238 }; 239 240 KEYBOARD_STRUCT StandardKeyboard = 241 { 242 StandardKeyboardKeys, 243 _countof(StandardKeyboardKeys), 244 { 586, 193 }, 245 { 588, 6 }, 246 { 40, 15 }, 247 40, 248 { 596, 25 }, 249 { 7, 5 }, 250 40 251 }; 252