godotengine / godot-proposals

Godot Improvement Proposals (GIPs)
MIT License
1.12k stars 69 forks source link

Accessibility QOL improvement in relation to graphics tablets #196

Open ghost opened 4 years ago

ghost commented 4 years ago

Describe the project you are working on: N/A

Describe the problem or limitation you are having in your project:

A little background: I use a graphics tablet due to the fact im unable to use a mouse for any period due to health issues also the more the pen hits the tablet to do something the better it is for you arms.

On the 2d side of the editor my graphic tablet works well apart from a few minor issues with slider boxes not working with my graphics pen and some view ports not working with CTRL+ and CTRL - but thats easily worked around but when it comes to the 3d view ports theres alot of things wrong that could be improved.

currently navigating normally around the viewport is broken for me, it has the same issue with sliders where it moves in slight increments before you have to click again.

but even on other engines where the pen works well i have found something as simple as the below feature has taken alot of strain off my arms and wrists because constantly holding the pen just slightly off the tablet which over time hurts)

Describe how this feature / enhancement will help you overcome this problem or limitation:

3 button mouse emulation similar to how blender does it: this works amazing so you dont have to awkwardly press a button constantly on the pen at a weird angle, if people are unaware it turns the alt key into the middle mouse button to move your view in the view port and press with shift or ctrl allows you to pan and zoom.

doesn't have to be exactly due to the fact in blender your rotating around point but in godot your not, it could work like a toggle for ease of access to view and traverse the scene.

If this enhancement will not be used often, can it be worked around with a few lines of script?: Will constantly be used.

Describe implementation detail for your proposal (in code), if possible: <>

Show a mock up screenshots/video or a flow diagram explaining how your proposal will work: <>

Is there a reason why this should be core and not an add-on in the asset library?:

Because at its core its will help others like me that have a disability that stops them from doing something they love, graphics tablets have shown to be a hell of a lot more natural then mice.

Calinou commented 4 years ago

Related (but not identical) to #161.

Support for pen pressure and tilt was merged in https://github.com/godotengine/godot/pull/24329, would it be of any use in the implementation of this proposal?

georgwacker commented 4 years ago

I just did some testing with my Wacom Intuos 4 and discovered that the 3D editor already has a 3 button mouse emulation setting. Per default, there is no Orbit Modifier set, if you set it to ALT, then you can freely orbit with the pen hovering. (And pan with shift, zoom with ctrl)

godot_tablet

Windows Ink seem to cause a lot of issues, especially with the Editor Inspector. If you turn that off in the Wacom Settings, you are then able to unfold sections in the Inspector.

wacom

Dragging the pen in input fields to increase/decrease values only works for a small fraction and then stops. I don't know if we need a dedicated implementation for pen input or if the mouse logic can be generalised/changed to make it work.

It would probably be useful to then have a page in the documentation about how to use the editor with a pen tablet.

Calinou commented 4 years ago

Per default, there is no Orbit Modifier set, if you set it to ALT, then you can freely orbit with the pen hovering. (And pan with shift, zoom with ctrl)

Maybe we should make Alt still work for orbiting if the Orbit Modifier is set to None? This way, mouse users can still pan without holding down Alt but tablet users can benefit from a better experience out of the box.

bruvzg commented 4 years ago

Support for pen pressure and tilt was merged in godotengine/godot#24329, would it be of any use in the implementation of this proposal?

Note: there was a bug with the pen coordinates in the godotengine/godot#24329 that should be fixed by godotengine/godot#33423, but neither directly affect editor interface as it's just adding extra pressure and tilt values to the MouseMove events, here's test project for the aforementioned PRs tablet_draw.zip.

ghost commented 4 years ago

apologies, accidentally closed the issue instead of adding a comment and didn't realize.

georgwacker commented 4 years ago

Maybe we should make Alt still work for orbiting if the Orbit Modifier is set to None? This way, mouse users can still pan without holding down Alt but tablet users can benefit from a better experience out of the box.

That sounds like a good idea. However, the Emulate 3 Button Mouse setting still has to be set (in terms of out-of-the-box) This change would also mean that you can switch between mouse and pen without changing a setting (and being able to pan normally with middle mouse).

Calinou commented 3 years ago

What's the state on this proposal, now that https://github.com/godotengine/godot/pull/33607 is merged? I don't understand exactly what needs to be done to fully address it.

georgwacker commented 3 years ago

The main problem for general use are numeric input fields with sliders, where you hold down the LMB and move the cursor left/right to change the value. This works for mice, trackballs and trackpads (just tested on master), but not with pen input.

With pen input there is a slight initial value change when click-dragging, but any further movement left/right won't change the value.

Calinou commented 3 years ago

With pen input there is a slight initial value change when click-dragging, but any further movement left/right won't change the value.

This may be due to the pen input reporting low pressure values and EditorSpinSlider not registering that as a continuous mouse button press.