+ /* The type of input this binding is for. (Mouse bindings are not yet
+ * implemented. All bindings are currently assumed to be keyboard bindings.) */
+ input_type_t input_type;
+
+ /** If true, the binding should be executed upon a KeyRelease event, not a
+ * KeyPress (the default). */
+ enum {
+ /* This binding will only be executed upon KeyPress events */
+ B_UPON_KEYPRESS = 0,
+ /* This binding will be executed either upon a KeyRelease event, or… */
+ B_UPON_KEYRELEASE = 1,
+ /* …upon a KeyRelease event, even if the modifiers don’t match. This
+ * state is triggered from get_binding() when the corresponding
+ * KeyPress (!) happens, so that users can release the modifier keys
+ * before releasing the actual key. */
+ B_UPON_KEYRELEASE_IGNORE_MODS = 2,
+ } release;
+
+ /** If this is true for a mouse binding, the binding should be executed
+ * when the button is pressed over any part of the window, not just the
+ * title bar (default). */
+ bool whole_window;
+
+ uint32_t number_keycodes;
+
+ /** Keycode to bind */
+ uint32_t keycode;
+
+ /** Bitmask consisting of BIND_MOD_1, BIND_MODE_SWITCH, … */
+ uint32_t mods;
+