From df65f4a2f142fa6759d88cdca125ddef63ade65a Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 8 Jan 2006 17:17:20 +0100 Subject: [PATCH] Fixed handling "more than 3 byte" key sequences in cKbdRemote::ReadKeySequence() --- CONTRIBUTORS | 1 + HISTORY | 4 ++++ remote.c | 14 +++++++------- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index d85f4aa3..95813b4c 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -943,6 +943,7 @@ Peter Bieringer for suggesting to implement the command line option '--vfat' for reporting a leftover 'summary.vdr' in vdr.5 for adding more error messages and line numbers when reading EPG data and info.vdr + for fixing handling "more than 3 byte" key sequences in cKbdRemote::ReadKeySequence() Alexander Damhuis for reporting problems when deleting a timer that is currently recording diff --git a/HISTORY b/HISTORY index 12a35698..27a95ab1 100644 --- a/HISTORY +++ b/HISTORY @@ -4143,3 +4143,7 @@ Video Disk Recorder Revision History - Added a missing #include to thread.c (thanks to Ville Skyttä). - Fixed the "plugins-clean" and "plugins-install" targets in the Makefile (thanks to Andreas Brachold). +- Fixed handling "more than 3 byte" key sequences in cKbdRemote::ReadKeySequence() + (thanks to Peter Bieringer). If you are using the PC keyboard as remote control + input you may need to make VDR newly learn the keys by removing the remote.conf + file. diff --git a/remote.c b/remote.c index a59ecfe8..73f96dda 100644 --- a/remote.c +++ b/remote.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: remote.c 1.46 2006/01/01 14:21:07 kls Exp $ + * $Id: remote.c 1.47 2006/01/08 17:13:18 kls Exp $ */ #include "remote.h" @@ -301,12 +301,12 @@ uint64 cKbdRemote::ReadKeySequence(void) k |= key1 & 0xFF; switch (key1) { case 0x31 ... 0x3F: // more-byte sequence - while (key1 != 0x7E) { - k <<= 8; - k |= key1 & 0xFF; - if ((key1 = ReadKey()) < 0) - break; // Sequence ends here - } + do { + if ((key1 = ReadKey()) < 0) + break; // Sequence ends here + k <<= 8; + k |= key1 & 0xFF; + } while (key1 != 0x7E); break; } }