Game Development Reference
In-Depth Information
Look closely at the different values that are produced for the different Windows
messages:
WM_KEYDOWN, WM_CHAR, WM_KEYUP, and so on:
WM_KEYDOWN
Code:49
'
1
'
Repeat:1 Oem: 2 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:0
WM_CHAR
Code:49
'
1
'
Repeat:1 Oem: 2 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:0
WM_KEYUP
Code:49
'
1
'
Repeat:1 Oem: 2 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:1
WM_KEYDOWN
Code:50
'
2
'
Repeat:1 Oem: 3 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:0
WM_CHAR
Code:50
'
2
'
Repeat:1 Oem: 3 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:0
WM_KEYUP
Code:50
'
2
'
Repeat:1 Oem: 3 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:1
WM_KEYDOWN
Code:65
'
A
'
Repeat:1 Oem:30 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:0
WM_CHAR
Code:97
'
a
'
Repeat:1 Oem:30 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:0
WM_KEYUP
Code:65
'
A
'
Repeat:1 Oem:30 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:1
WM_KEYDOWN
Code:66
'
B
'
Repeat:1 Oem:48 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:0
WM_CHAR
Code:98
'
b
'
Repeat:1 Oem:48 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:0
WM_KEYUP
Code:66
'
B
'
Repeat:1 Oem:48 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:1
You
ll first notice that the message pipe gets the sequence of WM_KEYDOWN , WM_CHAR ,
and WM_KEYUP for each key pressed and released. The next thing you
'
ll notice is that
the code returned by WM_CHAR is different from the other messages when characters
are lowercase.
This should give you a clue that you can use WM_CHAR for simple character input
when all you care about is getting the right character code. What happens if a key
is held down? Let
'
s find out. The next table shows the output I received by first press-
ing and holding an
'
a
and then the left Shift key:
WM_KEYDOWN
Code:65
'
A
'
Repeat:1 Oem:30 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:1
WM_CHAR
Code:97
'
a
'
Repeat:1 Oem:30 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:1
WM_KEYDOWN
Code:65
'
A
'
Repeat:1 Oem:30 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:1
WM_CHAR
Code:97
'
a
'
Repeat:1 Oem:30 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:1
WM_KEYDOWN
Code:65
'
A
'
Repeat:1 Oem:30 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:1
WM_CHAR
Code:97
'
a
'
Repeat:1 Oem:30 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:1
WM_KEYDOWN
Code:65
'
A
'
Repeat:1 Oem:30 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:1
WM_CHAR
Code:97
'
a
'
Repeat:1 Oem:30 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:1
WM_KEYDOWN
Code:65
'
A
'
Repeat:1 Oem:30 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:1
WM_CHAR
Code:97
'
a
'
Repeat:1 Oem:30 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:1
WM_KEYUP
Code:65
'
A
'
Repeat:1 Oem:30 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:1
WM_KEYDOWN
Code:16
'
_
'
Repeat:1 Oem:42 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:0
WM_KEYDOWN
Code:16
'
_
'
Repeat:1 Oem:42 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:1
WM_KEYDOWN
Code:16
'
_
'
Repeat:1 Oem:42 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:1
WM_KEYDOWN
Code:16
'
_
'
Repeat:1 Oem:42 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:1
WM_KEYDOWN
Code:16
'
_
'
Repeat:1 Oem:42 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:1
WM_KEYUP
Code:16
'
_
'
Repeat:1 Oem:42 Ext
'
d:0 IsAlt:0 WasDown:0 Rel
'
d:1
Search WWH ::




Custom Search