Focused control in software remote?

General HouseBot discussion. Any issues that don't fit into any of the other topics belong here.
Post Reply
frdfsnlght
Member
Posts: 4
Joined: Thu Sep 04, 2003 8:52 pm

Focused control in software remote?

Post by frdfsnlght »

Hey,



I'm new to HouseBot, but it looks like the thing I need, except for one issue. I'd like to use it to control my HTPC/Theater, but I don't use (and don't want) a fancy touchscreen controller. I actually prefer the tactile file of a standard remote (I can use it in the dark).



Here's the problem. I'd like to use the arrow keys on the remote to move the "control focus" between buttons (or any control) on a software remote panel, but it appears the only control is through the mouse (or touchscreen) clicking on a button. Am I missing something or is this just not possible?



I understand how to use the IR device to get input from the remote, but that's a server thing. How can I get these "events" to the software remote and have the software remote visually represent which button is "focused" so that when I press the select button on my IR remote, the button is clicked?



I searched the forums here for an answer but couldn't come up with anything.



-Tab
ScottBot
Site Admin
Posts: 2806
Joined: Thu Feb 13, 2003 6:46 pm
Location: Georgia (USA)
Contact:

Post by ScottBot »

Unfortunately, the controls on Software Remotes don't have a focus or even keyboard accelerators to make this easy to do.



