1 /* 2 * PROJECT: ReactOS api tests 3 * LICENSE: GPL - See COPYING in the top level directory 4 * PURPOSE: Test for NtUserToUnicodeEx 5 * PROGRAMMERS: 6 */ 7 8 #include <win32nt.h> 9 10 START_TEST(NtUserToUnicodeEx) 11 { 12 BYTE KeyState[256] = {0}; 13 WCHAR Buffer[10]; 14 HKL hkl = LoadKeyboardLayoutW(L"00000409", KLF_NOTELLSHELL); 15 16 TEST(NtUserToUnicodeEx(27, 1, KeyState, Buffer, 10, 0, 0) == 1); 17 18 /* Test with no key pressed */ 19 ZeroMemory(KeyState, 256); 20 TEST(NtUserToUnicodeEx(27, 1, KeyState, Buffer, 10, 0, hkl) == 1); 21 TEST(Buffer[0] == 27); 22 TEST(NtUserToUnicodeEx(49, 2, KeyState, Buffer, 10, 0, hkl) == 1); 23 TEST(Buffer[0] == '1'); 24 TEST(NtUserToUnicodeEx(50, 3, KeyState, Buffer, 10, 0, hkl) == 1); 25 TEST(Buffer[0] == '2'); 26 TEST(NtUserToUnicodeEx(51, 4, KeyState, Buffer, 10, 0, hkl) == 1); 27 TEST(Buffer[0] == '3'); 28 TEST(NtUserToUnicodeEx(52, 5, KeyState, Buffer, 10, 0, hkl) == 1); 29 TEST(Buffer[0] == '4'); 30 TEST(NtUserToUnicodeEx(53, 6, KeyState, Buffer, 10, 0, hkl) == 1); 31 TEST(Buffer[0] == '5'); 32 TEST(NtUserToUnicodeEx(54, 7, KeyState, Buffer, 10, 0, hkl) == 1); 33 TEST(Buffer[0] == '6'); 34 TEST(NtUserToUnicodeEx(55, 8, KeyState, Buffer, 10, 0, hkl) == 1); 35 TEST(Buffer[0] == '7'); 36 TEST(NtUserToUnicodeEx(56, 9, KeyState, Buffer, 10, 0, hkl) == 1); 37 TEST(Buffer[0] == '8'); 38 TEST(NtUserToUnicodeEx(57, 10, KeyState, Buffer, 10, 0, hkl) == 1); 39 TEST(Buffer[0] == '9'); 40 TEST(NtUserToUnicodeEx(48, 11, KeyState, Buffer, 10, 0, hkl) == 1); 41 TEST(Buffer[0] == '0'); 42 TEST(NtUserToUnicodeEx(189, 12, KeyState, Buffer, 10, 0, hkl) == 1); 43 TEST(Buffer[0] == '-'); 44 TEST(NtUserToUnicodeEx(187, 13, KeyState, Buffer, 10, 0, hkl) == 1); 45 TEST(Buffer[0] == '='); 46 TEST(NtUserToUnicodeEx(8, 14, KeyState, Buffer, 10, 0, hkl) == 1); 47 TEST(Buffer[0] == 8); 48 TEST(NtUserToUnicodeEx(9, 15, KeyState, Buffer, 10, 0, hkl) == 1); 49 TEST(Buffer[0] == 9); 50 TEST(NtUserToUnicodeEx(81, 16, KeyState, Buffer, 10, 0, hkl) == 1); 51 TEST(Buffer[0] == 'q'); 52 TEST(NtUserToUnicodeEx(87, 17, KeyState, Buffer, 10, 0, hkl) == 1); 53 TEST(Buffer[0] == 'w'); 54 TEST(NtUserToUnicodeEx(69, 18, KeyState, Buffer, 10, 0, hkl) == 1); 55 TEST(Buffer[0] == 'e'); 56 TEST(NtUserToUnicodeEx(82, 19, KeyState, Buffer, 10, 0, hkl) == 1); 57 TEST(Buffer[0] == 'r'); 58 TEST(NtUserToUnicodeEx(84, 20, KeyState, Buffer, 10, 0, hkl) == 1); 59 TEST(Buffer[0] == 't'); 60 TEST(NtUserToUnicodeEx(89, 21, KeyState, Buffer, 10, 0, hkl) == 1); 61 TEST(Buffer[0] == 'y'); 62 TEST(NtUserToUnicodeEx(85, 22, KeyState, Buffer, 10, 0, hkl) == 1); 63 TEST(Buffer[0] == 'u'); 64 TEST(NtUserToUnicodeEx(73, 23, KeyState, Buffer, 10, 0, hkl) == 1); 65 TEST(Buffer[0] == 'i'); 66 TEST(NtUserToUnicodeEx(79, 24, KeyState, Buffer, 10, 0, hkl) == 1); 67 TEST(Buffer[0] == 'o'); 68 TEST(NtUserToUnicodeEx(80, 25, KeyState, Buffer, 10, 0, hkl) == 1); 69 TEST(Buffer[0] == 'p'); 70 TEST(NtUserToUnicodeEx(219, 26, KeyState, Buffer, 10, 0, hkl) == 1); 71 TEST(Buffer[0] == '['); 72 TEST(NtUserToUnicodeEx(221, 27, KeyState, Buffer, 10, 0, hkl) == 1); 73 TEST(Buffer[0] == ']'); 74 TEST(NtUserToUnicodeEx(13, 28, KeyState, Buffer, 10, 0, hkl) == 1); 75 TEST(Buffer[0] == 13); 76 TEST(NtUserToUnicodeEx(65, 30, KeyState, Buffer, 10, 0, hkl) == 1); 77 TEST(Buffer[0] == 'a'); 78 TEST(NtUserToUnicodeEx(83, 31, KeyState, Buffer, 10, 0, hkl) == 1); 79 TEST(Buffer[0] == 's'); 80 TEST(NtUserToUnicodeEx(68, 32, KeyState, Buffer, 10, 0, hkl) == 1); 81 TEST(Buffer[0] == 'd'); 82 TEST(NtUserToUnicodeEx(70, 33, KeyState, Buffer, 10, 0, hkl) == 1); 83 TEST(Buffer[0] == 'f'); 84 TEST(NtUserToUnicodeEx(71, 34, KeyState, Buffer, 10, 0, hkl) == 1); 85 TEST(Buffer[0] == 'g'); 86 TEST(NtUserToUnicodeEx(72, 35, KeyState, Buffer, 10, 0, hkl) == 1); 87 TEST(Buffer[0] == 'h'); 88 TEST(NtUserToUnicodeEx(74, 36, KeyState, Buffer, 10, 0, hkl) == 1); 89 TEST(Buffer[0] == 'j'); 90 TEST(NtUserToUnicodeEx(75, 37, KeyState, Buffer, 10, 0, hkl) == 1); 91 TEST(Buffer[0] == 'k'); 92 TEST(NtUserToUnicodeEx(76, 38, KeyState, Buffer, 10, 0, hkl) == 1); 93 TEST(Buffer[0] == 'l'); 94 TEST(NtUserToUnicodeEx(186, 39, KeyState, Buffer, 10, 0, hkl) == 1); 95 TEST(Buffer[0] == ';'); 96 TEST(NtUserToUnicodeEx(222, 40, KeyState, Buffer, 10, 0, hkl) == 1); 97 TEST(Buffer[0] == '\''); 98 TEST(NtUserToUnicodeEx(192, 41, KeyState, Buffer, 10, 0, hkl) == 1); 99 TEST(Buffer[0] == '`'); 100 TEST(NtUserToUnicodeEx(220, 43, KeyState, Buffer, 10, 0, hkl) == 1); 101 TEST(Buffer[0] == '\\'); 102 TEST(NtUserToUnicodeEx(90, 44, KeyState, Buffer, 10, 0, hkl) == 1); 103 TEST(Buffer[0] == 'z'); 104 TEST(NtUserToUnicodeEx(88, 45, KeyState, Buffer, 10, 0, hkl) == 1); 105 TEST(Buffer[0] == 'x'); 106 TEST(NtUserToUnicodeEx(67, 46, KeyState, Buffer, 10, 0, hkl) == 1); 107 TEST(Buffer[0] == 'c'); 108 TEST(NtUserToUnicodeEx(86, 47, KeyState, Buffer, 10, 0, hkl) == 1); 109 TEST(Buffer[0] == 'v'); 110 TEST(NtUserToUnicodeEx(66, 48, KeyState, Buffer, 10, 0, hkl) == 1); 111 TEST(Buffer[0] == 'b'); 112 TEST(NtUserToUnicodeEx(78, 49, KeyState, Buffer, 10, 0, hkl) == 1); 113 TEST(Buffer[0] == 'n'); 114 TEST(NtUserToUnicodeEx(77, 50, KeyState, Buffer, 10, 0, hkl) == 1); 115 TEST(Buffer[0] == 'm'); 116 TEST(NtUserToUnicodeEx(188, 51, KeyState, Buffer, 10, 0, hkl) == 1); 117 TEST(Buffer[0] == ','); 118 TEST(NtUserToUnicodeEx(190, 52, KeyState, Buffer, 10, 0, hkl) == 1); 119 TEST(Buffer[0] == '.'); 120 TEST(NtUserToUnicodeEx(191, 53, KeyState, Buffer, 10, 0, hkl) == 1); 121 TEST(Buffer[0] == '/'); 122 TEST(NtUserToUnicodeEx(106, 55, KeyState, Buffer, 10, 0, hkl) == 1); 123 TEST(Buffer[0] == '*'); 124 TEST(NtUserToUnicodeEx(32, 57, KeyState, Buffer, 10, 0, hkl) == 1); 125 TEST(Buffer[0] == ' '); 126 TEST(NtUserToUnicodeEx(109, 74, KeyState, Buffer, 10, 0, hkl) == 1); 127 TEST(Buffer[0] == '-'); 128 TEST(NtUserToUnicodeEx(107, 78, KeyState, Buffer, 10, 0, hkl) == 1); 129 TEST(Buffer[0] == '+'); 130 TEST(NtUserToUnicodeEx(226, 86, KeyState, Buffer, 10, 0, hkl) == 1); 131 TEST(Buffer[0] == '\\'); 132 TEST(NtUserToUnicodeEx(9, 124, KeyState, Buffer, 10, 0, hkl) == 1); 133 TEST(Buffer[0] == 9); 134 135 /* Test with shift key pressed */ 136 ZeroMemory(KeyState, 256); 137 KeyState[VK_SHIFT] = 0xff; 138 TEST(NtUserToUnicodeEx(27, 1, KeyState, Buffer, 10, 0, hkl) == 1); 139 TEST(Buffer[0] == 27); 140 TEST(NtUserToUnicodeEx(49, 2, KeyState, Buffer, 10, 0, hkl) == 1); 141 TEST(Buffer[0] == '!'); 142 TEST(NtUserToUnicodeEx(50, 3, KeyState, Buffer, 10, 0, hkl) == 1); 143 TEST(Buffer[0] == '@'); 144 TEST(NtUserToUnicodeEx(51, 4, KeyState, Buffer, 10, 0, hkl) == 1); 145 TEST(Buffer[0] == '#'); 146 TEST(NtUserToUnicodeEx(52, 5, KeyState, Buffer, 10, 0, hkl) == 1); 147 TEST(Buffer[0] == '$'); 148 TEST(NtUserToUnicodeEx(53, 6, KeyState, Buffer, 10, 0, hkl) == 1); 149 TEST(Buffer[0] == '%'); 150 TEST(NtUserToUnicodeEx(54, 7, KeyState, Buffer, 10, 0, hkl) == 1); 151 TEST(Buffer[0] == '^'); 152 TEST(NtUserToUnicodeEx(55, 8, KeyState, Buffer, 10, 0, hkl) == 1); 153 TEST(Buffer[0] == '&'); 154 TEST(NtUserToUnicodeEx(56, 9, KeyState, Buffer, 10, 0, hkl) == 1); 155 TEST(Buffer[0] == '*'); 156 TEST(NtUserToUnicodeEx(57, 10, KeyState, Buffer, 10, 0, hkl) == 1); 157 TEST(Buffer[0] == '('); 158 TEST(NtUserToUnicodeEx(48, 11, KeyState, Buffer, 10, 0, hkl) == 1); 159 TEST(Buffer[0] == ')'); 160 TEST(NtUserToUnicodeEx(189, 12, KeyState, Buffer, 10, 0, hkl) == 1); 161 TEST(Buffer[0] == '_'); 162 TEST(NtUserToUnicodeEx(187, 13, KeyState, Buffer, 10, 0, hkl) == 1); 163 TEST(Buffer[0] == '+'); 164 TEST(NtUserToUnicodeEx(8, 14, KeyState, Buffer, 10, 0, hkl) == 1); 165 TEST(Buffer[0] == 8); 166 TEST(NtUserToUnicodeEx(9, 15, KeyState, Buffer, 10, 0, hkl) == 1); 167 TEST(Buffer[0] == 9); 168 TEST(NtUserToUnicodeEx(81, 16, KeyState, Buffer, 10, 0, hkl) == 1); 169 TEST(Buffer[0] == 'Q'); 170 TEST(NtUserToUnicodeEx(87, 17, KeyState, Buffer, 10, 0, hkl) == 1); 171 TEST(Buffer[0] == 'W'); 172 TEST(NtUserToUnicodeEx(69, 18, KeyState, Buffer, 10, 0, hkl) == 1); 173 TEST(Buffer[0] == 'E'); 174 TEST(NtUserToUnicodeEx(82, 19, KeyState, Buffer, 10, 0, hkl) == 1); 175 TEST(Buffer[0] == 'R'); 176 TEST(NtUserToUnicodeEx(84, 20, KeyState, Buffer, 10, 0, hkl) == 1); 177 TEST(Buffer[0] == 'T'); 178 TEST(NtUserToUnicodeEx(89, 21, KeyState, Buffer, 10, 0, hkl) == 1); 179 TEST(Buffer[0] == 'Y'); 180 TEST(NtUserToUnicodeEx(85, 22, KeyState, Buffer, 10, 0, hkl) == 1); 181 TEST(Buffer[0] == 'U'); 182 TEST(NtUserToUnicodeEx(73, 23, KeyState, Buffer, 10, 0, hkl) == 1); 183 TEST(Buffer[0] == 'I'); 184 TEST(NtUserToUnicodeEx(79, 24, KeyState, Buffer, 10, 0, hkl) == 1); 185 TEST(Buffer[0] == 'O'); 186 TEST(NtUserToUnicodeEx(80, 25, KeyState, Buffer, 10, 0, hkl) == 1); 187 TEST(Buffer[0] == 'P'); 188 TEST(NtUserToUnicodeEx(219, 26, KeyState, Buffer, 10, 0, hkl) == 1); 189 TEST(Buffer[0] == '{'); 190 TEST(NtUserToUnicodeEx(221, 27, KeyState, Buffer, 10, 0, hkl) == 1); 191 TEST(Buffer[0] == '}'); 192 TEST(NtUserToUnicodeEx(13, 28, KeyState, Buffer, 10, 0, hkl) == 1); 193 TEST(Buffer[0] == 13); 194 TEST(NtUserToUnicodeEx(65, 30, KeyState, Buffer, 10, 0, hkl) == 1); 195 TEST(Buffer[0] == 'A'); 196 TEST(NtUserToUnicodeEx(83, 31, KeyState, Buffer, 10, 0, hkl) == 1); 197 TEST(Buffer[0] == 'S'); 198 TEST(NtUserToUnicodeEx(68, 32, KeyState, Buffer, 10, 0, hkl) == 1); 199 TEST(Buffer[0] == 'D'); 200 TEST(NtUserToUnicodeEx(70, 33, KeyState, Buffer, 10, 0, hkl) == 1); 201 TEST(Buffer[0] == 'F'); 202 TEST(NtUserToUnicodeEx(71, 34, KeyState, Buffer, 10, 0, hkl) == 1); 203 TEST(Buffer[0] == 'G'); 204 TEST(NtUserToUnicodeEx(72, 35, KeyState, Buffer, 10, 0, hkl) == 1); 205 TEST(Buffer[0] == 'H'); 206 TEST(NtUserToUnicodeEx(74, 36, KeyState, Buffer, 10, 0, hkl) == 1); 207 TEST(Buffer[0] == 'J'); 208 TEST(NtUserToUnicodeEx(75, 37, KeyState, Buffer, 10, 0, hkl) == 1); 209 TEST(Buffer[0] == 'K'); 210 TEST(NtUserToUnicodeEx(76, 38, KeyState, Buffer, 10, 0, hkl) == 1); 211 TEST(Buffer[0] == 'L'); 212 TEST(NtUserToUnicodeEx(186, 39, KeyState, Buffer, 10, 0, hkl) == 1); 213 TEST(Buffer[0] == ':'); 214 TEST(NtUserToUnicodeEx(222, 40, KeyState, Buffer, 10, 0, hkl) == 1); 215 TEST(Buffer[0] == '"'); 216 TEST(NtUserToUnicodeEx(192, 41, KeyState, Buffer, 10, 0, hkl) == 1); 217 TEST(Buffer[0] == '~'); 218 TEST(NtUserToUnicodeEx(220, 43, KeyState, Buffer, 10, 0, hkl) == 1); 219 TEST(Buffer[0] == '|'); 220 TEST(NtUserToUnicodeEx(90, 44, KeyState, Buffer, 10, 0, hkl) == 1); 221 TEST(Buffer[0] == 'Z'); 222 TEST(NtUserToUnicodeEx(88, 45, KeyState, Buffer, 10, 0, hkl) == 1); 223 TEST(Buffer[0] == 'X'); 224 TEST(NtUserToUnicodeEx(67, 46, KeyState, Buffer, 10, 0, hkl) == 1); 225 TEST(Buffer[0] == 'C'); 226 TEST(NtUserToUnicodeEx(86, 47, KeyState, Buffer, 10, 0, hkl) == 1); 227 TEST(Buffer[0] == 'V'); 228 TEST(NtUserToUnicodeEx(66, 48, KeyState, Buffer, 10, 0, hkl) == 1); 229 TEST(Buffer[0] == 'B'); 230 TEST(NtUserToUnicodeEx(78, 49, KeyState, Buffer, 10, 0, hkl) == 1); 231 TEST(Buffer[0] == 'N'); 232 TEST(NtUserToUnicodeEx(77, 50, KeyState, Buffer, 10, 0, hkl) == 1); 233 TEST(Buffer[0] == 'M'); 234 TEST(NtUserToUnicodeEx(188, 51, KeyState, Buffer, 10, 0, hkl) == 1); 235 TEST(Buffer[0] == '<'); 236 TEST(NtUserToUnicodeEx(190, 52, KeyState, Buffer, 10, 0, hkl) == 1); 237 TEST(Buffer[0] == '>'); 238 TEST(NtUserToUnicodeEx(191, 53, KeyState, Buffer, 10, 0, hkl) == 1); 239 TEST(Buffer[0] == '?'); 240 TEST(NtUserToUnicodeEx(106, 55, KeyState, Buffer, 10, 0, hkl) == 1); 241 TEST(Buffer[0] == '*'); 242 TEST(NtUserToUnicodeEx(32, 57, KeyState, Buffer, 10, 0, hkl) == 1); 243 TEST(Buffer[0] == ' '); 244 TEST(NtUserToUnicodeEx(109, 74, KeyState, Buffer, 10, 0, hkl) == 1); 245 TEST(Buffer[0] == '-'); 246 TEST(NtUserToUnicodeEx(107, 78, KeyState, Buffer, 10, 0, hkl) == 1); 247 TEST(Buffer[0] == '+'); 248 TEST(NtUserToUnicodeEx(226, 86, KeyState, Buffer, 10, 0, hkl) == 1); 249 TEST(Buffer[0] == '|'); 250 TEST(NtUserToUnicodeEx(9, 124, KeyState, Buffer, 10, 0, hkl) == 1); 251 TEST(Buffer[0] == 9); 252 253 /* Test with ctrl key pressed */ 254 ZeroMemory(KeyState, 256); 255 KeyState[VK_CONTROL] = 0xff; 256 // TEST(NtUserToUnicodeEx(27, 1, KeyState, Buffer, 10, 0, hkl) == 1); 257 // TEST(Buffer[0] == 27); 258 // TEST(NtUserToUnicodeEx(8, 14, KeyState, Buffer, 10, 0, hkl) == 1); 259 // TEST(Buffer[0] == 127); 260 TEST(NtUserToUnicodeEx(81, 16, KeyState, Buffer, 10, 0, hkl) == 1); 261 TEST(Buffer[0] == 17); 262 TEST(NtUserToUnicodeEx(87, 17, KeyState, Buffer, 10, 0, hkl) == 1); 263 TEST(Buffer[0] == 23); 264 TEST(NtUserToUnicodeEx(69, 18, KeyState, Buffer, 10, 0, hkl) == 1); 265 TEST(Buffer[0] == 5); 266 TEST(NtUserToUnicodeEx(82, 19, KeyState, Buffer, 10, 0, hkl) == 1); 267 TEST(Buffer[0] == 18); 268 TEST(NtUserToUnicodeEx(84, 20, KeyState, Buffer, 10, 0, hkl) == 1); 269 TEST(Buffer[0] == 20); 270 TEST(NtUserToUnicodeEx(89, 21, KeyState, Buffer, 10, 0, hkl) == 1); 271 TEST(Buffer[0] == 25); 272 TEST(NtUserToUnicodeEx(85, 22, KeyState, Buffer, 10, 0, hkl) == 1); 273 TEST(Buffer[0] == 21); 274 TEST(NtUserToUnicodeEx(73, 23, KeyState, Buffer, 10, 0, hkl) == 1); 275 TEST(Buffer[0] == 9); 276 TEST(NtUserToUnicodeEx(79, 24, KeyState, Buffer, 10, 0, hkl) == 1); 277 TEST(Buffer[0] == 15); 278 TEST(NtUserToUnicodeEx(80, 25, KeyState, Buffer, 10, 0, hkl) == 1); 279 TEST(Buffer[0] == 16); 280 TEST(NtUserToUnicodeEx(219, 26, KeyState, Buffer, 10, 0, hkl) == 1); 281 TEST(Buffer[0] == 27); 282 TEST(NtUserToUnicodeEx(221, 27, KeyState, Buffer, 10, 0, hkl) == 1); 283 TEST(Buffer[0] == 29); 284 TEST(NtUserToUnicodeEx(13, 28, KeyState, Buffer, 10, 0, hkl) == 1); 285 TEST(Buffer[0] == 10); 286 TEST(NtUserToUnicodeEx(65, 30, KeyState, Buffer, 10, 0, hkl) == 1); 287 TEST(Buffer[0] == 1); 288 TEST(NtUserToUnicodeEx(83, 31, KeyState, Buffer, 10, 0, hkl) == 1); 289 TEST(Buffer[0] == 19); 290 TEST(NtUserToUnicodeEx(68, 32, KeyState, Buffer, 10, 0, hkl) == 1); 291 TEST(Buffer[0] == 4); 292 TEST(NtUserToUnicodeEx(70, 33, KeyState, Buffer, 10, 0, hkl) == 1); 293 TEST(Buffer[0] == 6); 294 TEST(NtUserToUnicodeEx(71, 34, KeyState, Buffer, 10, 0, hkl) == 1); 295 TEST(Buffer[0] == 7); 296 TEST(NtUserToUnicodeEx(72, 35, KeyState, Buffer, 10, 0, hkl) == 1); 297 TEST(Buffer[0] == 8); 298 TEST(NtUserToUnicodeEx(74, 36, KeyState, Buffer, 10, 0, hkl) == 1); 299 TEST(Buffer[0] == 10); 300 TEST(NtUserToUnicodeEx(75, 37, KeyState, Buffer, 10, 0, hkl) == 1); 301 TEST(Buffer[0] == 11); 302 TEST(NtUserToUnicodeEx(76, 38, KeyState, Buffer, 10, 0, hkl) == 1); 303 TEST(Buffer[0] == 12); 304 TEST(NtUserToUnicodeEx(220, 43, KeyState, Buffer, 10, 0, hkl) == 1); 305 TEST(Buffer[0] == 28); 306 TEST(NtUserToUnicodeEx(90, 44, KeyState, Buffer, 10, 0, hkl) == 1); 307 TEST(Buffer[0] == 26); 308 TEST(NtUserToUnicodeEx(88, 45, KeyState, Buffer, 10, 0, hkl) == 1); 309 TEST(Buffer[0] == 24); 310 TEST(NtUserToUnicodeEx(67, 46, KeyState, Buffer, 10, 0, hkl) == 1); 311 TEST(Buffer[0] == 3); 312 TEST(NtUserToUnicodeEx(86, 47, KeyState, Buffer, 10, 0, hkl) == 1); 313 TEST(Buffer[0] == 22); 314 TEST(NtUserToUnicodeEx(66, 48, KeyState, Buffer, 10, 0, hkl) == 1); 315 TEST(Buffer[0] == 2); 316 TEST(NtUserToUnicodeEx(78, 49, KeyState, Buffer, 10, 0, hkl) == 1); 317 TEST(Buffer[0] == 14); 318 TEST(NtUserToUnicodeEx(77, 50, KeyState, Buffer, 10, 0, hkl) == 1); 319 TEST(Buffer[0] == 13); 320 // TEST(NtUserToUnicodeEx(32, 57, KeyState, Buffer, 10, 0, hkl) == 1); 321 // TEST(Buffer[0] == 32); 322 TEST(NtUserToUnicodeEx(226, 86, KeyState, Buffer, 10, 0, hkl) == 1); 323 TEST(Buffer[0] == 28); 324 325 /* Test with VK_CAPITAL key pressed */ 326 ZeroMemory(KeyState, 256); 327 KeyState[VK_CAPITAL] = 0xff; 328 TEST(NtUserToUnicodeEx(27, 1, KeyState, Buffer, 10, 0, hkl) == 1); 329 TEST(Buffer[0] == 27); 330 TEST(NtUserToUnicodeEx(49, 2, KeyState, Buffer, 10, 0, hkl) == 1); 331 TEST(Buffer[0] == '1'); 332 TEST(NtUserToUnicodeEx(50, 3, KeyState, Buffer, 10, 0, hkl) == 1); 333 TEST(Buffer[0] == '2'); 334 TEST(NtUserToUnicodeEx(51, 4, KeyState, Buffer, 10, 0, hkl) == 1); 335 TEST(Buffer[0] == '3'); 336 TEST(NtUserToUnicodeEx(52, 5, KeyState, Buffer, 10, 0, hkl) == 1); 337 TEST(Buffer[0] == '4'); 338 TEST(NtUserToUnicodeEx(53, 6, KeyState, Buffer, 10, 0, hkl) == 1); 339 TEST(Buffer[0] == '5'); 340 TEST(NtUserToUnicodeEx(54, 7, KeyState, Buffer, 10, 0, hkl) == 1); 341 TEST(Buffer[0] == '6'); 342 TEST(NtUserToUnicodeEx(55, 8, KeyState, Buffer, 10, 0, hkl) == 1); 343 TEST(Buffer[0] == '7'); 344 TEST(NtUserToUnicodeEx(56, 9, KeyState, Buffer, 10, 0, hkl) == 1); 345 TEST(Buffer[0] == '8'); 346 TEST(NtUserToUnicodeEx(57, 10, KeyState, Buffer, 10, 0, hkl) == 1); 347 TEST(Buffer[0] == '9'); 348 TEST(NtUserToUnicodeEx(48, 11, KeyState, Buffer, 10, 0, hkl) == 1); 349 TEST(Buffer[0] == '0'); 350 TEST(NtUserToUnicodeEx(189, 12, KeyState, Buffer, 10, 0, hkl) == 1); 351 TEST(Buffer[0] == '-'); 352 TEST(NtUserToUnicodeEx(187, 13, KeyState, Buffer, 10, 0, hkl) == 1); 353 TEST(Buffer[0] == '='); 354 TEST(NtUserToUnicodeEx(8, 14, KeyState, Buffer, 10, 0, hkl) == 1); 355 TEST(Buffer[0] == 8); 356 TEST(NtUserToUnicodeEx(9, 15, KeyState, Buffer, 10, 0, hkl) == 1); 357 TEST(Buffer[0] == 9); 358 TEST(NtUserToUnicodeEx(81, 16, KeyState, Buffer, 10, 0, hkl) == 1); 359 TEST(Buffer[0] == 'Q'); 360 TEST(NtUserToUnicodeEx(87, 17, KeyState, Buffer, 10, 0, hkl) == 1); 361 TEST(Buffer[0] == 'W'); 362 TEST(NtUserToUnicodeEx(69, 18, KeyState, Buffer, 10, 0, hkl) == 1); 363 TEST(Buffer[0] == 'E'); 364 TEST(NtUserToUnicodeEx(82, 19, KeyState, Buffer, 10, 0, hkl) == 1); 365 TEST(Buffer[0] == 'R'); 366 TEST(NtUserToUnicodeEx(84, 20, KeyState, Buffer, 10, 0, hkl) == 1); 367 TEST(Buffer[0] == 'T'); 368 TEST(NtUserToUnicodeEx(89, 21, KeyState, Buffer, 10, 0, hkl) == 1); 369 TEST(Buffer[0] == 'Y'); 370 TEST(NtUserToUnicodeEx(85, 22, KeyState, Buffer, 10, 0, hkl) == 1); 371 TEST(Buffer[0] == 'U'); 372 TEST(NtUserToUnicodeEx(73, 23, KeyState, Buffer, 10, 0, hkl) == 1); 373 TEST(Buffer[0] == 'I'); 374 TEST(NtUserToUnicodeEx(79, 24, KeyState, Buffer, 10, 0, hkl) == 1); 375 TEST(Buffer[0] == 'O'); 376 TEST(NtUserToUnicodeEx(80, 25, KeyState, Buffer, 10, 0, hkl) == 1); 377 TEST(Buffer[0] == 'P'); 378 TEST(NtUserToUnicodeEx(219, 26, KeyState, Buffer, 10, 0, hkl) == 1); 379 TEST(Buffer[0] == '['); 380 TEST(NtUserToUnicodeEx(221, 27, KeyState, Buffer, 10, 0, hkl) == 1); 381 TEST(Buffer[0] == ']'); 382 TEST(NtUserToUnicodeEx(13, 28, KeyState, Buffer, 10, 0, hkl) == 1); 383 TEST(Buffer[0] == 13); 384 TEST(NtUserToUnicodeEx(65, 30, KeyState, Buffer, 10, 0, hkl) == 1); 385 TEST(Buffer[0] == 'A'); 386 TEST(NtUserToUnicodeEx(83, 31, KeyState, Buffer, 10, 0, hkl) == 1); 387 TEST(Buffer[0] == 'S'); 388 TEST(NtUserToUnicodeEx(68, 32, KeyState, Buffer, 10, 0, hkl) == 1); 389 TEST(Buffer[0] == 'D'); 390 TEST(NtUserToUnicodeEx(70, 33, KeyState, Buffer, 10, 0, hkl) == 1); 391 TEST(Buffer[0] == 'F'); 392 TEST(NtUserToUnicodeEx(71, 34, KeyState, Buffer, 10, 0, hkl) == 1); 393 TEST(Buffer[0] == 'G'); 394 TEST(NtUserToUnicodeEx(72, 35, KeyState, Buffer, 10, 0, hkl) == 1); 395 TEST(Buffer[0] == 'H'); 396 TEST(NtUserToUnicodeEx(74, 36, KeyState, Buffer, 10, 0, hkl) == 1); 397 TEST(Buffer[0] == 'J'); 398 TEST(NtUserToUnicodeEx(75, 37, KeyState, Buffer, 10, 0, hkl) == 1); 399 TEST(Buffer[0] == 'K'); 400 TEST(NtUserToUnicodeEx(76, 38, KeyState, Buffer, 10, 0, hkl) == 1); 401 TEST(Buffer[0] == 'L'); 402 TEST(NtUserToUnicodeEx(186, 39, KeyState, Buffer, 10, 0, hkl) == 1); 403 TEST(Buffer[0] == ';'); 404 TEST(NtUserToUnicodeEx(222, 40, KeyState, Buffer, 10, 0, hkl) == 1); 405 TEST(Buffer[0] == '\''); 406 TEST(NtUserToUnicodeEx(192, 41, KeyState, Buffer, 10, 0, hkl) == 1); 407 TEST(Buffer[0] == '`'); 408 TEST(NtUserToUnicodeEx(220, 43, KeyState, Buffer, 10, 0, hkl) == 1); 409 TEST(Buffer[0] == '\\'); 410 TEST(NtUserToUnicodeEx(90, 44, KeyState, Buffer, 10, 0, hkl) == 1); 411 TEST(Buffer[0] == 'Z'); 412 TEST(NtUserToUnicodeEx(88, 45, KeyState, Buffer, 10, 0, hkl) == 1); 413 TEST(Buffer[0] == 'X'); 414 TEST(NtUserToUnicodeEx(67, 46, KeyState, Buffer, 10, 0, hkl) == 1); 415 TEST(Buffer[0] == 'C'); 416 TEST(NtUserToUnicodeEx(86, 47, KeyState, Buffer, 10, 0, hkl) == 1); 417 TEST(Buffer[0] == 'V'); 418 TEST(NtUserToUnicodeEx(66, 48, KeyState, Buffer, 10, 0, hkl) == 1); 419 TEST(Buffer[0] == 'B'); 420 TEST(NtUserToUnicodeEx(78, 49, KeyState, Buffer, 10, 0, hkl) == 1); 421 TEST(Buffer[0] == 'N'); 422 TEST(NtUserToUnicodeEx(77, 50, KeyState, Buffer, 10, 0, hkl) == 1); 423 TEST(Buffer[0] == 'M'); 424 TEST(NtUserToUnicodeEx(188, 51, KeyState, Buffer, 10, 0, hkl) == 1); 425 TEST(Buffer[0] == ','); 426 TEST(NtUserToUnicodeEx(190, 52, KeyState, Buffer, 10, 0, hkl) == 1); 427 TEST(Buffer[0] == '.'); 428 TEST(NtUserToUnicodeEx(191, 53, KeyState, Buffer, 10, 0, hkl) == 1); 429 TEST(Buffer[0] == '/'); 430 TEST(NtUserToUnicodeEx(106, 55, KeyState, Buffer, 10, 0, hkl) == 1); 431 TEST(Buffer[0] == '*'); 432 TEST(NtUserToUnicodeEx(32, 57, KeyState, Buffer, 10, 0, hkl) == 1); 433 TEST(Buffer[0] == ' '); 434 TEST(NtUserToUnicodeEx(109, 74, KeyState, Buffer, 10, 0, hkl) == 1); 435 TEST(Buffer[0] == '-'); 436 TEST(NtUserToUnicodeEx(107, 78, KeyState, Buffer, 10, 0, hkl) == 1); 437 TEST(Buffer[0] == '+'); 438 TEST(NtUserToUnicodeEx(226, 86, KeyState, Buffer, 10, 0, hkl) == 1); 439 TEST(Buffer[0] == '\\'); 440 TEST(NtUserToUnicodeEx(9, 124, KeyState, Buffer, 10, 0, hkl) == 1); 441 TEST(Buffer[0] == 9); 442 } 443 444