Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 36 additions & 10 deletions src/Wt/WEvent.C
Original file line number Diff line number Diff line change
Expand Up @@ -258,17 +258,43 @@ Key WKeyEvent::key() const
if (key >= 96 && key <= 105)
key -= int('0');

if (key >= 'A' && key <= 'Z')
if ((key >= 'A' && key <= 'Z')
|| (key >= '0' && key <= '9')
|| (key >= 16 && key <= 18) // modifiers
|| (key >= 33 && key <= 40) // cursor
|| (key >= 45 && key <= 46) // Ins, Del
|| (key >= 106 && key <= 123) // Num pad, F1-F12
|| (key >= 186 && key <= 192) // OEM keys 1/3
|| (key >= 219 && key <= 222)) // OEM keys 2/3
return static_cast<Key>(key);
else if (key == 8 || key == 9 || key == 13 || key == 27 || key == 32
|| (key >= 16 && key <= 18)
|| (key >= 33 && key <= 40)
|| (key >= 45 && key <= 46)
|| (key >= 48 && key <= 57)
|| (key >= 112 && key <= 123))
return static_cast<Key>(key);
else
return Key::Unknown;
switch (key)
{
case 8: // Backspace
case 9: // Tab
case 12: // NumClear
case 13: // Enter
case 19: // Pause
case 27: // Escape
case 32: // Space
case 91: // Meta
case 93: // ContextMenu
case 226: // OEM keys 3/3
return static_cast<Key>(key);

// Chromium
case 92: return Key::Meta; // right Windows key

// Firefox
case 59: return Key::OemSemicolon;
case 60: return Key::OemBackslash;
case 63: return Key::OemOpenBrackets;
case 160: return Key::OemPipe;
case 163: return Key::OemQuestion;
case 171: return Key::OemPlus;
case 173: return Key::OemMinus;

default: return Key::Unknown;
}
#else // WT_TARGET_JAVA
return keyFromValue(key);
#endif // WT_TARGET_JAVA
Expand Down
156 changes: 89 additions & 67 deletions src/Wt/WGlobal.h
Original file line number Diff line number Diff line change
Expand Up @@ -822,73 +822,95 @@ W_DECLARE_OPERATORS_FOR_FLAGS(KeyboardModifier)
* \ingroup signalslot
*/
enum class Key {
Unknown = 0, //!< Unknown key.
Enter = 13, //!< Enter key.
Tab = 9, //!< Tab key.
Backspace = 8, //!< Backspace key.
Shift = 16, //!< Shift key.
Control = 17, //!< Control key.
Alt = 18, //!< Alt key.
PageUp = 33, //!< Page up key.
PageDown = 34, //!< Page down key.
End = 35, //!< End key.
Home = 36, //!< Home key.
Left = 37, //!< Left arrow key.
Up = 38, //!< Up arrow key.
Right = 39, //!< Right arrow key.
Down = 40, //!< Down arrow key.
Insert = 45, //!< Insert key.
Delete = 46, //!< Delete key.
Escape = 27, //!< Escape key.
F1 = 112, //!< F1 function key.
F2 = 113, //!< F2 function key.
F3 = 114, //!< F3 function key.
F4 = 115, //!< F4 function key.
F5 = 116, //!< F5 function key.
F6 = 117, //!< F6 function key.
F7 = 118, //!< F7 function key.
F8 = 119, //!< F8 function key.
F9 = 120, //!< F9 function key.
F10 = 121, //!< F10 function key.
F11 = 122, //!< F11 function key.
F12 = 123, //!< F12 function key.
Space = ' ', //!< Space
A = 'A', //!< 'A' key
B = 'B', //!< 'B' key
C = 'C', //!< 'C' key
D = 'D', //!< 'D' key
E = 'E', //!< 'E' key
F = 'F', //!< 'F' key
G = 'G', //!< 'G' key
H = 'H', //!< 'H' key
I = 'I', //!< 'I' key
J = 'J', //!< 'J' key
K = 'K', //!< 'K' key
L = 'L', //!< 'L' key
M = 'M', //!< 'M' key
N = 'N', //!< 'N' key
O = 'O', //!< 'O' key
P = 'P', //!< 'P' key
Q = 'Q', //!< 'Q' key
R = 'R', //!< 'R' key
S = 'S', //!< 'S' key
T = 'T', //!< 'T' key
U = 'U', //!< 'U' key
V = 'V', //!< 'V' key
W = 'W', //!< 'W' key
X = 'X', //!< 'X' key
Y = 'Y', //!< 'Y' key
Z = 'Z', //!< 'Z' key
Key_1 = '1', //!< '1' key
Key_2 = '2', //!< '2' key
Key_3 = '3', //!< '3' key
Key_4 = '4', //!< '4' key
Key_5 = '5', //!< '5' key
Key_6 = '6', //!< '6' key
Key_7 = '7', //!< '7' key
Key_8 = '8', //!< '8' key
Key_9 = '9', //!< '9' key
Key_0 = '0', //!< '0' key
Unknown = 0, //!< Unknown key.
Enter = 13, //!< Enter key.
Tab = 9, //!< Tab key.
Backspace = 8, //!< Backspace key.
Shift = 16, //!< Shift key.
Control = 17, //!< Control key.
Alt = 18, //!< Alt key.
Pause = 19, //!< Pause key.
Escape = 27, //!< Escape key.
PageUp = 33, //!< Page up key.
PageDown = 34, //!< Page down key.
End = 35, //!< End key.
Home = 36, //!< Home key.
Left = 37, //!< Left arrow key.
Up = 38, //!< Up arrow key.
Right = 39, //!< Right arrow key.
Down = 40, //!< Down arrow key.
Insert = 45, //!< Insert key.
Delete = 46, //!< Delete key.
Meta = 91, //!< Meta / Windows key.
ContextMenu = 93, //!< Context menu / Apps key.
NumClear = 12, //!< '5' num pad key / Clear key.
NumMultiply = 106, //!< '*' num pad key.
NumAdd = 107, //!< '+' num pad key.
NumSeparator = 108, //!< ',' num pad key.
NumSubtract = 109, //!< '-' num pad key.
NumDecimal = 110, //!< '.' num pad key.
NumDivide = 111, //!< '/' num pad key.
F1 = 112, //!< F1 function key.
F2 = 113, //!< F2 function key.
F3 = 114, //!< F3 function key.
F4 = 115, //!< F4 function key.
F5 = 116, //!< F5 function key.
F6 = 117, //!< F6 function key.
F7 = 118, //!< F7 function key.
F8 = 119, //!< F8 function key.
F9 = 120, //!< F9 function key.
F10 = 121, //!< F10 function key.
F11 = 122, //!< F11 function key.
F12 = 123, //!< F12 function key.
OemSemicolon = 186, //!< 'Ü' key on German keyboard.
OemPlus = 187, //!< '+' / '*' / '~' key on German keyboard.
OemComma = 188, //!< ',' / ';' key on German keyboard.
OemMinus = 189, //!< '-' / '_' key on German keyboard.
OemPeriod = 190, //!< '.' / ':' key on German keyboard.
OemQuestion = 191, //!< '#' / ''' key on German keyboard.
OemTilde = 192, //!< 'Ö' key on German keyboard. Note: Cannot be distinguished from OemCloseBrackets in Firefox!
OemOpenBrackets = 219, //!< 'ß' / '?' / '\' key on German keyboard.
OemPipe = 220, //!< '^' / '°' key on German keyboard.
OemCloseBrackets = 221, //!< '´' / '`' key on German keyboard. Note: Cannot be distinguished from OemTilde in Firefox!
OemQuotes = 222, //!< 'Ä' key on German keyboard.
OemBackslash = 226, //!< '<' / '>' / '|' key on German keyboard.
Space = ' ', //!< Space
A = 'A', //!< 'A' key
B = 'B', //!< 'B' key
C = 'C', //!< 'C' key
D = 'D', //!< 'D' key
E = 'E', //!< 'E' key
F = 'F', //!< 'F' key
G = 'G', //!< 'G' key
H = 'H', //!< 'H' key
I = 'I', //!< 'I' key
J = 'J', //!< 'J' key
K = 'K', //!< 'K' key
L = 'L', //!< 'L' key
M = 'M', //!< 'M' key
N = 'N', //!< 'N' key
O = 'O', //!< 'O' key
P = 'P', //!< 'P' key
Q = 'Q', //!< 'Q' key
R = 'R', //!< 'R' key
S = 'S', //!< 'S' key
T = 'T', //!< 'T' key
U = 'U', //!< 'U' key
V = 'V', //!< 'V' key
W = 'W', //!< 'W' key
X = 'X', //!< 'X' key
Y = 'Y', //!< 'Y' key
Z = 'Z', //!< 'Z' key
Key_1 = '1', //!< '1' key
Key_2 = '2', //!< '2' key
Key_3 = '3', //!< '3' key
Key_4 = '4', //!< '4' key
Key_5 = '5', //!< '5' key
Key_6 = '6', //!< '6' key
Key_7 = '7', //!< '7' key
Key_8 = '8', //!< '8' key
Key_9 = '9', //!< '9' key
Key_0 = '0', //!< '0' key
};

/*! \brief Enumeration for the check state of a check box.
Expand Down