All apps supporting all devices

If you have questions or comments concerning any non-support related 3Dconnexion topic, please use this forum.

Moderator: Moderators

Post Reply
Hypersonic
Posts: 265
Joined: Mon Jul 12, 2010 5:58 pm

All apps supporting all devices

Post by Hypersonic »

Although this is actually a request to operating system developers, I thought I'd share it here as it would affect input device manufacturers such as 3D Connexion.

A quote from:
http://blog.3dconnexion.com/blog/bid/26 ... sibilities
"That said, without native “plug and play” support, which has to be integrated by the game developers, I’m still left wanting for the kind of experience mentioned above."

I feel the same way. It's so frustrating seeing applications not take full advantage of all the user's input devices. I believe that operating systems can help turn this situation around with a paradigm shift in the manner in which they handle input. I believe that application developers would take advantage of this new system if it were to become available.

One of the fundamental problems of Microsoft Windows (Direct Input) is that it's so concerned on categorizing a controller under some label for axis mapping, such as DI8DEVTYPE1STPERSON_SHOOTER , DI8DEVTYPE1STPERSON_SIXDOF , DI8DEVTYPEDRIVING_DUALPEDALS , DI8DEVTYPEDRIVING_THREEPEDALS. Using said labels it decides how to map the device to variables it shares with applications. This limits the possibilities, or at the very least makes it a real pain to setup another type of device. 3D Connexion's driver already virtualizes what the OS sees from the driver for customization. I think this same concept should be used for what the apps see from the OS.

Why not greatly simplify everything while at the same time create endless possibilities? I propose to OS makers to utilize the concept of VIRTUALIZATION for input devices. Applications shouldn't know (or even care) what the actual source of the input is. Input hardware should be abstracted into virtual devices. Do apps know or even care about what mainboard, display(s), speakers, or harddrive(s) I use? No. So why should they care about input devices I use? Better yet, why should apps even deal with devices at all, after all input devices are just packages of input axis and buttons. Instead just have a long string of virtual axis and virtual buttons. As you add devices to the computer you add to each type of string (the user chooses what actual axis corresponds to each virtual axis.)

Types of axis:

snaps back when you let go
-to center: joysticks, 2d mice, 3d mice, and steering wheels.
-to min or max: foot and finger pedals
no snap back when you let go
-sliders, perhaps also axis from devices such as Kinect and Hydra

String of virtual axis: (OS lets users map how their actual axis are mapped to virtual axis)

virtual_center_axis[0], virtual_center_axis[1], ... for axis that snap back to center value
virtual_min_axis[0], virtual_min_axis[1], ... for axis that snap back to min value
virtual_max_axis[0], virtual_max_axis[1], ... for axis that snap back to max value (redundant actually, can just invert max_axis)
virtual_slider[0], virtual_slider[1], .. for axis that simply rests at whatever value it was last set to
virtual_button[0], virtual_button[1], ... buttons can be thought of a 1bit axis that rests at 0

Users would be provided with an easy to understand and manipulate drag'n'drop GUI to easily modify the mappings.

Conventions (For the sake of applications choosing good defaults, have conventions)

such as
virtual_center_axis[0] - defaults to object moving longitudonally
virtual_center_axis[1] - defaults to object moving lateraly
virtual_center_axis[2]- defaults to object moving vertically
virtual_center_axis[3] - defaults to object rotating around longitudonal axis
...
virtual_center_axis[6] – defaults to camera moving longitudonally
...
virtual_min_axis[0] – gas pedal
virtual_min_axis[1] – brake pedal
...
virtual_slider[0] – thrust
virtual_slider[1] – airplane flaps

This is a win-win-win scenario for everyone

Users can setup up any combination of input devices for any application. They set up their devices just once to virtual axis/buttons and then use that setup for all applications. 2x 3Dmice, 1x joystick & 1x 3Dmouse, or 1x 3Dmouse & 1x 2Dmouse. The user is free to choose whatever they want.

App developers simply default their controls to virtual axis/buttons conventions, and in that one swoop they support all combinations of input devices. Users are free to change the defaults. App developers no longer have to worry about supporting this or that controller.

Input device manufacturers just have make their axis/buttons accessible to the OS which in turn (using the user configuration) maps these to the virtual axis/buttons. Device manufacturers no longer have to worry about supporting this or that app, all of them will be automatically supported.

Actual numbers passed

For axis float/double with min -1, center 0, max 1, supporting any precision such as 0.5, 0.54, 0.542, etcetera. For pedals center would half way down.

All in all I think this is an easy and powerful system that would result in a huge increase in device support.
level6
Posts: 7
Joined: Tue Apr 01, 2014 3:51 am

Re: All apps supporting all devices

Post by level6 »

im new to this 3Dx mouse, now that i see what you said, im beginning to wonder if i bought a mouse that has so much "beta" i want to throw it back to the seller ...

so should i uninstall windows and use ... a pen and paper ...
Post Reply