Firstly, I ask to forgive me for my terrible english.
I wish you understood me enough to use this utility. :-))

The story:

Some time ago I bought a TV-tuner for PC.
It was equipped with an infrared remote control unit,
but the software hardly allowed to control even 
the TV-card.

However my plans on the RC unit were much more extended.
So I developed this tiny program to allow myself to
control all the computer by means of one small remote
control unit.

This program has a real 32bit code, it places its icon
onto the notify tray in the task bar. So it surely will 
not run under Windows 3.x.
The compatibility with Windows NT was not tested yet.

All commands to be recognized should be placed into
RC.INI file.
To start the program run the RC.EXE file.

The syntax of RC.INI is following (the copy of the syntax
rules you can find also in the original RC.INI file)

I am not sure that this program will be compatible with any
available RC units for PC, but I have tested as much as 
three different TV-cards with remote controls, and they
worked pretty fine (with the least changes in the INI file).

Enjoy!
Sincerely yours,
V.Belavin
http://www.geocities.com/SiliconValley/Peaks/6314
e-mail: vabel@geocities.com


Any notes or bug reports are welcome...
See appendices for program details.



APPENDIX A:
RC.INI file syntax:

[Section]
commands
...
[Section]
commands
...
[Section]
commands
...

The lines may start with the folowing symbols (the details see later):

!	:comment
[	:start of section (the line must be finished with the ']' symbol)
key	:the word key and the number - command
<	:the command's alias
#	:the definition of the alias
Any lines starting with the other symbols
	:ignored. It is advisable to use ! as the first symbol in the
	 lines which definitely must be ignored, since the set
	 of reserved function may vary in the future versions.


[] 	:(empty section) the global commands, used when no particular
	 command for the active window is found

[WinTitleOrClassName]
	:commands for the window with the specified in the section
	 name title or window class name

keyX (comment) = CmdString ? CmdComment 
	:command for the RC unit button # X (f.ex. key3 or key 11...)
	 (X is a decimal number). CmdString format see later.
	 Comment is a comment for keyX (not used by the program)
	 CmdComment is a comment for the command. Can be shown
	 in the test mode.

#X = KEYNAME 
	:definition of an alias for keyX after the definition you can use
	 <KEYNAME> everywhere instead if keyX (X is a decimal number)

<KEYNAME> (comment) = ...
	:the same as keyX (comment) = ...

CmdString format: 
*KEY 	:KEY is always uppercase (except the alphanumeric characters)
	 f.ex.: *ESC, *ALT, *0, *z, *Z, etc...
	 asterisk before the KEY means the key would be 
	 pressed and released
+KEY 
	:plus sign before the KEY means the key would be only pressed
-KEY
	:minus sign before the KEY means the key would be only released

Dkeycode
	:the key with hex virtual key code 'keycode' 
	 would be pressed
dkeycode
	:the key with decimal virtual key code 'keycode' 
	 would be pressed
Ukeycode
	:the key with hex virtual key code 'keycode' 
	 would be released
ukeycode
	:the key with decimal virtual key code 'keycode' 
	 would be released

!cmd
	:the WM_COMMAND message would be sent to the window
	 with WPARAM set to 'cmd' (decimal)
#code
	:the WM_COMMAND message would be sent to the window
	 with WPARAM set to 'cmd' (hex)

M	:maximize/restore the window (immitate the mouse double-click 
	 in the center of the window title bar)

A	:show the general program's menu, containing all commands
	 for the active window and many other options
	 (you can define more commands than the number of buttons
	 at your RC unit. the rest of commands will then be
	 available through the menu)
	 - a very useful feature :-))

{APP|TITLE}
	:the application 'APP' would be loaded and if succeded
	 wait until the window with the title or window class
	 name 'TITLE' is created. If |TITLE is not specified the
	 application is executed and nothing more would be done.

|	:the delimiter (insert it between the commands in the
	 complex command string)

?	:the comment for the command (everything until the end of line)


WHEN CHANGED THE CONTENTS OF THE RC.INI FILE,
DO NOT FORGET TO RELOAD COMMANDS FROM RC POPUP MENU.


APPENDIX B:
How to work:

Left-click the RC icon on the notify tray, to bring up the main 
part of the commands popup menu (see also "A" command string)
(some items useful only during remote controlling are removed here).

Right-click the RC icon on the notify tray, to bring 
up the setup popup menu. The items of that are discussed below.

TEST/COMMAND MODE:
	allows you to determine the active window
	class name as well as RC buttons IDs.
	Select Test Mode, then when you press a
	button on your RC, an Message box appears
	showing the button #, the command sequence
	to be executed in the command mode, the
	title of the active window and the name
	of the window class).
	You can use this info to set up your INI file.

COMMANDS INFO:
	Brings a message box, containing all commands
	available for the active window.

EDIT COMMANDS:
	Opens RC.INI file in notepad (or other default
	INI file editor).

RELOAD COMMANDS:
	You should reload commands after any changes made
	in RC.INI file.
	I suppose the INI file edotor will be integrated
	into some future versions, but it necessarily
	will increase the size of program.

I think the interface is not very difficult, so come on!
