Jump to content
C4 Forums | Control4

Coming Soon Windows Keyboard and Mouse Control4 Media Player Driver


Recommended Posts

All,

I'm working on a solution to what I see as a major gap in controlling PCs via Control4. The fact that nothing out there natively can work directly with Control4 Media Player commands.

All driver development has to be for the specific commands for the application you are running, ie XBMC, Plex, JRiver, WMC, VLC, Hulu, Netflix, etc.

If an access API doesn't exist, you are out of luck remote controlling it.

However, after some tinkering, I was able to create a proof of concept that I can receive IP commands from a Control4 Media Player Driver / Proxy and map these to keyboard and/or Mouse commands via a .NET application.

So my solution will work as follows:

-A Control4 Media player driver that will need to get installed by an authorized dealer

-A Windows .NET (version yet to be determined) application that will need to be installed.

-A Windows system that is already logged in, as right now, I can't send control-alt-delete commands (for systems that have this level of security)

The Control4 Driver only needs 2 things, via connections, the IP of the computer you want to control and the port you want to communicate over.

The windows application will only need to set a port consistent with the one you set in the Control4 Driver settings.

Ultimately, all the heavy lifting will be done in the Windows app.

Right now, I have mouse functionality mapped to the up,down,left,right functions and select to click and prev to right click.

Then with the push of another button, it shifts to keyboard nav mode... so the up,down,left,right are now keyboard arrow keys, select is enter, prev is esc.

This leaves a ton of commands not mapped. My plan is to create an editable config file in the app that allows you to map commands from the Media Player to any windows keyboard or mouse commands OR execute a batch script. For example, you could map the red button command to launch your favorite browser and pass in Netflix's URL. Or if you find a site you always have to log into, you can map another button to enter your username and password automatically, and yes your password would be stored locally, encyption TBD.

Lastly, I am hoping to get media playing to work to your player of choice. For example, in Control4's media library, when you choose to play, it will send the full path to the windows application, and then once that is received, you can send that path to any application that can handle variables and the PC will automatically play that video.

Right now, I have no intentions on making the driver two way, but want to know if there is any need / demand?

Also, let me know if you like the idea, hate it, want additional features, etc...

Time frame will be up in the air as no one is paying me for this, I'm doing this on my own time.

Ultimately, I need feedback as to what this type of working solution would be worth to the HTPC users out there... Is this worth paying for and is there a large enough market to commercialize?

Lastly, if you are interested in testing this application / driver, let me know as well. Testers who submit feedback and logs will be listed in the credits and get a free copy (without support) of the initial version of the windows application and the C4 driver. Testing means things could break, and I am in no way liable for this. Beta means broken...

Link to comment
Share on other sites


Lastly, I am hoping to get media playing to work to your player of choice. For example, in Control4's media library, when you choose to play, it will send the full path to the windows application, and then once that is received, you can send that path to any application that can handle variables and the PC will automatically play that video.

How will you map this path? Great concept though. You could play itunes content straight from the Control4 media library (via itunes running on a PC right?) Then switch to another form of content (say hirez music content) and play them via JRiver right? I'd be interested in these features.

Cheers

Link to comment
Share on other sites

pst, your driver is a fantastic idea. Why? Well as we all know there is not one all encompassing, "plays *every* format" media player out there. Your driver idea gives us the chance to pick and chose which player to use (depending on what content is supported) All using our beloved Control4. Awesome stuff. Wap.

Link to comment
Share on other sites

Kevin (Kevvo) and I have been working on this to make our server and media player work with the windows portion and that is the only reason I didn't just scoop up Patricks right away. However, our driver is based on another app for windows control with is under a free license but still has someone elses copyright info and credit to be given, etc. We may compare the two and just use Patrick's so that we can compensate him and put our info on it instead and pretend we made it ;)

Link to comment
Share on other sites

I shot a quick video as a teaser...

The video has some quirky Youtube stabilization issues... Hope to do a better video at another time...

What's going on is I have the driver installed on my Controller, wired up to a "TV" via HDMI

I have my HTPC (via Remote Desktop) running JRiver in Theater Mode

I also have my Flash Navigator on my PC running and set to my room the HTPC is in.

So, on the flash nav, when you click left, right, up, down, select or cancel these commands are sent from the controller to the HTPC running my debug app and you see the keyboard emulation commands represented in the OS and thus in JRiver, just like you were pressing the keys on the computer.

Obviously, a lot of work left to map keys, etc. But the basics are working :)

Link to comment
Share on other sites

Ok, end of the day teaser video...

What's now working...

XML config file for keyboard and mouse modes. These modes are toggled via the Red Button on the remote.

