I'm sure everyone that uses their computer as a TV or DVD player ocassionally pines for a convenient remote control to use. Being the thrifty (cheap?) sort I person that I am, I opted not to buy one of the fancy TV capture cards that come with a remote, so until now I've been anchored to the keyboard to rewind, fast-forward, change volume, etc. One day I had a bright idea: my Zaurus is wireless. It can access the network. So what's to stop me from using it as a remote control? After some basic investigation of how Linux already handles remote controls, I discovered the answer was "not much." Hardware wise, all you need is a PDA with wireless access, and some kind of wireless network connection for the PC. In my case, I used my Zaurus running the OZ 3.5.1 image. As such, I wrote the remote-control (client) app in Python for QT/E. There's no reason somebody couldn't write an app for any any other handheld platform (and I'd be glad to do it myself given some free hardware to develop on).
The system is made up of two parts: a client application that runs on the handheld, and a server application that runs on the PC. These two programs communicate via the wireless network; there is no fooling with specialized IR hardware and the range limitation inherent therein. The client program is extremely elementary; in the program I wrote, it merely presents 12 buttons on the touch screen that correspond to common functions like volume +/-, channel +/-, rewind, fast forward, etc. The server side of the program is where the real genuis is. Linux already has fairly extensive support for using IR remotes to control a Linux box. This has severals downsides; however. One, you have to have an IR reciever for the PC; two, you are limited by the range of the IR remote; and three, you are stuck with the layout and functionality of whatever remote control you possess. The major advantage of the current IR subsystem is that many multimedia applications already interface with it: MythTV, mplayer, and xine to name a few. My server program emulates the lircd daemon (i.e., the program that relays IR commands from the remote to the application), taking commands from the over the network and sending them via the conventional IR pathway. This allows the setup to leverage all the existing applications that support IR control.
So, where's the beef? These are the four files needed to configure a working setup. The first two files are the python programs that implement the client and server halves of the system. helper.sh is a shell script that does convenient things like start mythtv, irxevent, and other helper programs. It should also disable the screensaver while mythtv is running. The last file is the .lircrc, the file which defines the buttons and commands for the various applications. It should work verbatim for MythTV, mplayer, and xine. Other applications may require modifications.