Skip to content

Commit 2009a42

Browse files
committed
VNC: modify mouse to add back button
1 parent 01b6aa2 commit 2009a42

File tree

6 files changed

+65
-30
lines changed

6 files changed

+65
-30
lines changed

ChangeLog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
## Change Log
22
### v0.0.33
33
- Remove donate bitcoin
4+
- VNC: modify mouse. add back button
45

56
### v0.0.32
67
- Fix player menu bug

ChangeLog_zh_CN.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
## 修改日志
22
### v0.0.33
33
- 移除捐赠比特币
4+
- VNC: 修改鼠标,增加后退按钮
45

56
### v0.0.32
67
- 修复播放器菜单错误

Plugins/LibVNCServer/Client/ConnectLibVNCServer.cpp

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010

1111
static Q_LOGGING_CATEGORY(log, "LibVNCServer.Connect")
1212
static Q_LOGGING_CATEGORY(logger, "LibVNCServer.Connect.log")
13+
static Q_LOGGING_CATEGORY(logKey, "LibVNCServer.Connect.Key")
14+
static Q_LOGGING_CATEGORY(logMouse, "LibVNCServer.Connect.Mouse")
1315

1416
const char* gThis = "This pointer";
1517
#define LOG_BUFFER_LENGTH 1024
@@ -572,16 +574,20 @@ void CConnectLibVNCServer::mousePressEvent(QMouseEvent *event)
572574
{
573575
if(!m_pClient) return;
574576
if(m_pParameter && m_pParameter->GetOnlyView()) return;
575-
//qDebug(log) << "CConnectLibVnc::slotMousePressEvent" << e->button() << e->buttons();
577+
576578
unsigned char mask = 0;
577579
if(event->button() & Qt::MouseButton::LeftButton)
578580
mask |= 0x1;
579581
if(event->button() & Qt::MouseButton::MiddleButton)
580582
mask |= 0x2;
581583
if(event->button() & Qt::MouseButton::RightButton)
582584
mask |= 0x4;
583-
585+
if(event->button() & Qt::MouseButton::BackButton)
586+
mask |= 0x80;
584587
QPoint pos = event->pos();
588+
589+
qDebug(logMouse) << Q_FUNC_INFO << event->buttons() << event->button() << pos << mask;
590+
585591
SendPointerEvent(m_pClient, pos.x(), pos.y(), mask);
586592
}
587593

@@ -591,12 +597,12 @@ void CConnectLibVNCServer::mouseReleaseEvent(QMouseEvent *event)
591597
if(m_pParameter && m_pParameter->GetOnlyView()) return;
592598
int mask = 0;
593599
QPoint pos = event->pos();
600+
qDebug(logMouse) << Q_FUNC_INFO << event->buttons() << event->button() << pos << mask;
594601
SendPointerEvent(m_pClient, pos.x(), pos.y(), mask);
595602
}
596603

597604
void CConnectLibVNCServer::mouseMoveEvent(QMouseEvent *event)
598605
{
599-
//qDebug(log) << "CConnectLibVnc::slotMouseMoveEvent" << buttons << pos;
600606
if(!m_pClient) return;
601607
if(m_pParameter && m_pParameter->GetOnlyView()) return;
602608
int mask = 0;
@@ -606,13 +612,16 @@ void CConnectLibVNCServer::mouseMoveEvent(QMouseEvent *event)
606612
mask |= 0x2;
607613
if(event->buttons() & Qt::MouseButton::RightButton)
608614
mask |= 0x4;
615+
if(event->buttons() & Qt::MouseButton::BackButton)
616+
mask |= 0x80;
609617
QPoint pos = event->pos();
618+
qDebug(logMouse) << Q_FUNC_INFO << event->buttons() << event->button() << pos << mask;
610619
SendPointerEvent(m_pClient, pos.x(), pos.y(), mask);
611620
}
612621

622+
// https://github.com/rfbproto/rfbproto/blob/master/rfbproto.rst#pointerevent
613623
void CConnectLibVNCServer::wheelEvent(QWheelEvent *event)
614624
{
615-
//qDebug(log) << "CConnectLibVnc::slotWheelEvent" << buttons << pos << angleDelta;
616625
if(!m_pClient) return;
617626
if(m_pParameter && m_pParameter->GetOnlyView()) return;
618627
int mask = 0;
@@ -622,7 +631,9 @@ void CConnectLibVNCServer::wheelEvent(QWheelEvent *event)
622631
mask |= 0x2;
623632
if(event->buttons() & Qt::MouseButton::RightButton)
624633
mask |= 0x4;
625-
634+
if(event->buttons() & Qt::MouseButton::BackButton)
635+
mask |= 0x80;
636+
626637
QPoint d = event->angleDelta();
627638
if(d.y() > 0)
628639
mask |= 0x8;
@@ -640,6 +651,8 @@ void CConnectLibVNCServer::wheelEvent(QWheelEvent *event)
640651
pos = event->pos();
641652
#endif
642653

654+
qDebug(logMouse) << Q_FUNC_INFO << event->buttons() << event->angleDelta() << pos;
655+
643656
SendPointerEvent(m_pClient, pos.x(), pos.y(), mask);
644657
}
645658

