Zapping · ZVBIZapping Homepage

News | Download | Screenshots | Sourceforge | HelpHelp

Using a Remote Control

Zapping supports the LIRC (Linux Infrared Remote Control) infrastructure. Visit http://www.lirc.org for more information about LIRC. To use LIRC you must create a .lircrc file in your home directory. For each remote control button add an entry like these:

        begin
                prog   = zapping_lirc
                button = VOL_UP
                config = zapping.volume_incr(+5)
        end

        begin
                prog   = zapping_lirc
                button = 0
                config = SETCHANNEL 0
        end

        begin
                prog   = zapping_lirc
                button = 1
                config = SETCHANNEL 1
        end

        begin
                prog   = zapping_lirc
                button = 9
                config = SETCHANNEL 9
        end
prog
is the program interpreting the command and must be zapping_lirc.
button
is the name of the remote control button. Presumably with LIRC you installed /etc/lircd.conf, this file lists all available buttons.
config
is a Zapping command. Commands are listed on the Zapping Commands page.

Suppose your remote control has a TV/RADIO button and you want to switch between two layers of commands, much like Shift Lock switches between lower and upper case characters. This can be accomplished by embracing the entries above within a zapping_lirc section, and programming the TV/RADIO button to enable this section, "switch to this mode" in LIRC speak.

begin zapping_lirc
        begin
                button = TV/RADIO
                mode   = radio
        end

        Zapping entries …
end zapping_lirc

begin radio
        begin
                button = TV/RADIO
                mode   = zapping_lirc
        end

        Other entries …
end radio

Mode-independend entries …

Which mode will be initially selected? Well, none. But when you start Zapping it automatically switches to zapping_lirc mode, if such a section exists.

Warning! LIRC applications are supposed to cooperate by using .lircrc, but there is no way (or was, at the time the LIRC plugin was written) two applications can agree on the current mode, so they may both respond to a button press.

For further instructions please see the LIRC documentation.

Developer Notes

Editing a config file isn't exactly what users of Gnome app should have to do. By default Zapping should find out which model of RC the user has and automatically assign actions to each button. If that's not possible it should prompt the user with a list of known models. In any case actions must be editable, and zapping should provide a GUI which lists all buttons and their current action. That being either a simple description like "Go to next channel" from a list or menu, or a Python command for experienced users.

SETCHANNEL is particularly odd. We take for granted that all keyboards send the same key codes, at least for the standard keys. Why can't LIRC do that? Life would be easier if Zapping could handle number keys collectively.

Why do we have to store our configuration in .lircrc anyway? It would be easier to register modifiers like TV/RADIO with the lirc daemon, to synchronize clients, then filter button events and translate to actions ourselves.

Another issue: buttons may change their function depending on the Zapping mode Video, Teletext, EPG, Recording etc. SETCHANNEL could change semantics, but in the long run we probably need more LIRC modes.