RM-X General Purpose Control

From Wikipedia, the free encyclopedia

RM-X General Purpose Control
RM-X General Purpose Control icon/logo
RM-X Configuration Screenshot
RM-X Configuration Screenshot
Maintainer: Darkain
Stable release: 1.2  (February 17, 2006) [+/-]
Preview release: 1.3  (November 29, 2006) [+/-]
OS: Windows
Use: Automation
License: BSD
Website: wiki.darkain.com

RM-X General Purpose Control is a tool for seamless integration of hardware, software and user all in one tiny package. RM-X is developed and maintained by Darkain.

Contents

[edit] Overview

RM-X starts by breaking down the entire process of user interaction with hardware into two key areas: input and output (Events and Functions for our purposes). Each time we press a key on a keyboard, click a button on a mouse, flip a light switch, or press the power button on our TV we are generating events for these devices to process. These events then call specific functions to action, such as making text appear on the screen, opening a new web page, making the room brighter, and having the television turn on.

RM-X becomes a middle man in this process, taking on a role in between the event that was generated and the function that happened as a result. Each event as well as each function is thrown into their respective categories and then generalized. All events are then processed in the same general manner, and all outputs are actived in the same general manner.

To explain this further, lets use a keyboard as an example. When a key is pressed, it generates a message and sends it to the system. RM-X would then receive this message and can then redirect it to any of the generic functions that RM-X is aware of (generally via plugins). If RM-X is aware of a lightbulb, then that keyboard press might be redirected to turn the lightbulb on and off. In the same idea, a mouse button may be clicked which generates an event. This event could be processed by RM-X to call the function to turn on a television. As new additions to RM-X are made, this idea can be spread infinitly to new hardware and software applications.

[edit] History

[edit] 2001

In late March of 2001, Darkain (with the help of a few others) decided to add support to Creative Technology's Remote Center application to allow the RM-900 remote control to interface with Winamp. During the first week of April 2001, the first version of RM-900 for Winamp was publicly released. This plugin had very minimal features and no customization at all. It was written using Microsoft Visual Basic and used a 3rd party keyboard hook DLL.

About a month after the release of the RM-900 for Winamp plugin, one of the contibuting members to the project suggested to Darkain that there should be a similar plugin made to support PC Gamepads. This project was given the title of DX-Joy for Winamp. This plugin was also made using Microsoft Visual Basic as well as DirectX, and contained a very basic configuration GUI.

Nearing the end of the year, RM-900 for Winamp was completely rewriten from scratch using Microsoft Visual C++, and without the use of the 3rd party DLL. This plugin still used its own method of capturing keyboard input, and during its development it was suggested that there should be a 3rd plugin for Winamp to support global keyboard shortcuts. This new plugin would be given the name API-KB for Winamp, but never officially went into development.

[edit] 2002

Winamp3 Featured Component on August 20, 2002
Winamp3 Featured Component on August 20, 2002

In early 2002, the RM-900 for Winamp plugin was updated to support the RM-1000 remote control. DX-Joy was rewritten using Microsoft Visual C++, and merged into the RM-900 for Winamp code base. These two plugins being merged together, along with previously undeveloped API-KB for Winamp, became what is now known as RM-X General Purpose Control. This new name was chosen from a combination of things, including RM-900 and RM-1000 being merged into RM-X, as well as General Purpose being the type of plugin this was for Winamp.

In mid 2002, Alpha and Beta releases of RM-X General Purpose Control where made publicly available for both Winamp v2 and wasabi.player (titled Winamp3 at the time). At around this time, the RM-X name was given a new meaning: Remote Management eXtensions or Remote Multimedia eXtensions, but these names are not commonly used as compared to simpler RM-X abbreviation.

[edit] 2003

More and more requests came in for Darkain to support more devices and more media players with his plugin over the months and years. In 2003, RM-X General Purpose Control was split up into multiple projects once again. RM-X itself became a tool that could load plugins. RM-900, DX-Joy, and API-KB where removed from RM-X and became plugins for it. Additional plugins for RM-X where made, such as IntelliRemote and App Commands. This also spwaned a library that is publicly available to write plugins for RM-X, known as the vBase SDK.

[edit] 2004

Limitations with the plugin architecture as well as configuration GUI made it quite complicated to make specific devices interact well with RM-X. Because of these issues, RM-X has been rewriten from scratch several times, usually about every six months. The last major rewrite of the RM-X underlaying framework was done in mid 2004. In this major modification to the code base, the underlaying framework switched from a generally linear style of programming and data management to a hierarchal form. RM-X is now described to be in a structure similar to XML, but in a live and dynamic state while also supporting RPC across plugins, applications and computer systems.

[edit] 2005

In 2005, Lua was added to RM-X
In 2005, Lua was added to RM-X

January 1, 2005 RM-X General Purpose Control version 1.0 released for four separate media players (Winamp, foobar2000, BSplayer and RadLight).

March 16, 2005, the four individual RM-X plugins where once again merged into one single project known as RM-X Media Edition. At this time, support for Windows Media Player was also added. Major additions to support the Lua programming language where also made. After March, development was temporarily halted.

September 17, 2005, work resumed on RM-X with the inclusion of several new features all centered around Lua, and continues to be developed on to this day.

[edit] 2006

January 5, 2006, RM-X Media Edition version 1.2 RC1 released. This build contained many large improvements over previous builds, including a full LuaPlus integration.

February 17, 2006, RM-X Media Edition version 1.2 final is released to the public. [1]

[edit] Supported Applications

[edit] Plugins

  • Com Commander - Support for a 4 button device plugged into a Serial port
  • IntelliRemote - Support for reading input from the Creative RM-900 and RM-1800 Remotes, using the method developed by Andrew Schwartz for IntelliRemote
  • Keyboard Shortcuts, OBSOLETE, replaced by User Input Plugin - Global system-wide keyboard shortcuts
  • Remote Center - Reads events generated by the RM-900 and RM-1000 Remotes that are passed through the Creative Remote Center application
  • System Mixer - Allows access to the various volume controls available on the system
  • Telnet Daemon - Allows RM-X Script Functions to be executed from a Telnet based command interface
  • Test - Used to test and debug various GUI features of RM-X
  • Toolbar Controller - Provides a floating toolbar on the desktop with customizable buttons
  • Tray Icons - Allows for user selectable icons to be placed in the system tray with configurable events when clicked
  • User Input - Accepts as well as generates Keyboard and Mouse events.

[edit] External links

Remote administration software
Apple Remote Desktop | Back Orifice | Back Orifice 2000 | Microsoft Systems Management Server | NetBus | Remote Desktop Protocol | RM-X General Purpose Control | Sub7 | Timbuktu | Virtual Network Computing