[vdr] VDR 1.3.38: menu key no longer works
Klaus Schmidinger
Klaus.Schmidinger at cadsoft.de
Sun Jan 8 18:25:09 CET 2006
Peter Bieringer wrote:
> Klaus Schmidinger wrote:
>
>>Are you sure about that?
>>64 bit are 8 byte, and 5 ReadKey() calls should only result in
>>5 * 8 = 40 bit.
>>
>>Klaus
>>
>>
>>>cKbdRemote::ReadKeySequence: r=1 k=1b key1=0
>>>cKbdRemote::ReadKeySequence: r=2 k=1b5b key1=0
>>>cKbdRemote::ReadKeySequence: r=3 k=1b5b32 key1=0
>>>cKbdRemote::ReadKeySequence: r=4 k=1b5b3232 key1=0
>>>cKbdRemote::ReadKeySequence: r=5 k=5b323234 key1=1b
>>>cKbdRemote::ReadKeySequence: r=5 k=5b323234
>
>
> Tracked more down
>
> remote.conf contains:
>
> KBD.Menu 0000001B5B32347E
>
> which works in 1.3.37
>
> In 1.3.38, trailing 7E is missing because of while loop.
>
> After fixing this temporary I still get "32" twice here:
>
> cKbdRemote::ReadKeySequence: r=1 key1=1b
> cKbdRemote::ReadKeySequence: r=1 k=000000000000001b
> cKbdRemote::ReadKeySequence: r=2 key1=5b
> cKbdRemote::ReadKeySequence: r=2 k=0000000000001b5b
> cKbdRemote::ReadKeySequence: r=3 key1=32
> cKbdRemote::ReadKeySequence: r=3 k=00000000001b5b32
> cKbdRemote::ReadKeySequence: r=4 key1=32
> cKbdRemote::ReadKeySequence: r=4 k=000000001b5b3232
> cKbdRemote::ReadKeySequence: r=5 key1=34
> cKbdRemote::ReadKeySequence: r=5 k=000000005b323234
> cKbdRemote::ReadKeySequence: r=5 k=000000003232347e
Could there be someting wrong with your printf statement?
Looks like the upper 32 bit are cut off. You need to use
an format like "%016LX" (capital 'L').
> There is a logical bug in the code, the key after "5b" will be added
> twice, following will proper work:
>
> switch (key1) {
> case 0x31 ... 0x3F: // more-byte sequence
> do {
> if ((key1 = ReadKey()) < 0)
> break; // Sequence ends here
> k <<= 8;
> k |= key1 & 0xFF;
> } while (key1 != 0x7E);
> break;
> }
> }
It would have worked just as well, since it always returns
the same code for a given key, but of course you're absolutely
right, that byte should be stored only once.
> But there is still a strangeness, F1 to F5 now report single key code,
> while from F6, 5 key code is reported.
Here I have
KBD.Red 00000000001B4F50
KBD.Green 00000000001B4F51
KBD.Yellow 00000000001B4F52
KBD.Blue 00000000001B4F53
I guess we also need to adjust KbdMap[] in remote.c to account
for the 0x7E that's no longer stored.
Or should we rather actually store the 0x7E as part of the key code?
After all, it _is_ part of it...
I tend to do the latter.
Klaus
More information about the vdr
mailing list