Keyboard mode is now functional for JRiver mapped commands

Mouse mode allows you to move the mouse up, down, left, right, click and right click

Complex keyboard commands like ctrl-shift-left or ctrl-p are mappable via XML config file.

This weekend I'll write a UI for the configuration, but basic functionality is working.

Trying to figure out how the Media Library works in Control4, as I can't seem to get it to send the params["FILES"] to the network connection, even though everything else works.

If I can figure that out, or others can help, I can pass the file path into my windows app and that will then make this fully integrated into Control4's media library.

Link to comment
Share on other sites

Update...

Started the UI for the driver config and figured I'd ask for some feedback.

See the attached photos for current screen shots.

The config part is the hardest. Since I need to support individual keyboard commands and multiple combos, like ctrl-shift-p, so right now the easiest way to do this is to just type it in a text box like "Control Shift P".

Will this be understandable or do I need a better method?

Also, there is a cool "feature" for sharing configs, since the whole configuration will be stored in an XML file that must be in the same location as the application, you can reuse the config file for multiple installs.

Anxious to get people's thoughts...

Link to comment
Share on other sites

Well, its the media player proxy, so got as many as C4 will allow.

But keep in mind, this is all Windows Application side driven... So you can set a macro to fire, like execute a command line, batch file, etc.

There are 32 commands that can be mapped to a function in the Windows application...

Combine this with most application shortcuts/keyboard commands, and you'd be surprised at how few you need to do normal functions.

Right now, I have a fully functioning JRiver command set map. However, I can launch Windows Media Center and use the exact same config and it works. Then switch to XBMC and it works as well. Play, Pause, arrow keys, etc.

Then, if you need a mouse, you hit the # button and it switches to mouse mode, so you can do what you need there and switch back.

I recently mapped Alt Tab to a button, so you can quickly switch open applications.

Ultimately, the UI is coming along, hope to have a complete application to start user testing with by tomorrow. However, the C4 driver is a bit, how can one say this, simple? I think there is a lot more I could be doing with the driver and media playing, but that may have to wait till a later version.

I took a detour today and rewrote the core application in WPF instead of Windows Forms. I wanted a few features in WPF and was able to finally get the keyboard and mouse control to work in WPF.

Anyway, still looking for testers and dealers who can install their own drivers in their projects and are willing to provide feedback and/or Teamviewer / remote access to see how its working on your system (especially if its crashing :) )

Link to comment
Share on other sites

Ok, well, UI basics are done.

Check out the video of the application here:

I'm in alpha testing now. Looking for testers in the next couple of weeks. Was hoping to have this more ready for distribution before the 4th, but July will be a crazy time for me.

I had a few issues with my HTPC that slowed me down a bit, nothing like a memory problem to freak you out during testing... Thought my app was the cause :) it wasn't... Bad memory, and I didn't do a burn in. Got the system stable now...

Anyway, if you are interested in testing or getting access to this application before release, email me and I can see what I can set up for you.

There are a few things I haven't worked out yet:

-Macros don't execute yet

-Want to be able to load different profiles dynamically, so if you launch WMC, you can switch to a different map vs Jriver, etc.

-Export / Import of Mappings

-Web based application authentication / licensing

-Private label branding for dealers :)

-Help files and documentation

-Media handling from the C4 media library (need to get file name / path from the PLAY_THIS_FILE)

Testers will need to be available for troubleshooting via Teamviewer or Webex so I can see first hand, what is going on. Testers will be given a free license for the first version of the application. Testers must also be able to install drivers in their project.

Link to comment
Share on other sites

Ok, figured I'd update anyone who's interested in this project...

Started testing on Windows 7, Windows 2008 R2 Server, Windows Home Server 2011, and Vista...

All work as expected. Mouse and keyboard commands are issued properly across all systems.

Few questions for people:

1) I need .NET 4 installed, does this pose a problem for anyone?

2) Firewall rules need to be added to allow this program to run properly, it prompts you, but should I set the installer to do this automatically?

3) Looking at licensing models, is trialing the software for xx days critical?

4) Looking at online licensing, so the application needs an active internet connection to validate its license every xx days, is this an issue?

5) Adding a log in feature to secure mappings, meaning you can secure the application from unauthorized use / changes, is this critical?

6) Adding support for multiple applications and the ability to change out keyboard / mouse mappings with a button push / macro... What applications would you like to see supported? (tested so far, Jriver, WMC, XBMC, MediaBrowser, VLC, iTunes, Media Portal)

7) Right now the app only allows one connection from a controller (where the driver is installed) and limits to that connection, is there any reason why you might need more than one device accessing the app?

