|
|
@ -16,35 +16,36 @@ EmuWindow_GLFW* EmuWindow_GLFW::GetEmuWindow(GLFWwindow* win) {
|
|
|
|
return static_cast<EmuWindow_GLFW*>(glfwGetWindowUserPointer(win));
|
|
|
|
return static_cast<EmuWindow_GLFW*>(glfwGetWindowUserPointer(win));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void EmuWindow_GLFW::OnMouseButtonEvent(GLFWwindow* window, int button, int action, int mods) {
|
|
|
|
void EmuWindow_GLFW::OnMouseButtonEvent(GLFWwindow* win, int button, int action, int mods) {
|
|
|
|
if (button == GLFW_MOUSE_BUTTON_LEFT) {
|
|
|
|
if (button == GLFW_MOUSE_BUTTON_LEFT) {
|
|
|
|
auto layout = GetEmuWindow(window)->GetFramebufferLayout();
|
|
|
|
auto emu_window = GetEmuWindow(win);
|
|
|
|
|
|
|
|
auto layout = emu_window->GetFramebufferLayout();
|
|
|
|
double x, y;
|
|
|
|
double x, y;
|
|
|
|
glfwGetCursorPos(window, &x, &y);
|
|
|
|
glfwGetCursorPos(win, &x, &y);
|
|
|
|
|
|
|
|
|
|
|
|
if (action == GLFW_PRESS) {
|
|
|
|
if (action == GLFW_PRESS) {
|
|
|
|
EmuWindow::TouchPressed(layout, static_cast<u16>(x), static_cast<u16>(y));
|
|
|
|
emu_window->TouchPressed(layout, static_cast<u16>(x), static_cast<u16>(y));
|
|
|
|
} else if (action == GLFW_RELEASE) {
|
|
|
|
} else if (action == GLFW_RELEASE) {
|
|
|
|
EmuWindow::TouchReleased(layout, static_cast<u16>(x), static_cast<u16>(y));
|
|
|
|
emu_window->TouchReleased(layout, static_cast<u16>(x), static_cast<u16>(y));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void EmuWindow_GLFW::OnCursorPosEvent(GLFWwindow* window, double x, double y) {
|
|
|
|
void EmuWindow_GLFW::OnCursorPosEvent(GLFWwindow* win, double x, double y) {
|
|
|
|
|
|
|
|
auto emu_window = GetEmuWindow(win);
|
|
|
|
auto layout = GetEmuWindow(window)->GetFramebufferLayout();
|
|
|
|
auto layout = emu_window->GetFramebufferLayout();
|
|
|
|
EmuWindow::TouchMoved(layout, static_cast<u16>(x), static_cast<u16>(y));
|
|
|
|
emu_window->TouchMoved(layout, static_cast<u16>(x), static_cast<u16>(y));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// Called by GLFW when a key event occurs
|
|
|
|
/// Called by GLFW when a key event occurs
|
|
|
|
void EmuWindow_GLFW::OnKeyEvent(GLFWwindow* win, int key, int scancode, int action, int mods) {
|
|
|
|
void EmuWindow_GLFW::OnKeyEvent(GLFWwindow* win, int key, int scancode, int action, int mods) {
|
|
|
|
|
|
|
|
auto emu_window = GetEmuWindow(win);
|
|
|
|
int keyboard_id = GetEmuWindow(win)->keyboard_id;
|
|
|
|
int keyboard_id = emu_window->keyboard_id;
|
|
|
|
|
|
|
|
|
|
|
|
if (action == GLFW_PRESS) {
|
|
|
|
if (action == GLFW_PRESS) {
|
|
|
|
EmuWindow::KeyPressed({key, keyboard_id});
|
|
|
|
emu_window->KeyPressed({key, keyboard_id});
|
|
|
|
} else if (action == GLFW_RELEASE) {
|
|
|
|
} else if (action == GLFW_RELEASE) {
|
|
|
|
EmuWindow::KeyReleased({key, keyboard_id});
|
|
|
|
emu_window->KeyReleased({ key, keyboard_id });
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Service::HID::PadUpdateComplete();
|
|
|
|
Service::HID::PadUpdateComplete();
|
|
|
|