[Kde-hardware-devel] Data format for RemoteControl events
Michael Zanetti
michael_zanetti at gmx.net
Sat Sep 12 12:51:37 CEST 2009
No ideas, anyone?
Michael
On Wednesday 09 September 2009 22:40:13 Michael Zanetti wrote:
> Hi all,
>
> As some of you may know I'm currently working on a remote control
> integration for solid with a lirc backend. Now I have a problem regarding
> the api.
>
> Until now, lirc remote control keypresses are represented as a free-form
> string containing the button name. The button names are defined in
> lircd.conf and for this they vary from remote to remote and from system to
> system.
>
> As you can immagine this makes it really hard for application developers to
> work with remotes because you need a place where you can map those free
> form strings to functions.
>
> It would be very nice to have a set of defined buttons an app developer can
> work with. For example a slideshow tool could just connect to the
> buttonPressed(event) signal and process it like:
>
> switch(event->id()){
> case Left:
> showPrevious();
> break;
> case Right:
> showNext();
> break;
> }
>
> Well, the lirc and ubuntu guys have also recognized this problem and have
> created something called "namespace". This is a defined set of button names
> that tries to stay as near as possible to linux/input.h. [1] Currently
> about 60% of lirc remotes are converted and work is going on.
>
> In my opinion it would be a good idea to adapt this. On the other hand, I
> would like to stay compatible to backends not having defined button names.
>
> This means I'd need something like the following:
>
> class RemoteControlEvent
> {
> public:
> enum ButtonID {Play, Pause ... Stop, Invalid};
>
> RemoteControlEvent(const QString &buttonName);
> RemoteControlEvent(ButtonID);
>
> ButtonID id();
> QString name();
> QString translatedName();
> };
>
> If the event is created using the QString c'tor it would set the ID to
> ButtonID::Invalid and indicating the app developer that this isn't a button
> defined in the namespace. He can use the free-form string or just ignore
> it.
>
> If the event is created using the ButtonID c'tor, the id would be set
> accordingly and the name would be set to a nice human readable name of the
> button. Also, the perhas a translated name would be of interest if the
> developer would like to show it in a ui.
>
> However, the lirc namespace contains already about 400 button ids... This
> is quite a lot and im in daubt if my approach is really the best in this
> situation. It would require a 400-entries containing enum and some 400
> entries containing switch statement for the names and translations...
> Also, this wouldn't be very nice to maintain...
>
> Is there a better way or perhaps already a KDE way of dealing with such
> problems?
>
> What do you think about the situation? Thanks for all your input.
>
> Cheers,
> Michael
>
> [1] https://wiki.ubuntu.com/RemoteControls (Section Lirc Signal Naming)
> _______________________________________________
> Kde-hardware-devel mailing list
> Kde-hardware-devel at kde.org
> https://mail.kde.org/mailman/listinfo/kde-hardware-devel
>
More information about the Kde-hardware-devel
mailing list