8) Should I add restrictions to only allow connections from the controller? This would require the application to accept only commands from a single IP and block any others. Otherwise, as above, if another devices connects, it could block the controller from connecting.

9) How critical is it to have keyboard / mouse control on a locked / unlogged in workstation? In order to do this, the app has to run as a startup service and will have far more control to the system then I'd like.

10) If #9 is critical, I would probably disable macros from executing, since this would be an easy attack vector. Anyone have issues with this?

Ultimately, testing and distribution will take a few weeks to iron out all the details. If you are interested, let me know. I've been using this for awhile now and is working quite well controlling my HTPC and other computers on my network.

Link to comment
Share on other sites

Ok, what would you find acceptable?

Options:

1. No protection, just let anyone use the software, lose lots of revenue

2. Some sort of license key that can get leaked online and lose lots of revenue

3. Custom built executables or some other method to bind to MAC address, which can be spoofed, lose some revenue

4. Online activation, one time, which could lead to support issues, limit peoples access and lose some revenue

5. Online check in, which can lead to product stopping working, which can stop people from buying, lose some revenue

No real winners in licensing... However, since it is already common practice amongst Control4 drivers to bind the driver to the master controller MAC, we could do this as a fair compromise. This way, the application would run as long as the controller mac address exists on the network and responds to master controller commands.

Thoughts?

Link to comment
Share on other sites

Lots of revenue? Really? I find it difficult to believe this will bring in "lots of revenue".

It's a cool driver but C4 is a rather limited audience and many dealers haven't heard of half the stuff that is talked about on this forum. Anyway most people don't like their software calling out to an external server, I personally block software on my computer that tries. People are going to hack stuff if they really want it and the more people try to stop it the more it drives people to do it.

Link to comment
Share on other sites

As an end user, who has bought his fair share of "drivers" over the years... I liked Seth's "model" with his GoRemote driver.

..Is there anyway you could do something like that?

In your case (because it isn't an iphone app), why not get users to pay up front for the driver download (and key's) from the internet....

Then the dealer install's the driver...to how many locations they need it..(This wouldn't take long, so the "add on" dealer install cost would be small... Could even be done remotely)

.. then the user binds the MAC addresses

Link to comment
Share on other sites

As for revenue, I have no idea what this can make me, most likely will never recoup my costs into it.

My statements about models and revenue were taken from typical licensing deals not my expectations, was trying to point out no model is perfect, all result in some loss in total potential sales.

@wappinghigh, not familiar enough with Seth's model... But here's what I'm thinking of doing:

A model where you can download the driver for free since its basically not much to the Control4 driver and anyone could write it... This also gets me out of a dealer only model and into those that can install their own drivers...

Then the application would be downloaded and work for 30 days without a key.

A single use key would allow a Windows based PC work with one controller MAC address, so the registration process would need MAC of master controller, MAC of computer, username and/or email and password, then generate a unique key for that config.

A site license could also be available, allow unlimited computers and one MAC of master controller.

Finally, a dealer license, which would give you private branding on the application, install on as many customers, access to custom development, etc. End user installs would need a one time registration process for each MAC address of controller (just like a site license)

As for support, I could price support into the cost, or lower the initial cost and charge more for support, if / when needed. I personally hate this model, because it usually results in poor UI / documentation, etc. along with the squeeky wheel gets the grease model... In order words, those that pay, get the features they want, instead of focusing on what is needed to get more market share.

Ultimately, I'd like to just license this to a dealer or dealers to private label and handle the customer facing side... As for market opportunity, sure, everyone doesn't have control4, but those that do, have computer(s) and probably would like to hook it up to a TV or already have a large monitor in a room and might want to control it via Control4 interfaces like touch screens, remotes, Ios / Android apps, etc.

Anyway, back to coding...

Link to comment
Share on other sites

PST.. I think you are on the right track. Why don't you speak to Seth? Actually it was his GoRemote driver I was thinking about.

He ended up marketing his pushnotify one thru Extravegies... But Goremote he sells thru the Apple Store. He seems to know what he is doing.

Or you could speak to AlanC at Recluse. Or James at DD. All these guys have done this sort of thing before.

I think your driver is a great idea BTW.. There are people who will pay for this sort of thing you know :)

Link to comment
Share on other sites

  • 7 months later...

Sorry to be bumping something that may be old, but with XBMC Frodo's updates breaking control using the current generation drivers (jump forward/backward, back, etc.) - a keyboard emulation driver seems like the best alternate solution to me. Did this project get completed? Were there any plans for a non-PC version?

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.