diff options
-rw-r--r-- | osdworker.c | 11 | ||||
-rw-r--r-- | remote.c | 3 | ||||
-rw-r--r-- | remote.h | 2 |
3 files changed, 9 insertions, 7 deletions
diff --git a/osdworker.c b/osdworker.c index 37c3037..2d8769b 100644 --- a/osdworker.c +++ b/osdworker.c @@ -533,15 +533,14 @@ void cOSDWorker::HandleClientRequests(cTBSelect *select) dsyslog("[ffnetdev] VNC: KeyEvent\n"); cMyRemote *pRemote; if ((pRemote = m_pPlugin->GetRemote()) != NULL) { - if (msg.ke.down) - pRemote->Put(Swap32IfLE(msg.ke.key), false, false); - else - pRemote->Put(Swap32IfLE(msg.ke.key), false, true); + pRemote->Put(Swap32IfLE(msg.ke.key), false, !msg.ke.down); } #ifdef DEBUG - fprintf(stderr, "[ffnetdev] VNC: Remote: %04X\n", msg.ke.key); + fprintf(stderr, "[ffnetdev] VNC: Remote: %04X %s\n", msg.ke.key, + msg.ke.down ? "down" : "up"); #endif - dsyslog("[ffnetdev] VNC: Remote: %04X\n", msg.ke.key); + dsyslog("[ffnetdev] VNC: Remote: %04X %s\n", msg.ke.key, + msg.ke.down ? "down" : "up"); break; case rfbPointerEvent: if (!RFBRead( ((char*)&msg.pe)+1, sz_rfbPointerEventMsg-1)) return; @@ -29,6 +29,9 @@ bool cMyRemote::Initialize(void) bool cMyRemote::Put(uint64 Code, bool Repeat, bool Release) { + if ((cRemote::IsLearning()) && (Release)) + return false; + else return cRemote::Put(Code, Repeat ,Release); } @@ -17,7 +17,7 @@ public: cMyRemote(const char *Name); virtual bool Initialize(void); virtual bool Ready(void); - virtual bool Put(uint64 Code, bool Repeat = false, bool Release = false); + virtual bool Put(uint64 Code, bool Repeat, bool Release); }; |