Marko M?kel? wrote: > On Sun, Apr 09, 2006 at 10:38:06PM +0300, Marko M?kel? wrote: > >>For instance, when I start editing the string "Euronews" by pressing the Right >>button in the "Edit timer" menu, it will display as follows: >> >>Right-> >> [E]uronews >>2-> >> [A]uronews >>2-> >> Au[a]onews >> >>If I keep a longer pause between the two keypresses of the button "2", >>the string will change to "Aaronews". > > > This is because my RCU (the new Hauppauge RCU) erroneously will not flip > the RC5 toggle bit when the button is pressed in rapid succession. > Also, the unpatched cx88-input.c in Linux 2.6.x (where 12<=x<=16) would > map rapidly arriving key-press events to key-repeat. > > The fix is simple: > > --- menuitems.c.orig 2006-04-22 18:51:36.000000000 +0300 > +++ menuitems.c 2006-04-22 19:04:00.000000000 +0300 > @@ -351,7 +351,7 @@ char cMenuEditStrItem::Inc(char c, bool > > eOSState cMenuEditStrItem::ProcessKey(eKeys Key) > { > - bool SameKey = Key == lastKey; > + bool SameKey = !((Key ^ lastKey) & ~k_Repeat); > if (Key != kNone) > lastKey = Key; > else if (!newchar && k0 <= NORMALKEY(lastKey) && NORMALKEY(lastKey) <= k9 && autoAdvanceTimeout.TimedOut()) { > @@ -460,7 +460,7 @@ eOSState cMenuEditStrItem::ProcessKey(eK > } > if (!currentChar || !*currentChar || *currentChar == '\t') { > // find the beginning of the character map entry for Key- int n = Key - k0; > + int n = NORMALKEY(Key) - k0; > currentChar = charMap; > while (n > 0 && *currentChar) { > if (*currentChar++ == '\t') > > Without the second patch, the k0..k9|k_Repeat event would be ignored when > *currentChar=='\t' is reached. Can you please try the attached, slightly modified version of this patch? It avoids the rather complex "xor" expression and also some extra NORMALKEY(). Klaus -------------- next part -------------- A non-text attachment was scrubbed... Name: vdr-1.3.47-ignorerepeat.diff Type: text/x-patch Size: 1044 bytes Desc: not available Url : http://www.linuxtv.org/pipermail/vdr/attachments/20060423/ccd7717d/vdr-1.3.47-ignorerepeat.bin