From fe1e3835f8f5a46bcc9c9b2f3d5e558f6c15dfb2 Mon Sep 17 00:00:00 2001 From: 3kinox <42655690+3kinox@users.noreply.github.com> Date: Sun, 16 Feb 2020 17:59:09 +0100 Subject: [PATCH] Use Mouse Click for Touchpad Button in GUI (#167) --- gui/include/streamsession.h | 2 ++ gui/include/streamwindow.h | 2 ++ gui/src/streamsession.cpp | 9 +++++++++ gui/src/streamwindow.cpp | 12 ++++++++++++ 4 files changed, 25 insertions(+) diff --git a/gui/include/streamsession.h b/gui/include/streamsession.h index a6ca741..721270b 100644 --- a/gui/include/streamsession.h +++ b/gui/include/streamsession.h @@ -28,6 +28,7 @@ #include #include +#include #if CHIAKI_GUI_ENABLE_QT_GAMEPAD class QGamepad; @@ -105,6 +106,7 @@ class StreamSession : public QObject VideoDecoder *GetVideoDecoder() { return &video_decoder; } void HandleKeyboardEvent(QKeyEvent *event); + void HandleMouseEvent(QMouseEvent *event); signals: void CurrentImageUpdated(); diff --git a/gui/include/streamwindow.h b/gui/include/streamwindow.h index 5e67e6e..3e664bc 100644 --- a/gui/include/streamwindow.h +++ b/gui/include/streamwindow.h @@ -44,6 +44,8 @@ class StreamWindow: public QMainWindow void keyPressEvent(QKeyEvent *event) override; void keyReleaseEvent(QKeyEvent *event) override; void closeEvent(QCloseEvent *event) override; + void mousePressEvent(QMouseEvent *event) override; + void mouseReleaseEvent(QMouseEvent *event) override; private slots: void SessionQuit(ChiakiQuitReason reason, const QString &reason_str); diff --git a/gui/src/streamsession.cpp b/gui/src/streamsession.cpp index 2b4eafa..e4edf59 100644 --- a/gui/src/streamsession.cpp +++ b/gui/src/streamsession.cpp @@ -141,6 +141,15 @@ void StreamSession::SetLoginPIN(const QString &pin) chiaki_session_set_login_pin(&session, (const uint8_t *)data.constData(), data.size()); } +void StreamSession::HandleMouseEvent(QMouseEvent *event) +{ + if(event->type() == QEvent::MouseButtonPress) + keyboard_state.buttons |= CHIAKI_CONTROLLER_BUTTON_TOUCHPAD; + else + keyboard_state.buttons &= ~CHIAKI_CONTROLLER_BUTTON_TOUCHPAD; + SendFeedbackState(); +} + void StreamSession::HandleKeyboardEvent(QKeyEvent *event) { uint64_t button_mask; diff --git a/gui/src/streamwindow.cpp b/gui/src/streamwindow.cpp index cfddbda..91ae8b0 100644 --- a/gui/src/streamwindow.cpp +++ b/gui/src/streamwindow.cpp @@ -86,6 +86,18 @@ void StreamWindow::keyReleaseEvent(QKeyEvent *event) session->HandleKeyboardEvent(event); } +void StreamWindow::mousePressEvent(QMouseEvent *event) +{ + if(session) + session->HandleMouseEvent(event); +} + +void StreamWindow::mouseReleaseEvent(QMouseEvent *event) +{ + if(session) + session->HandleMouseEvent(event); +} + void StreamWindow::closeEvent(QCloseEvent *) { if(session)