@@ -914,6 +927,7 @@ void CConnectLibVNCServer::keyPressEvent(QKeyEvent *event)
914927
if (event->modifiers() & Qt::ShiftModifier)
915928
modifier = true;
916929
uint32_t k = TranslateRfbKey(event->key(), modifier);
930+
qDebug(logKey) << Q_FUNC_INFO << event << k << modifier;
917931
SendKeyEvent(m_pClient, k, TRUE);
918932
}
919933

@@ -925,6 +939,7 @@ void CConnectLibVNCServer::keyReleaseEvent(QKeyEvent *event)
925939
if (event->modifiers() & Qt::ShiftModifier)
926940
modifier = true;
927941
uint32_t k = TranslateRfbKey(event->key(), modifier);
942+
qDebug(logKey) << Q_FUNC_INFO << event << k << modifier;
928943
SendKeyEvent(m_pClient, k, FALSE);
929944
}
930945

Plugins/TigerVnc/Client/ConnectVnc.cpp

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,9 @@
5555

5656
static Q_LOGGING_CATEGORY(log, "VNC.Connect")
5757
static Q_LOGGING_CATEGORY(logVNC, "VNC.Log")
58-
58+
static Q_LOGGING_CATEGORY(logKey, "VNC.Connect.Key")
59+
static Q_LOGGING_CATEGORY(logMouse, "VNC.Connect.Mouse")
60+
5961
class VncLogger: public rfb::Logger
6062
{
6163
public:
@@ -799,20 +801,21 @@ void CConnectVnc::mousePressEvent(QMouseEvent *event)
799801
if(!writer()) return;
800802
if(m_pPara && m_pPara->GetOnlyView()) return;
801803

802-
unsigned char mask = 0;
804+
uint8_t mask = 0;
803805
if(event->button() & Qt::MouseButton::LeftButton)
804806
mask |= 0x1;
805807
if(event->button() & Qt::MouseButton::MiddleButton)
806808
mask |= 0x2;
807809
if(event->button() & Qt::MouseButton::RightButton)
808810
mask |= 0x4;
809-
811+
if(event->button() & Qt::MouseButton::BackButton)
812+
mask |= 0x80;
813+
810814
QPoint pos = event->pos();
811815
rfb::Point p(pos.x(), pos.y());
812816

813-
/*
814-
qDebug(log) << "CConnectVnc::slotMousePressEvent buttons:"
815-
<< event->buttons() << event->button() << pos << mask;//*/
817+
qDebug(logMouse) << Q_FUNC_INFO << event->buttons() << event->button() << pos << mask;
818+
816819
try{
817820
writer()->writePointerEvent(p, mask);
818821
} catch (rdr::Exception& e) {
@@ -824,12 +827,10 @@ void CConnectVnc::mouseReleaseEvent(QMouseEvent *event)
824827
{
825828
if(!writer()) return;
826829
if(m_pPara && m_pPara->GetOnlyView()) return;
827-
int mask = 0;
830+
uint8_t mask = 0;
828831
QPoint pos = event->pos();
829832
rfb::Point p(pos.x(), pos.y());
830-
/*
831-
qDebug(log) << "CConnectVnc::slotMouseReleaseEvent buttons:"
832-
<< event->buttons() << event->button() << pos << mask;//*/
833+
qDebug(logMouse) << Q_FUNC_INFO << event->buttons() << event->button() << pos << mask;
833834
try{
834835
writer()->writePointerEvent(p, mask);
835836
} catch (rdr::Exception& e) {
@@ -841,18 +842,21 @@ void CConnectVnc::mouseMoveEvent(QMouseEvent *event)
841842
{
842843
if(!writer()) return;
843844
if(m_pPara && m_pPara->GetOnlyView()) return;
844-
int mask = 0;
845+
845846
QPoint pos = event->pos();
846847
rfb::Point p(pos.x(), pos.y());
848+
uint8_t mask = 0;
847849
if(event->buttons() & Qt::MouseButton::LeftButton)
848850
mask |= 0x1;
849851
if(event->buttons() & Qt::MouseButton::MiddleButton)
850852
mask |= 0x2;
851853
if(event->buttons() & Qt::MouseButton::RightButton)
852854
mask |= 0x4;
853-
/*
854-
qDebug(log) << "CConnectVnc::slotMouseMoveEvent buttons:"
855-
<< event->buttons() << event->button() << pos << mask;//*/
855+
if(event->buttons() & Qt::MouseButton::BackButton)
856+
mask |= 0x80;
857+
858+
qDebug(logMouse) << Q_FUNC_INFO << event->buttons() << event->button() << pos << mask;
859+
856860
try{
857861
writer()->writePointerEvent(p, mask);
858862
} catch (rdr::Exception& e) {
@@ -863,19 +867,17 @@ void CConnectVnc::mouseMoveEvent(QMouseEvent *event)
863867
// https://github.com/rfbproto/rfbproto/blob/master/rfbproto.rst#pointerevent
864868
void CConnectVnc::wheelEvent(QWheelEvent *event)
865869
{
866-
/*
867-
qDebug(log) << "CConnectVnc::slotWheelEvent buttons:"
868-
<< event->buttons() << event->angleDelta() << pos;//*/
869870
if(!writer()) return;
870871
if(m_pPara && m_pPara->GetOnlyView()) return;
871-
int mask = 0;
872-
872+
uint8_t mask = 0;
873873
if(event->buttons() & Qt::MouseButton::LeftButton)
874874
mask |= 0x1;
875875
if(event->buttons() & Qt::MouseButton::MiddleButton)
876876
mask |= 0x2;
877877
if(event->buttons() & Qt::MouseButton::RightButton)
878878
mask |= 0x4;
879+
if(event->buttons() & Qt::MouseButton::BackButton)
880+
mask |= 0x80;
879881

880882
QPoint d = event->angleDelta();
881883
if(d.y() > 0)
@@ -895,6 +897,12 @@ void CConnectVnc::wheelEvent(QWheelEvent *event)
895897
#endif
896898

897899
rfb::Point p(pos.x(), pos.y());
900+
//*
901+
qDebug(logMouse) << Q_FUNC_INFO << event->buttons()
902+
#if QT_VERSION > QT_VERSION_CHECK(6, 0, 0)
903+
<< event->button()
904+
#endif
905+
<< pos << mask; //*/
898906

899907
try{
900908
writer()->writePointerEvent(p, mask);
@@ -910,15 +918,15 @@ void CConnectVnc::keyPressEvent(QKeyEvent *event)
910918
bool modifier = false;
911919
if (event->modifiers() & Qt::ShiftModifier)
912920
modifier = true;
913-
//qDebug(log) << "slotKeyPressEvent key:" << key << modifiers;
921+
914922
uint32_t k = TranslateRfbKey(event->key(), modifier);
915-
923+
qDebug(logKey) << Q_FUNC_INFO << event << k << modifier;
924+
916925
try{
917926
writer()->writeKeyEvent(k, 0, true);
918927
} catch (rdr::Exception& e) {
919928
emit sigError(-1, e.str());
920929
}
921-
922930
}
923931

924932
void CConnectVnc::keyReleaseEvent(QKeyEvent *event)
@@ -928,15 +936,15 @@ void CConnectVnc::keyReleaseEvent(QKeyEvent *event)
928936
bool modifier = false;
929937
if (event->modifiers() & Qt::ShiftModifier)
930938
modifier = true;
931-
//qDebug(log) << "slotKeyReleaseEvent key:" << key << modifiers;
939+
932940
uint32_t k = TranslateRfbKey(event->key(), modifier);
933-
941+
qDebug(logKey) << Q_FUNC_INFO << event << k << modifier;
942+
934943
try{
935944
writer()->writeKeyEvent(k, 0, false);
936945
} catch (rdr::Exception& e) {
937946
emit sigError(-1, e.str());
938947
}
939-
940948
}
941949

942950
QString CConnectVnc::ConnectInformation()

etc/RabbitRemoteControl_logqt.ini

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ Client.Connect.Desktop.Mouse=false
5050
Client.FrmViewer.Key=false
5151
Client.FrmViewer.Mouse=false
5252

53+
VNC.Connect.Key=false
54+
VNC.Connect.Mouse=false
55+
LibVNCServer.Connect.Key=false
56+
LibVNCServer.Connect.Mouse=false
57+
5358
;FreeRDP*=true
5459
;FreeRDP.Log.*=false
5560
;FreeRDP.Log.debug=true

etc/RabbitRemoteControl_logqt_debug.ini

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ Client.Connect.Desktop.Mouse=false
5050
Client.FrmViewer.Key=false
5151
Client.FrmViewer.Mouse=false
5252

53+
VNC.Connect.Key=false
54+
VNC.Connect.Mouse=false
55+
LibVNCServer.Connect.Key=false
56+
LibVNCServer.Connect.Mouse=false
57+
5358
;FreeRDP*=true
5459
;FreeRDP.Log=true
5560
;FreeRDP.Log.debug=true

0 commit comments

Comments
 (0)