                               WinampIR
                               ========

        Wrapper for the Irman IR device, with Winamp bindings

The Irman device (see http://www.evation.com/irman/ for details) is a
relatively inexpensive way to get remote control of your PC: it lets
you receive and process signals from a standard consumer remote
control, such as you probably have with your television. However,
while there are some code samples on Evation's web site, including a
Winamp plugin, it's not trivial to use from Windows programs. This
project started as an attempt to make the Irman easier to code with by
providing the Irman class. As an example of how it might be used, I've
also built a simple tray application which will forward remote key
presses to Winamp (it's also buildable as a Winamp plugin, but nowhere
near as sophisticated as the plugin available at Evation, but it's
just meant to show how to use the Irman class).

If you just want the application or plugin, then get the binary package:
otherwise, grab the source and get your mitts on the Irman and related
classes. Do with them what you please, though I'd appreciate a mention
if you're making any money out of them!

Brief instructions for the application: when you start it, you'll get
a tray icon (and possibly a warning that the COM port could not be
opened first time you use it). Generally the first thing you need to
do is configure it - clicking on the icon will pop up a menu and it
should be obvious what you select... The configuration dialog box lets
you specify which COM port to use, and then "train" the code to
recognise your remote: just click each button and then press the
remote key you want to correspond to it. If you get a failed report,
just try again. You can use the test facility to check that everything
went according to plan. Finally, when you close the configure menu
again, keys will be forwarded to Winamp if it's running. (This program
does not start up Winamp automatically, and in fact is not very
integrated with it.)

If you want to use the plugin instead, just copy the DLL into your
Winamp plugins directory, and it will be available when you next start
Winamp. Select the plugin and hit Winamp's configure button to train,
as above. The code works just the same, just more tightly knit into
Winamp - and there is no tray icon this time.

If you want to delve into the code: it's fairly well commented (in my
opinion anyway) though you could probably do with reading the MSDN
articles about overlapped/asynchronous I/O to get a quicker
understanding of what is going on. The source files are:

   irman.h/.cpp                  Irman control interface
   registry.h/.cpp               Registry interface
   winampmgr.h/.cpp              Winamp controller
   winamp.h                      Winamp supplied message definition set
   gen.h                         Winamp supplied plugin configuration
   main.cpp                      Main program
   common.h                      Stuff used everywhere
   resource.h                    Resource identifiers
   WinampIR.rc                   Resource file
   WinampIR.ico,WinampIRinv.ico  Tray icons
   WinampIR.dsp/.dsw             VC6 build files

Maybe some time I'll get round to putting more detail in this file...

Status and notes
================

This is freeware, and freely distributable - do with it whatever you like.

If you need to contact me, visit the BeesKnees software page at
http://www.beesknees.freeserve.co.uk/software (where you'll find any
updates and the source) - this address is also in the program's
version information.

History
=======

1.0.0.0      10th October 1999
   First release

1.0.1.0      12th October 1999
   Added ability to build as a Winamp plugin

1.0.2.0      15th October 1999
   Fixed recording initialisation and destructor memory leak
   Improved recognition for "inverting" remotes
