Am 02.04.2011 12:23, schrieb Klaus Schmidinger:
> I could imagine accepting a patch that centralizes handling
> the sequence in which the color buttons are displayed, and
> offers a standard interface to skin plugins that allows
> them to arrange the color buttons accordingly.
> What I don't want to change is the actual functionality
> of the color buttons, meaning, for instance, the red button
> will always have the same functionality, no matter what sequence the
> remote control uses. 

There is no simple solution to this. The problem is, that in some cases
the meaning of the button is linked to their color ('red' means
recording), and in some cases the meaning is linked to the placement
(button 2 for backwards, 3 for forward).

Making the color <-> placement relation configurable will automatically
break one or the other. The only 'clean' solution would be to decide by
situation whether key assignment should be by-placement or by-color. So
for example, in replay the assignment is BUTTON_1=jump, BUTTON_2=skip
back, BUTTON_3=skip fwd, BUTTON_4=stop, while in EPG view, the
assignment is BUTTON_RED=record, BUTTON_GREEN=now, BUTTON_YELLOW=next,

Generally, the goal is to match the color order in the OSD with the
order on the remote, so the skins need to know the ordering. VDR
internally, the keys are called kRed, kGreen, kYellow, kBlue, their
meaning is obviously color related. So as long as the red button stays
the red button, it doesn't matter whether the skin displays the red
color button label on the left or right.

The most difficult question is, how to handle buttons by placement. A
eKeys key cannot be kRed and kButton1 at the same time. Any query
interface would break all the nice switch(Key) statements. (case
getColorOfButton1(): ... is not a constant.)

My suggestion would be to add pseudo keys kButton1..kButton4, that are
only transformed on demand:

switch (Key) {
case kRed: ....

case kButton1: ...

Also, there should be a wrapper for SetHelp() to set the button labels
by placement, so you either call SetHelp("Red", "Green", "Yellow",
"Blue"), or SetHelpByPlacement("Left", "Mid-Left", "Mid-Right", "Right").

Finally, some documentation will need rewrites, from green/yellow to
mid-left, mid-right color button to skip fwd/bwd.

All in all a lot of changes to do it properly...



PS: My remote has the color order red, green, yellow, blue, purple. ;)

vdr mailing list

Reply via email to