microsoft / PowerToys

Windows system utilities to maximize productivity
MIT License
109.66k stars 6.46k forks source link

Make fancyzones touch friendly. #376

Open Rustenberg opened 5 years ago

Rustenberg commented 5 years ago

Summary of the new feature/enhancement

People with touch inputs are unable to use the Shift key to activate zones. While zones can always stay active if toggle is disabled, windows are the not able to be dragged without snapping. This would be one of the solutions for usage of Fancy zones for people with only touch input available.

Proposed technical implementation details (optional)

My suggestion is to add another toggle that will activate touch control. Parallel to the shift key, zones are to be activated when window is dragged and another 1 finger is touching the screen (So 2 fingers 1 dragging [1st finger], 1 touching [2nd finger]). Zones would disappear if [2nd finger] is lifted, and reappear if [2nd finger] is placed on the screen, the first finger would still be dragging the window.

Jay-o-Way commented 2 years ago

@SeraphimaZ Think there's possibilities in detecting touch and/or pen input?

SeraphimaZykova commented 2 years ago

We can try it with the WM_TOUCH message.

petti1589 commented 1 year ago

I got this working with GESTURESIGN from Microsoft Store. I configured FancyZones to activate when right clicking while dragging a window. In GESTURESIGN I set two finger klick as rightclick. This way FancyZones activates when tapping with a second finger while dragging the window with the first finger. I also set two gestures to press and release ctrl for selecting multiple zones. At the moment i have to manually release ctrl.

roxk commented 1 year ago

If no one is working on it, I can give it a shot.

On top of single-finger-holding to activate, I'd also like to consider 1-hand-touch scenario, where another hand might be holding e.g. a Surface.

I would implement double-tap-to-activate, and double-tap-to-deactivate. So a user could start dragging a window with index finger, and then double tap with middle finger to activate zone. The middle finger doesn't need to keep touching the screen to keep activating the zone - this activation is edge-triggered. To stop zone activation, just double-tap again.

roxk commented 1 year ago

Sadly it seems it's not doable. There is no way to hook globally for WM_TOUCH.