I have just uploaded a new snapshot to:
It contains changes for kernel version 2.6.14. This mainly affects USB
drivers. The changes are currently untested. Please test this release
even when you are not using 2.6.14.
You will probably ask yourself why I changed the version to 0.8.0.
The mentioned changes of course are not the reason.
Included in this release is for the first time a new program:
Very similar to the lirccd introduced by Fredrik Tolf this program is
intended to synchronise the mode, that LIRC clients are in.
Previously clients like irexec or irxevent could end up in different
.lircrc modes depending on when they have been started. This problem now
has been solved by introducing lirc_clientd whose only task it is to
maintain the state for all client programs.
There have been a lot of changes to the lirc_client library to make this
concept transparent for the clients, so no changes have been necessary
If you just install the new version, you will probably notice, that...
well, nothing has changed (at least unless I have introduced a bug with
the new implementation).
You have to enable the new lirc_clientd handling explicitly in your
.lircrc config file. This is done by placing the following line at the
top of your config file:
Such a line called sha-bang usally tells the shell which program must be
invoced to parse a certain script. If you make your config file
executable using chmod, you can even "start" your config by just
callling it from the shell:
"~/.lircrc" will have the same effect as calling
But of course this is just a gimmick not really necessary. The sha-bang
line is necessary for a different reason.
With the new lirc_client library the following will happen when you
start a client like irexec that uses a .lircrc file:
The lirc_client library will check for the sha-bang line when reading
the config file. If it does not find any, it will simply use
compatibility mode and will (should) behave exactly like previous
versions. But if the line is there it will start the given program
(lirc_clientd in this case) and will connect to it using a Unix domain
socket. If the lirc_clientd program already is running it will connect
to it using the socket without starting it first. If you start clients
like irexec and irxevent (with the same config file), eventually all
clients should be connected to the same instance of lirc_clientd.
lirc_clientd will handle and maintain the state (including the current
mode) for all programs that connect to it and will communicate with them
using the socket.
Using the sha-bang line will enable you to write your own version of a
lirc_clientd-like program. If you do this you are free to use your own
configuration format different to the .lircrc format. All that you need
to make sure is to put the path of your client daemon into the sha-bang
line. Parsing of the config file is only done in the client daemon and
will not be done by the clients or the lirc_client library.
In short, here are the advantages of the concept:
- 100% backwards compatible, no client and no config file will have to
be changed (unless you want to use the new features)
- support for multiple different .lircrc files
- support for custom file formats and lirc_client daemons
- mode will now be always in sync for all LIRC clients