Difference between revisions of "Keyboard (Chili Framework)"
(→Virtual Key Codes) |
|||
Line 44: | Line 44: | ||
Gets the virtual key code of the key associated with the <code>Event</code> object. | Gets the virtual key code of the key associated with the <code>Event</code> object. | ||
− | == Virtual Key Codes == | + | == Miscellaneous == |
+ | === Virtual Key Codes === | ||
The virtual key code for a standard alphanumeric key is just the <code>char</code> literal (capital if alphabetic), e.g. <code>'A'</code> or <code>'9'</code>. Virtual key codes for other keys are defined with <code>#define</code> macros included with <code>Windows.h</code>. Some common ones are: | The virtual key code for a standard alphanumeric key is just the <code>char</code> literal (capital if alphabetic), e.g. <code>'A'</code> or <code>'9'</code>. Virtual key codes for other keys are defined with <code>#define</code> macros included with <code>Windows.h</code>. Some common ones are: | ||
* <code>VK_SPACE</code> | * <code>VK_SPACE</code> | ||
Line 50: | Line 51: | ||
* <code>VK_ENTER</code> | * <code>VK_ENTER</code> | ||
* <code>VK_ESCAPE</code> | * <code>VK_ESCAPE</code> | ||
+ | |||
+ | === ReadKey vs. ReadChar === | ||
+ | There are two main differences between the events read with <code>ReadKey()</code> and the <code>char</code> values read with <code>ReadChar()</code>: | ||
+ | # Each key press and release sequence puts two events (press event and release event) into the queue read from by <code>ReadKey()</code>, but the same sequence only puts one char value into the queue read from by <code>ReadChar()</code>. | ||
+ | # The char values read with <code>ReadChar()</code> have the shift modifier applied to them, whereas those read by <code>ReadKey()</code> are just the raw virtual key codes. For example, pressing the <code>'A'</code> key puts the <code>'a'</code> <code>char</code> value in the <code>ReadChar()</code> queue when shift is not pressed and <code>'A'</code> when it is pressed, but it is always <code>'A'</code> for <code>ReadKey()</code>. | ||
== See also == | == See also == | ||
* The [[Chili Framework]] | * The [[Chili Framework]] |
Revision as of 00:17, 14 July 2016
With Keyboard
, you can get the current state of depressed keys, and you can pop key press and release events out of an Event
queue contained in Keyboard
. You can also turn autorepeat on/off. Whopee. (Note: the kbd
object lives in MainWindow
's belly.)
Contents
Members
KeyIsPressed
bool Keyboard::KeyIsPressed( unsigned char keycode ) const
Checks to see if a specific key is currently in the pressed state. The function parameter is the virtual key code of the key that you want to check.
ReadKey
Event Keyboard::ReadKey()
Pull a fresh Event object out of the key press/release event queue. Erases an event from the queue and returns a copy if there is a key press event in the queue. Returns an invalid Event object if the queue is empty.
KeyIsEmpty
bool Keyboard::KeyIsEmpty() const
Check to see if the key event queue is empty.
Event
class Keyboard::Event
Key press and release events are held in a queue in Keyboard
in the order they occurred. These events are modeled with their own class because they're precious fucking little snowflakes. You pull them out of the buffer with Keyboard::ReadKey()
.
Type
enum Keyboard::Event::Type
This represents the different types of events that can be recorded. The options are Press
, Release
, and Invalid
.
IsPress
bool Keyboard::Event::IsPress() const
Returns true
if the event is a press event.
IsRelease
bool Keyboard::Event::IsRelease() const
Returns true
if the event is a release event.
IsValid
bool Keyboard::Event::IsValid() const
Returns true
if the event is a valid event (reading from an empty buffer will return an invalid event object).
GetCode
char Keyboard::Event::GetCode() const
Gets the virtual key code of the key associated with the Event
object.
Miscellaneous
Virtual Key Codes
The virtual key code for a standard alphanumeric key is just the char
literal (capital if alphabetic), e.g. 'A'
or '9'
. Virtual key codes for other keys are defined with #define
macros included with Windows.h
. Some common ones are:
-
VK_SPACE
-
VK_SHIFT
-
VK_ENTER
-
VK_ESCAPE
ReadKey vs. ReadChar
There are two main differences between the events read with ReadKey()
and the char
values read with ReadChar()
:
- Each key press and release sequence puts two events (press event and release event) into the queue read from by
ReadKey()
, but the same sequence only puts one char value into the queue read from byReadChar()
. - The char values read with
ReadChar()
have the shift modifier applied to them, whereas those read byReadKey()
are just the raw virtual key codes. For example, pressing the'A'
key puts the'a'
char
value in theReadChar()
queue when shift is not pressed and'A'
when it is pressed, but it is always'A'
forReadKey()
.
See also
- The Chili Framework