#ifndef _SWAY_KEY_STATE_H #define _SWAY_KEY_STATE_H #include #include #include "container.h" /* Keyboard state */ // returns true if key has been pressed, otherwise false bool check_key(uint32_t key_sym, uint32_t key_code); // returns true if key_sym matches latest released key. bool check_released_key(uint32_t key_sym); // sets a key as pressed void press_key(uint32_t key_sym, uint32_t key_code); // unsets a key as pressed void release_key(uint32_t key_sym, uint32_t key_code); /* Pointer state */ enum pointer_values { M_LEFT_CLICK = 272, M_RIGHT_CLICK = 273, M_SCROLL_CLICK = 274, M_SCROLL_UP = 275, M_SCROLL_DOWN = 276, }; enum pointer_mode { // Target M_FLOATING = 1, M_TILING = 2, // Action M_DRAGGING = 4, M_RESIZING = 8, }; struct pointer_button_state { bool held; // state at the point it was pressed int x, y; swayc_t *view; }; extern struct pointer_state { // mouse clicks struct pointer_button_state left; struct pointer_button_state right; struct pointer_button_state scroll; // change in pointer position struct { int x, y; } delta; // view pointer is currently over swayc_t *view; // Pointer mode int mode; } pointer_state; enum modifier_state { MOD_STATE_UNCHANGED = 0, MOD_STATE_PRESSED = 1, MOD_STATE_RELEASED = 2 }; void pointer_position_set(struct wlc_origin *new_origin, bool force_focus); void center_pointer_on(swayc_t *view); // on button release unset mode depending on the button. // on button press set mode conditionally depending on the button void pointer_mode_set(uint32_t button, bool condition); // Update mode in mouse motion void pointer_mode_update(void); // Reset mode on any keypress; void pointer_mode_reset(void); void input_init(void); /** * Check if state of mod changed from current state to new_state. * * Returns MOD_STATE_UNCHANGED if the state didn't change, MOD_STATE_PRESSED if * the state changed to pressed and MOD_STATE_RELEASED if the state changed to * released. */ uint32_t modifier_state_changed(uint32_t new_state, uint32_t mod); /** * Update the current modifiers state to new_state. */ void modifiers_state_update(uint32_t new_state); #endif