static void handlePointerButton(_GLFWwindow* window, int pressed, const MirPointerEvent* pointer_event) { MirPointerButton button = mir_pointer_event_buttons (pointer_event); int mods = mir_pointer_event_modifiers(pointer_event); const int publicMods = mirModToGLFWMod(mods); int publicButton; switch (button) { case mir_pointer_button_primary: publicButton = GLFW_MOUSE_BUTTON_LEFT; break; case mir_pointer_button_secondary: publicButton = GLFW_MOUSE_BUTTON_RIGHT; break; case mir_pointer_button_tertiary: publicButton = GLFW_MOUSE_BUTTON_MIDDLE; break; case mir_pointer_button_forward: // FIXME What is the forward button? publicButton = GLFW_MOUSE_BUTTON_4; break; case mir_pointer_button_back: // FIXME What is the back button? publicButton = GLFW_MOUSE_BUTTON_5; break; default: break; } _glfwInputMouseClick(window, publicButton, pressed, publicMods); }
static void handlePointerButton(_GLFWwindow* window, int pressed, const MirPointerEvent* pointer_event) { int mods = mir_pointer_event_modifiers(pointer_event); const int publicMods = mirModToGLFWMod(mods); MirPointerButton button = mir_pointer_button_primary; static uint32_t oldButtonStates = 0; uint32_t newButtonStates = mir_pointer_event_buttons(pointer_event); int publicButton = GLFW_MOUSE_BUTTON_LEFT; // XOR our old button states our new states to figure out what was added or removed button = newButtonStates ^ oldButtonStates; switch (button) { case mir_pointer_button_primary: publicButton = GLFW_MOUSE_BUTTON_LEFT; break; case mir_pointer_button_secondary: publicButton = GLFW_MOUSE_BUTTON_RIGHT; break; case mir_pointer_button_tertiary: publicButton = GLFW_MOUSE_BUTTON_MIDDLE; break; case mir_pointer_button_forward: // FIXME What is the forward button? publicButton = GLFW_MOUSE_BUTTON_4; break; case mir_pointer_button_back: // FIXME What is the back button? publicButton = GLFW_MOUSE_BUTTON_5; break; default: break; } oldButtonStates = newButtonStates; _glfwInputMouseClick(window, publicButton, pressed, publicMods); }