+ EventType type; /**< Identifies the type of the containing DeviceEvent. */
+ long id; /**< an identifier which identifies this event in the event stream.
+ * On X Window systems this corresponds to the XEvent serial number.
+ */
+ short hw_code; /**< a numeric code which is hardware and system-dependent, identifying the
+ * specific hardware button or key on the device for which the event has
+ * occurred. On X Window systems, for global key notifications and for most
+ * non-global key notifications as well, this code corresponds to the
+ * XKeycode. For switch and button events it indicates the switch
+ * or button number.
+ * @note
+ * For technical reasons, this code may differ from the XKeycode
+ * when generated by Java applications for consumption by non-global
+ * key listeners. This is subject to change in future versions of the
+ * DeviceEventController implementation.
+ */
+
+ unsigned short modifiers; /**< an unsigned short int consisting of zero or more of the following
+ * values OR'ed together:
+ * \li \c 1<<::MODIFIER_SHIFT (=1, corresponds to Xlib's ShiftMask)
+ * \li \c 1<<::MODIFIER_SHIFTLOCK (=2, corresponds to Xlib's LockMask)
+ * \li \c 1<<::MODIFIER_CONTROL (=4, corresponds to Xlib's ControlMask)
+ * \li \c 1<<::MODIFIER_ALT (=8, corresponds to Xlib's Mod1Mask)
+ * \li \c 1<<::MODIFIER_META (=16, corresponds to Xlib's Mod2Mask)
+ * \li \c 1<<::MODIFIER_META2 (=32, corresponds to Xlib's Mod3Mask)
+ * \li \c 1<<::MODIFIER_META3 (=64, corresponds to Xlib's Mod4Mask)
+ **/
+ unsigned long timestamp; /**< an unsigned integer representing the time that the
+ * event occurred. On X Window systems this event is
+ * a time in milliseconds from some arbitrary starting
+ * point; it therefore has a cycle time of approximately
+ * 50 days.
+ */
+ string event_string; /**< A string representation of the event. If is_text is
+ * \c True, then this string represents the character or typographic
+ * sequence that would be received by a focussed text input field.
+ * event_string is in general suitable for exposure to the
+ * end-user for purposes of keyboard echo.
+ */
+ boolean is_text; /**< \c True if the event results in the insertion of characters
+ * into an input text buffer, or would do so if delivered to a focussed
+ * text input field. ¨Typographical¨ key events have this field set to
+ * \c True, whereas ¨control¨ key events generally do not.
+ */