There are applications like like IRMan (http://www.evation.com/irman/) or PC Commander that can be used to control a PC with the remote, but they probably do it by sending key commands. You could check them out, but I'm not sure they will work.



It's a little odd to use a remote to control a remote to control the server. You could just have the IR codes sent from your standard remote envoke Tasks on the server to do what you want. You would need to use one of the supported IR transceiver devices supported by HouseBot (USB-UIRT, Ocelot, SlinkE, GC-100) to capture the IR commands into HouseBot.



Scott
frdfsnlght
Member
Posts: 4
Joined: Thu Sep 04, 2003 8:52 pm

Post by frdfsnlght »

Thanks for the quick reply, but I was afraid you'd say that.



Although it sounds odd as you desribe it, I usually don't describe it that way. I think of the software remote as the HTPC interface, and the IR remote as the remote (i.e., like Tivo). I also have techno-phobe users in my household that seem to be unable to handle anything more than arrow buttons and a select button on a remote, but have no problem with menu-like interface like Tivo.



I could do as you suggest and map IR remote buttons to HouseBot tasks, but that defeats the points of the nice GUI/Theme I could create using your software. I'd like users to be able to navigate the GUI using only cursor keys. There are ways to make the cursor keys move the mouse pointer, but frankly, that sucks.



As an aside, when I found your software almost a year ago, I was in the planning phases for a similar piece of software I was going to write (Java, cross-platform, plugins, etc.). It surprised me to find that the device/property model I had arrived at was almost identical to yours (before I ever heard of HouseBot). But I had planned on supporting cursor keys in the interface. Maybe I'll revisit my plans, unless you have plans for adding the kind of support I'd need to HouseBot.



Thanks for the help.



-Tab
ScottBot
Site Admin
Posts: 2806
Joined: Thu Feb 13, 2003 6:46 pm
Location: Georgia (USA)
Contact:

Post by ScottBot »

Tab,



In the simplest form, what I see is a new HouseBot Hardware Device that is designed to take IR input from any of the currently supported IR transceiver Hardware Interfaces and convert the IR commands into mouse movement (and click) commands. It will then send these to a Software Remote.



In the next couple of versions, I am going to implement a client control that will track the mouse and send the movements and clicks to the server. I know this is about opposite of what you want, but my concern is whether the network and HouseBot protocol will be able to effectively transfer the telemetry fast enough to have a 'real-time' effect on the mouse movements. I may need to do some 'dynamic' mouse movement based on fewer telemetry data.



For your solution, I'm wondering if the HouseBot supported IR transceivers will be able to stream IR codes to get a smooth mouse movement effect. Or were you planning on pressing buttons multiple times. Maybe each press moves the pointer a configurable number of pixels??



It sounds like you have given this more thought than I have, so help me a little with what you believe will be needed and how you envision it functioning. My somewhat incomplete thoughts above show that I'm open to the idea, but still can't see the design completely.



Since you have some development experience, you might consider writing a HouseBot Hardware Device and see how well it can receive the IR commands from an IR transceiver. If you think you can either get the performance needed, or are able to simulate mouse movements in the Device from lesser data, I'll be more than happy to add an API to the Device SDK to send mouse commands to a Software Remote.



Let me know what you think,

Scott
frdfsnlght
Member
Posts: 4
Joined: Thu Sep 04, 2003 8:52 pm

Post by frdfsnlght »

Wow. Thanks for taking as much time as you have for thinking about this.



What I originally had mind was this: each control on a panel would have 4 additional properties. Each property would point to another control on the panel to change focus to when one of the cursor keys were pressed. This assumes that controls would have a way to represent being focused. And by cursor keys, I don't mean actual cursor keys, but rather 4 "things" that can be poked from the server. So, for instance, the IR signals could be read by a device, a task could be triggered when the "up" button on the remote was pressed, and a "thing" could be poked on a specific remote to indicate focus should be changed to the control indicated by one of the new properties on the control currently holding the focus.



That's the basic gist. It's easy to see a few additional features that could be added, like another "thing" that can be poked to indicate a select button has been pressed (to click the control). And specifying a default control to receive focus on a panel when it's first opened.



I recognize at least one problem with this idea (besides doing the development). What to do with controls that might want to use the cursor controls for "internal" functions? For instance, one of your vertical slider controls might want to interpret "up" and "down" as changing the slider value rather than changing the focus. To use these types of controls in a panel when using this new focus/cursor control feature might just mean being careful about layout, which I would be happy with.



The idea I presented here is very different from what you were suggesting. I personally don't like the idea of emulated mouse control; it doesn't seem natural to me from the point of view of a "simple" user (i.e., my wife).



Well, do what you will with what I've presented here. I'm willing to discuss this more if need be. BTW, I am a developer, but mainly in large scale Java environments (Enterprise JavaBeans, servlets, servers, distributed servers, standalone apps, NOT applets, though I have done some). I've dabbled in a variety of other languages (like VB). I've done some C coding, but many years ago, and I've never done any real Windows programming, so I probably can't help at that level.



-Tab
ScottBot
Site Admin
Posts: 2806
Joined: Thu Feb 13, 2003 6:46 pm
Location: Georgia (USA)
Contact:

Post by ScottBot »

What about just allowing the Software Remote to figure out which control should receive focus? For example, if a 'Move Left' action is sent to the Software Remote, it would give focus to the control just left of the currently focused control, or wrap to the right if at the edge of the Panel.



I'm afraid that having to configure four properties for each control will be a nightmare to configure. Especially when adding, removing, or even moving a control.



Scott
frdfsnlght
Member
Posts: 4
Joined: Thu Sep 04, 2003 8:52 pm

Post by frdfsnlght »

That would be cool for most cases and would certainly work for now. What kind of algorithm would you use to figure it out?



Being a control freak (no pun intended), I would eventually like to have more control over focus traversal, so maybe someday you could support both ways. An option for each control to "unlock" the discrete settings, maybe.



Thanks for considering the idea.



-Tab
ScottBot
Site Admin
Posts: 2806
Joined: Thu Feb 13, 2003 6:46 pm
Location: Georgia (USA)
Contact:

Post by ScottBot »

Tab,



I haven't nailed down any algorithms just yet. For controls that are nicely aligned, it should be pretty easy. I'll tune the logic during implementation.



In general, my thought is to add another 'Action' to the 'Control Remote' item of a Task Action item. Something like 'Change Control Focus' with options to select (press button), move up, down, left, right, or maybe even specify a specific control (not sure about this one, since controls have no real identifier).



I'm not sure how to handle changing the value of sliders, directory, and list controls.



Scott
ScottBot
Site Admin
Posts: 2806
Joined: Thu Feb 13, 2003 6:46 pm
Location: Georgia (USA)
Contact:

Post by ScottBot »

Tab,



Are you still interested in this functionality?



Scott
Post Reply