how do i go about obtaining the physical distance traveled by an input-device
specifically for trackpad (and magicmouse if possible)
and specifically in a multi-touch scenario if possible (for example, the physical distance each finger on the trackpad has traveled)
this is for NSView in a custom Xamarin.Forms renderer
specifically i am attempting to implement a cross-platform Gesture API that does not depend on surface area size, specifically targeting Windows, Linux, MacOS, and Android
i CANNOT use the mouse cursor position to implement the gestures since on a trackpad only the first finger down is mapped to the cursor position while all other fingers do not contain a cursor position
for example
small area on built-in trackpad's
large area on external trackpads and mobile devices
infinite area on magic-mouse or other external mice
this, combined with a sensitivity setting to account for large displays where the use may want a higher sensitivity on a larger display and a smaller sensitivity on a smaller display,
should be sufficent to implement cross-platform gestures that can work in a portable way without too much effort to implement with the api
(tho i suspect this sensitivity will be minor changes unless a very large surface area where the sensitivity difference would be noticible)
Post
Replies
Boosts
Views
Activity
macOS Catalina
Version: 10.15.7 (19H15)
MacBook Pro (13-inch, Mid 2012)
is this a driver bug?
touch and hold the bottom left corner of the touchpad, say this has identity 140400531209680
touch and hold any other region of the touch pad that is not close to your finger (eg top left, middle, top right, bottom right), say top right, this should produce a touch with identity 140400531632704, however it is followed by a remove event with identity 140400531209680
remove the finger you just added, eg the one with identity 140400531632704 (top right finger), this should produce a touch with identity 140400534273456 (assumably bottom left finger) followed by a remove with identity 140400531632704 (top right finger)
remove the finger that originally had identity 140400531209680 (bottom left finger), this should produce a remove with identity 140400534273456 (assumably bottom left finger)
to summarise:
bottom left finger down:
touch: (bottom left)
identity 140400531209680
top right finger down:
touch: (top right)
identity 140400531632704
remove: (bottom left)
identity 140400531209680
top right finger up:
touch: (assumably bottom left)
identity 140400534273456
remove: (top right)
identity 140400531632704
bottom left finger up:
remove: (assumably bottom left)
identity 140400534273456
also if i remove bottom left before top right then the following happens
bottom left finger down:
touch: (bottom left)
identity 140470963117120
top right finger down:
touch: (top right)
identity 140470961970768
remove: (bottom left)
identity 140470963117120
bottom left finger up:
(nothing happens)
top right finger up:
remove: (top right)
identity 140470961970768