Hotrian / OpenVRDesktopDisplayPortal

Put your favorite Desktop Window directly into any OpenVR game!
Other
449 stars 96 forks source link

Single-controller "tablet mode" #35

Open treyharris opened 8 years ago

treyharris commented 8 years ago

I mentioned this on Reddit and while this would certainly be a very ambitious feature, I figured I'd drop it here in case you want to leave it as a item that might one day be interesting:

You could have a "virtual tablet" in VR by putting all the controls on a single controller. One button (grip, perhaps?) would activate interaction. Swiping on the trackpad would move the mouse pointer around within the overlay. The trigger would click, a trackpad click would be a right click, and two fingers swiping could be the scroll action. (Multifinger gestures would let you do things like a two-finger tap for middle click and leave the menu button for something else interesting.)

Playing around a bit with the Vive controller, it seems like this might be most comfortable with the Vive controller held with the trigger in, with clicking not registering until the trigger is clicked in. (It also seems like it might be most comfortable to use it stably--since wobble could be a problem--with the controller held sideways--in your left hand, with the controller pointing right, with your right finger doing the "mousing".)

Hotrian commented 8 years ago

I don't know of many games that only use one controller, which games do you think this tablet mode would be useful in? I guess I can think of a few games that don't use the controllers at all (such as ED). I can't stop input from passing through to whatever game you're playing, which is why I'm trying to keep the button usage to a minimum, I guess it isn't an issue when the game doesn't use controllers at all, though.

As for the clicking thing, on Windows OS clicks are registered when you release the mouse button, not when you press it in. That is why this is done this way. I suppose I could add an option that inverts the click style.

treyharris commented 8 years ago

I am specifically thinking of mouse-and-keyboard games, yes—I've gotten used to having just a single controller active and dangling from my wrist as I play to activate the Steam overlay.

As for the clicking behavior, if you just try it, hold a single Vive controller in one hand and pretend it's a tablet, I think it'll make more sense: if the "tablet screen's" z-axis is placed directly across the top of the controller, you can't keep it stable for things like a click-drag if you have to start from the trigger's zero point. If you're already holding the trigger to the detent, you can "click" with a slight squeeze that doesn't jiggle the controller around.

But again, doing this would require a lot of interface work—simple click handling would be minor by that point—so like I said, just throwing it in there as something that might inspire somebody at some point.

Hotrian commented 8 years ago

Actually, I like the idea a lot. There are many different personally preferences and while I don't see this being useful for me personally, I do see this being useful for many other users. I'll see about adding it, though it will require some rewrites ;).

Hotrian commented 8 years ago

Also, (currently on mobile app and can't edit my comment..) I think I want to drop the 'Mouse Interaction' Dropdown and move the mouse settings into the 'Additional Settings' panel, so you can toggle each option, but some options require certain things (like the SendInput API used with 'Full Interaction' can only click on windows that are on top), so turning on certain options have to turn on certain other options :0.

I think it would be nice if you could toggle each of the mouse options individually though, unless a certain option is required by another option, and then turning it off will also turn off the option that requires it be on, and turning on an option that requires something else will automatically also turn that option on as well. Might seem a bit confusing at first (as some options control other options), but it would reduce issues with people turning on one option and wondering why it doesn't work correctly (when it needs a second option turned on to function).

Aesop112 commented 7 years ago

Maybe something like having both your thumb touching both trackpads makes the desktop mouse interact with the overlay screen. Maybe configurable buttons. Would be awesome to NOT HAVE TO LEAVE GAME to look up minecraft recipes and stuff like that.

Hotrian commented 7 years ago

You can already interact with it using the mouse, by aiming at the overlay and pulling the trigger (left click), clicking the touch pad (right click), or squeezing the grips (middle click). You can also send horizontal and/or vertical scroll wheel input by holding the grips down and sliding your finger along the touch pad. These can be configured in the Additional Settings panel.

Please see the Instructions Article for more information, or open a separate issue as necessary.

Note that mouse input can be configured and must be turned on under the Additional Settings panel for these to work.

Edit: I'm still considering adding this "Single-Controller Tablet mode" though, but currently I'm working on improving the capture rate. I'm in talks with Valve to get this released on Steam, but I don't have an ETA yet. The version on GitHub can only capture about a 360p to 480p video (depending on hardware) at >24FPS, but my local source can capture my entire 2560x1440 monitor at >150FPS, so it's a major improvement.

Right now I'm not releasing updates on GitHub because I was informed there are a few clones (straight up copies of OVRDDP, just rebranded) being sold :(. I'm hoping to get my new version on Steam so that it is more recognizable and well known, rather than release my huge improvements only to have them stolen.

If I can't get it on Steam in the next few months, I'll release my current source and binaries on GitHub as usual.

Full HD and above Capture is coming, please be patient :).

Aesop112 commented 7 years ago

You can move your desktop cursor around and click and open things via this app while in game?

On Dec 8, 2016, at 9:58 PM, Nicholas Ewalt notifications@github.com wrote:

You can already interact with it using the mouse, by aiming at the overlay and pulling the trigger (left click), clicking the touch pad (right click), or squeezing the grips (middle click). You can also send horizontal and/or vertical scroll wheel input by holding the grips down and sliding your finger along the touch pad. These can be configured in the Additional Settings panel.

Please see the Instructions Article for more information, or open a separate issue as necessary.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

Hotrian commented 7 years ago

Yes you can, though there currently isn't a way to "target" the desktop and launch applications, but you can "target" an application, and then click inside of it using the controllers from within VR. This can be used to target a browser like Firefox, and interact with it without leaving VR.

I do have plans to support capture of the desktop, and switching which application is being targeted from within VR, but currently you must exit VR (via taking the Headset off, not actually closing out of SteamVR) to switch applications, though if you launch OVRDDP twice you can have two different overlays, and you could target the OVRDDP window itself with one, so you could launch OVRDDP twice, then target the first with the second, and interact with that in VR, so technically you can switch applications from VR right now, it's just not the ideal setup :P.