ReactOS
0.4.16-dev-927-g467dec4
Toggle main menu visibility
Main Page
Related Pages
Modules
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
v
w
x
Functions
_
a
b
c
d
e
f
g
h
i
l
m
o
p
r
s
t
u
v
w
Variables
_
c
d
e
f
g
h
i
l
m
n
o
p
s
t
u
x
Typedefs
_
a
b
c
d
e
f
g
h
i
l
m
o
p
r
s
t
u
v
w
x
Enumerations
_
a
b
c
d
f
i
l
m
o
p
s
t
w
x
Enumerator
a
b
c
d
e
f
g
h
i
m
n
o
p
r
s
t
u
v
w
x
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerations
_
a
b
c
d
e
f
h
i
k
l
m
n
o
p
r
s
t
u
v
w
z
Enumerator
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Properties
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Related Functions
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
v
x
Files
File List
File Members
All
$
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
$
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Variables
$
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerations
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerator
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Macros
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Examples
NtUserToUnicodeEx.c
Go to the documentation of this file.
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
START_TEST
#define START_TEST(x)
Definition:
atltest.h:75
Buffer
Definition:
bufpool.h:45
NtUserToUnicodeEx
INT NTAPI NtUserToUnicodeEx(UINT wVirtKey, UINT wScanCode, PBYTE lpKeyState, LPWSTR pwszBuff, int cchBuff, UINT wFlags, HKL dwhkl)
TEST
#define TEST(x)
Definition:
precomp.h:20
hkl
HKL hkl
Definition:
msctf.idl:650
HKL
UINT_PTR HKL
Definition:
msctf.idl:143
L
#define L(x)
Definition:
ntvdm.h:50
ZeroMemory
#define ZeroMemory
Definition:
winbase.h:1743
VK_CAPITAL
#define VK_CAPITAL
Definition:
winuser.h:2209
VK_CONTROL
#define VK_CONTROL
Definition:
winuser.h:2206
LoadKeyboardLayoutW
HKL WINAPI LoadKeyboardLayoutW(_In_ LPCWSTR, _In_ UINT)
KLF_NOTELLSHELL
#define KLF_NOTELLSHELL
Definition:
winuser.h:116
VK_SHIFT
#define VK_SHIFT
Definition:
winuser.h:2205
WCHAR
__wchar_t WCHAR
Definition:
xmlstorage.h:180
BYTE
unsigned char BYTE
Definition:
xxhash.c:193
modules
rostests
apitests
win32nt
ntuser
NtUserToUnicodeEx.c
Generated on Sun Mar 30 2025 06:08:33 for ReactOS by
1.9.6