diff options
author | Yotam Barnoy | 2010-02-21 04:04:13 +0000 |
---|---|---|
committer | Yotam Barnoy | 2010-02-21 04:04:13 +0000 |
commit | ef330ed9b4e5d6252134ed137b042593f79d02a9 (patch) | |
tree | 919c4ae91efca10102936a1833251b48323b8983 /common | |
parent | cebb052e2cfd963b95d7357b7c21dc8c437e058a (diff) | |
download | scummvm-rg350-ef330ed9b4e5d6252134ed137b042593f79d02a9.tar.gz scummvm-rg350-ef330ed9b4e5d6252134ed137b042593f79d02a9.tar.bz2 scummvm-rg350-ef330ed9b4e5d6252134ed137b042593f79d02a9.zip |
Patch for bug 2943361 by littleboy, adding full kb modifier support to all engines + GUI and proper keypad handling
svn-id: r48101
Diffstat (limited to 'common')
-rw-r--r-- | common/keyboard.h | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/common/keyboard.h b/common/keyboard.h index cf595d4dd8..928b59d997 100644 --- a/common/keyboard.h +++ b/common/keyboard.h @@ -40,15 +40,15 @@ enum KeyCode { KEYCODE_PAUSE = 19, KEYCODE_ESCAPE = 27, KEYCODE_SPACE = 32, - KEYCODE_EXCLAIM = 33, - KEYCODE_QUOTEDBL = 34, - KEYCODE_HASH = 35, - KEYCODE_DOLLAR = 36, - KEYCODE_AMPERSAND = 38, - KEYCODE_QUOTE = 39, + KEYCODE_EXCLAIM = 33, // ! + KEYCODE_QUOTEDBL = 34, // " + KEYCODE_HASH = 35, // # + KEYCODE_DOLLAR = 36, // $ + KEYCODE_AMPERSAND = 38, // & + KEYCODE_QUOTE = 39, // ' KEYCODE_LEFTPAREN = 40, KEYCODE_RIGHTPAREN = 41, - KEYCODE_ASTERISK = 42, + KEYCODE_ASTERISK = 42, // * KEYCODE_PLUS = 43, KEYCODE_COMMA = 44, KEYCODE_MINUS = 45, @@ -105,6 +105,7 @@ enum KeyCode { KEYCODE_y = 121, KEYCODE_z = 122, KEYCODE_DELETE = 127, + KEYCODE_TILDE = 176, // ~ // Numeric keypad KEYCODE_KP0 = 256, @@ -215,7 +216,10 @@ enum { enum { KBD_CTRL = 1 << 0, KBD_ALT = 1 << 1, - KBD_SHIFT = 1 << 2 + KBD_SHIFT = 1 << 2, + KBD_NUM = 1 << 3, + KBD_CAPS = 1 << 4, + KBD_SCRL = 1 << 5 }; /** @@ -245,7 +249,7 @@ struct KeyState { /** * Status of the modifier keys. Bits are set in this for each * pressed modifier - * @see KBD_CTRL, KBD_ALT, KBD_SHIFT + * @see KBD_CTRL, KBD_ALT, KBD_SHIFT, KBD_NUM, KBD_CAPS, KBD_SCRL */ byte flags; @@ -266,6 +270,13 @@ struct KeyState { ascii = flags = 0; } + /** + * Check for flags, ignoring the sticky flags (KBD_NUM, KBD_CAPS, KBD_SCRL) + */ + bool hasFlags(byte f) { + return f == (flags & ~(KBD_NUM|KBD_CAPS|KBD_SCRL)); + } + bool operator ==(const KeyState &x) const { return keycode == x.keycode && ascii == x.ascii && flags == x.flags; } |