Lirc - inject driver - hidraw & SoundGraph iMON 2.4GHz LT/GT
I've had some troubles with the lirc (Linux Infrared Remote Control). I was using a SoundGraph iMON 2.4GHz LT, and then I upgraded (to squeeze I think) my system, suddenly the imon was taken my the kernel hid system, and I couldn't associate the remote. And building lirc from source didn't really work at the time, so I bought a Windows Media Center Remote Control. Unfortunately It appeared as both a mouse and a keyboard, setting up 2 remotes is annoying. So I thought: Why not just make a driver that just accepts ir-codes, and then a daemon that pushes keycodes from the remote into the lirc daemon.
Inject driver
The inject driver is an udp socket simply receiving 8 byte codes and using them as a ir-code.
The resulting patch was first posted to the lirc mailing list in late august 2011 (original post here). Nothing really has come of this. But I use it on a daily basis, So I've packed it as a debian package and put it in my repository.
hidraw - inject daemon
Given that the daemon now could accept udp literal ir-codes, then you could have several daemons injecting ir-codes into the system, eg. one for each hid device. I then wrote such a daemon and put in the repository under the name "lirc-hidraw-inject". You can run the daemon in the foreground with debug like this:
/usr/bin/lirc-hidraw --debug /dev/input/event15
Then you press a key and you get output like this:
INFO: 0000000400000003 INFO: 0000000400000003 INFO: 0000000000000003
imon - inject daemon
The SoundGraph iMON 2.4GHz LT/GT, is a small rf-based remote. It has a (IMO) a nice formfactor, and does not require line of sight to the dongle. Unfortunately it's discontinued. However as long as it works I'll keep using it.
I've botch together something that could associate the remote and use the inject driver to deliver keycodes. This is also in the repository under the name of "imon-2.4ghz"
Configuring
The important part is:
/etc/lirc/hardware.conf:
DRIVER="inject"
and /etc/lirc/lircd.conf:
begin remote name inject bits 64 repeat 250000 toggle_bit_mask 0x0 begin codes KEY_ZOOM 0x0000270004 KEY_T 0x00005A0004 end codes end remote
And just fill in the codes section with keys as defined in /usr/include/input.h with the output of the daemon with --debug