diff --git a/doc/changelog.dox b/doc/changelog.dox
index aaef48e9b..69464350f 100644
--- a/doc/changelog.dox
+++ b/doc/changelog.dox
@@ -807,6 +807,8 @@ See also:
UI scale. However note that this does not yet properly handle DPI change
events themselves, which happen for example when moving windows across
displays with different DPI.
+- Added more keys to @ref Platform::AbstractXApplication::KeyEvent::Key for
+ better consistency with other application implementations
@subsubsection changelog-latest-changes-scenegraph SceneGraph library
diff --git a/src/Magnum/Platform/AbstractXApplication.h b/src/Magnum/Platform/AbstractXApplication.h
index 6ac9eb7e9..0206bdbeb 100644
--- a/src/Magnum/Platform/AbstractXApplication.h
+++ b/src/Magnum/Platform/AbstractXApplication.h
@@ -560,12 +560,43 @@ class AbstractXApplication::InputEvent {
* @see @ref Modifiers, @ref modifiers()
*/
enum class Modifier: unsigned int {
- Shift = ShiftMask, /**< Shift */
- Ctrl = ControlMask, /**< Ctrl */
- Alt = Mod1Mask, /**< Alt */
+ /**
+ * Shift
+ *
+ * @see @ref KeyEvent::Key::LeftShift,
+ * @ref KeyEvent::Key::RightShift
+ */
+ Shift = ShiftMask,
+
+ /**
+ * Ctrl
+ *
+ * @see @ref KeyEvent::Key::LeftCtrl, @ref KeyEvent::Key::RightCtrl
+ */
+ Ctrl = ControlMask,
+
+ /**
+ * Alt
+ *
+ * @see @ref KeyEvent::Key::LeftAlt, @ref KeyEvent::Key::RightAlt
+ */
+ Alt = Mod1Mask,
+
AltGr = Mod5Mask, /**< AltGr */
- CapsLock = LockMask, /**< Caps lock */
- NumLock = Mod2Mask /**< Num lock */
+
+ /**
+ * Caps lock
+ *
+ * @see @ref KeyEvent::Key::CapsLock
+ */
+ CapsLock = LockMask,
+
+ /**
+ * Num lock
+ *
+ * @see @ref KeyEvent::Key::NumLock
+ */
+ NumLock = Mod2Mask
};
/**
@@ -647,6 +678,68 @@ class AbstractXApplication::KeyEvent: public AbstractXApplication::InputEvent {
* @see @ref key()
*/
enum class Key: KeySym {
+ /**
+ * Left Shift
+ * @m_since_latest
+ *
+ * @see @ref InputEvent::Modifier::Shift
+ */
+ LeftShift = XK_Shift_L,
+
+ /**
+ * Right Shift
+ * @m_since_latest
+ *
+ * @see @ref InputEvent::Modifier::Shift
+ */
+ RightShift = XK_Shift_R,
+
+ /**
+ * Left Ctrl
+ * @m_since_latest
+ *
+ * @see @ref InputEvent::Modifier::Ctrl
+ */
+ LeftCtrl = XK_Control_L,
+
+ /**
+ * Right Ctrl
+ * @m_since_latest
+ *
+ * @see @ref InputEvent::Modifier::Ctrl
+ */
+ RightCtrl = XK_Control_R,
+
+ /**
+ * Left Alt
+ * @m_since_latest
+ *
+ * @see @ref InputEvent::Modifier::Alt
+ */
+ LeftAlt = XK_Alt_L,
+
+ /**
+ * Right Alt
+ * @m_since_latest
+ *
+ * @see @ref InputEvent::Modifier::Alt
+ */
+ RightAlt = XK_Alt_R,
+
+ /**
+ * Left Super key (Windows/⌘)
+ * @m_since_latest
+ */
+ LeftSuper = XK_Super_L,
+
+ /**
+ * Right Super key (Windows/⌘)
+ * @m_since_latest
+ */
+ RightSuper = XK_Super_R,
+
+ /* AltGr missing */
+
Enter = XK_Return, /**< Enter */
Esc = XK_Escape, /**< Escape */
@@ -654,6 +747,29 @@ class AbstractXApplication::KeyEvent: public AbstractXApplication::InputEvent {
Down = XK_Down, /**< Down arrow */
Left = XK_Left, /**< Left arrow */
Right = XK_Right, /**< Right arrow */
+ Home = XK_Home, /**< Home */
+ End = XK_End, /**< End */
+ PageUp = XK_Page_Up, /**< Page up */
+ PageDown = XK_Page_Down, /**< Page down */
+
+ /**
+ * Backspace
+ * @m_since_latest
+ */
+ Backspace = XK_BackSpace,
+
+ /**
+ * Insert
+ * @m_since_latest
+ */
+ Insert = XK_Insert,
+
+ /**
+ * Delete
+ * @m_since_latest
+ */
+ Delete = XK_Delete,
+
F1 = XK_F1, /**< F1 */
F2 = XK_F2, /**< F2 */
F3 = XK_F3, /**< F3 */
@@ -666,20 +782,60 @@ class AbstractXApplication::KeyEvent: public AbstractXApplication::InputEvent {
F10 = XK_F10, /**< F10 */
F11 = XK_F11, /**< F11 */
F12 = XK_F12, /**< F12 */
- Home = XK_Home, /**< Home */
- End = XK_End, /**< End */
- PageUp = XK_Page_Up, /**< Page up */
- PageDown = XK_Page_Down, /**< Page down */
Space = XK_space, /**< Space */
+
+ /**
+ * Tab
+ * @m_since_latest
+ */
+ Tab = XK_Tab,
+
+ /**
+ * Quote (')
+ * @m_since_latest
+ */
+ Quote = XK_apostrophe,
+
Comma = XK_comma, /**< Comma */
Period = XK_period, /**< Period */
Minus = XK_minus, /**< Minus */
Plus = XK_plus, /**< Plus */
Slash = XK_slash, /**< Slash */
Percent = XK_percent, /**< Percent */
+
+ /**
+ * Semicolon (`;`)
+ * @m_since_latest
+ */
+ Semicolon = XK_semicolon,
+
Equal = XK_equal, /**< Equal */
+ /**
+ * Left bracket (`[`)
+ * @m_since_latest
+ */
+ LeftBracket = XK_bracketleft,
+
+ /**
+ * Right bracket (`]`)
+ * @m_since_latest
+ */
+ RightBracket = XK_bracketright,
+
+ /**
+ * Backslash (`\`)
+ * @m_since_latest
+ */
+ Backslash = XK_backslash,
+
+ /**
+ * Backquote (`)
+ * @m_since_latest
+ */
+ Backquote = XK_grave,
+
Zero = XK_0, /**< Zero */
One = XK_1, /**< One */
Two = XK_2, /**< Two */
@@ -716,7 +872,139 @@ class AbstractXApplication::KeyEvent: public AbstractXApplication::InputEvent {
W = XK_w, /**< Small letter W */
X = XK_x, /**< Small letter X */
Y = XK_y, /**< Small letter Y */
- Z = XK_z /**< Small letter Z */
+ Z = XK_z, /**< Small letter Z */
+
+ /**
+ * Caps lock
+ *
+ * @see @ref InputEvent::Modifier::CapsLock
+ * @m_since_latest
+ */
+ CapsLock = XK_Caps_Lock,
+
+ /**
+ * Scroll lock
+ * @m_since_latest
+ */
+ ScrollLock = XK_Scroll_Lock,
+
+ /**
+ * Num lock
+ *
+ * @see @ref InputEvent::Modifier::NumLock
+ * @m_since_latest
+ */
+ NumLock = XK_Num_Lock,
+
+ /**
+ * Print screen
+ * @m_since_latest
+ */
+ PrintScreen = XK_Print,
+
+ /* Pause, Menu missing */
+
+ /**
+ * Numpad zero
+ * @m_since_latest
+ */
+ NumZero = XK_KP_0,
+
+ /**
+ * Numpad one
+ * @m_since_latest
+ */
+ NumOne = XK_KP_1,
+
+ /**
+ * Numpad two
+ * @m_since_latest
+ */
+ NumTwo = XK_KP_2,
+
+ /**
+ * Numpad three
+ * @m_since_latest
+ */
+ NumThree = XK_KP_3,
+
+ /**
+ * Numpad four
+ * @m_since_latest
+ */
+ NumFour = XK_KP_4,
+
+ /**
+ * Numpad five
+ * @m_since_latest
+ */
+ NumFive = XK_KP_5,
+
+ /**
+ * Numpad six
+ * @m_since_latest
+ */
+ NumSix = XK_KP_6,
+
+ /**
+ * Numpad seven
+ * @m_since_latest
+ */
+ NumSeven = XK_KP_7,
+
+ /**
+ * Numpad eight
+ * @m_since_latest
+ */
+ NumEight = XK_KP_8,
+
+ /**
+ * Numpad nine
+ * @m_since_latest
+ */
+ NumNine = XK_KP_9,
+
+ /**
+ * Numpad decimal
+ * @m_since_latest
+ */
+ NumDecimal = XK_KP_Decimal,
+
+ /**
+ * Numpad divide
+ * @m_since_latest
+ */
+ NumDivide = XK_KP_Divide,
+
+ /**
+ * Numpad multiply
+ * @m_since_latest
+ */
+ NumMultiply = XK_KP_Multiply,
+
+ /**
+ * Numpad subtract
+ * @m_since_latest
+ */
+ NumSubtract = XK_KP_Subtract,
+
+ /**
+ * Numpad add
+ * @m_since_latest
+ */
+ NumAdd = XK_KP_Add,
+
+ /**
+ * Numpad enter
+ * @m_since_latest
+ */
+ NumEnter = XK_KP_Enter,
+
+ /**
+ * Numpad equal
+ * @m_since_latest
+ */
+ NumEqual = XK_KP_Equal
};
/** @brief Key */