Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Pen Support (Soft Keys) #11

Open
wants to merge 19 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
737e546
Fix back button during setup & edit
Mrcubix Oct 8, 2024
a9ac856
Add IsMultiTouch to Settings & change version to 1
Mrcubix Oct 8, 2024
3802dcd
Prepare UX for Soft Keys Support for pens
Mrcubix Oct 8, 2024
81dcefd
Fix Multi Touch setting not being passed to setups
Mrcubix Oct 8, 2024
aa3f279
Potentially fix some warnings in a non-destructive way
Mrcubix Oct 8, 2024
21571e4
Implemented Plugin side of Pen Gestures (Now working)
Mrcubix Oct 9, 2024
c8fe8c7
Remove leftover touch check in the 0.6.x Pen only Plugin
Mrcubix Oct 9, 2024
c4fb446
Remove abstract on BackRequested event in NavigableViewModel to prope…
Mrcubix Oct 9, 2024
af5d434
Use Tablet Digitizer in 0.5.x instead of auxiliary
Mrcubix Oct 9, 2024
8281cd0
Simplify getting lpmm depending on whether a profile is Multi-touch o…
Mrcubix Oct 9, 2024
e0b14e4
Add some documentation to profiles
Mrcubix Oct 10, 2024
c0de67d
Remove extra newline in doc
Mrcubix Oct 10, 2024
e3c977e
Implement 'Clear()' Method in Bindable Profile to reduce bloat in Fro…
Mrcubix Oct 10, 2024
382a39e
Avoid changing the current profile if tablets change
Mrcubix Oct 10, 2024
13d5e23
Make sure to remove Tablet from active tablets when disposing
Mrcubix Oct 10, 2024
0961f24
Separate gesture specific TODO into their own file
Mrcubix Oct 29, 2024
12e287b
Use contains instead of StartsWith
Mrcubix Oct 30, 2024
93bda51
Update README how to help section
Mrcubix Nov 26, 2024
dec7d42
Remove installer suffix as it's not needed anymore
Mrcubix Nov 26, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,11 @@ I may be able to help you out & your question may help others in the future by b

## I am a Developer, how can i help?

- Currently i'm having issues dealing with both versions at the same time, mostly because of an ongoing bug in .NET project handling.
- Packaging for Linux & MacOS (Binary Tar for each platforms + .deb?)

- ~~Currently i'm having issues dealing with both versions at the same time, mostly because of an ongoing bug in .NET project handling.
It seems to be currently impossible to have have a multi-target project & have dependencies change depending on the target framework.
What i'm noticing is that, the dependency with the highest version is always used, even if it's not compatible with the framework that is being targeted.
What i'm noticing is that, the dependency with the highest version is always used, even if it's not compatible with the framework that is being targeted.~~

- You can't use multiple gestures at the same time, as gestures with higher requirements will cancel out the lower ones.

Expand Down
106 changes: 106 additions & 0 deletions TODO-Gestures.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
## Un-ordered List

- [x] Absolute Position based gestures (Need to start at a specific point)
- [x] Relative Position based gestures (Can be started from anywhere)

### Node-Based Gestures

- [ ] Gesture Recording
- [ ] Gesture Recognition
- [ ] Any single touch in a start nodes is a gesture
- [ ] More than 2 touches is a gesture
- [ ] Manual Gesture Setup
- [-] Node Types
- [-] Shared Elements
- [x] IsGestureStart (bool) (length == 1 || index == 0)
- [x] IsGestureEnd (bool) (length == 1 || index == length - 1)
- [x] Position (Vector2)
- [x] Allowed Position Deviation (double)
- [x] Timestamp (double)
- [x] Allowed Timestamp Deviation (double)
- [x] IsHold (bool)
- [x] Hold Duration (double)
- [x] Nodes Can be dragged
- [ ] Nodes Can be resized (Only for the start and end nodes)
- [ ] Rectangle
- [ ] Circle

### Basic Gestures

#### Gestures

- [x] Tap (Any)
- [x] Relative
- [x] Absolute

- [x] Hold (Any)
- [x] Relative
- [x] Absolute

- [x] Swipe (Single)
- [x] Relative
- [x] Absolute

- [x] Pan (Single)
- [x] Relative
- [x] Absolute

- [x] Pinch (Single)
- [x] Relative
- [x] Absolute

- [x] Rotate (Single)
- [x] Relative
- [x] Absolute

#### Gestures Unit Tests

- [x] Tap (Any)
- [x] Relative
- [x] Absolute

- [x] Hold (Any)
- [x] Relative
- [x] Absolute

- [x] Swipe (Single)
- [x] Relative
- [x] Absolute

- [x] Pan (Single)
- [x] Relative
- [x] Absolute

- [x] Pinch (Single)
- [x] Relative
- [x] Absolute

- [x] Rotate (Single)
- [x] Relative
- [x] Absolute

#### Gestures Setup

- [x] Tap (Any)
- [x] Relative
- [x] Absolute

- [x] Hold (Any)
- [x] Relative
- [x] Absolute

- [x] Swipe (Single)
- [x] Relative
- [x] Absolute

- [x] Pan (Single)
- [x] Relative
- [x] Absolute

- [x] Pinch (Single)
- [x] Relative
- [x] Absolute

- [x] Rotate (Single)
- [x] Relative
- [x] Absolute
137 changes: 32 additions & 105 deletions TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,112 +4,17 @@

~~Add a `OnExternalGestureCompleted` event to `IGestures` with as parameter an GestureCompletedEventArgs that contains the gesture type and the gesture data.~~

## Un-ordered List

- [x] Absolute Position based gestures (Need to start at a specific point)
- [x] Relative Position based gestures (Can be started from anywhere)

### Node-Based Gestures
## Medium Priority Tasks

- [ ] Gesture Recording
- [ ] Gesture Recognition
- [ ] Any single touch in a start nodes is a gesture
- [ ] More than 2 touches is a gesture
- [ ] Manual Gesture Setup
- [-] Node Types
- [-] Shared Elements
- [x] IsGestureStart (bool) (length == 1 || index == 0)
- [x] IsGestureEnd (bool) (length == 1 || index == length - 1)
- [x] Position (Vector2)
- [x] Allowed Position Deviation (double)
- [x] Timestamp (double)
- [x] Allowed Timestamp Deviation (double)
- [x] IsHold (bool)
- [x] Hold Duration (double)
- [x] Nodes Can be dragged
- [ ] Nodes Can be resized (Only for the start and end nodes)
- [ ] Rectangle
- [ ] Circle

### Basic Gestures

#### Gestures

- [x] Tap (Any)
- [x] Relative
- [x] Absolute

- [x] Hold (Any)
- [x] Relative
- [x] Absolute

- [x] Swipe (Single)
- [x] Relative
- [x] Absolute

- [x] Pan (Single)
- [x] Relative
- [x] Absolute

- [x] Pinch (Single)
- [x] Relative
- [x] Absolute

- [x] Rotate (Single)
- [x] Relative
- [x] Absolute

#### Gestures Unit Tests

- [x] Tap (Any)
- [x] Relative
- [x] Absolute

- [x] Hold (Any)
- [x] Relative
- [x] Absolute

- [x] Swipe (Single)
- [x] Relative
- [x] Absolute

- [x] Pan (Single)
- [x] Relative
- [x] Absolute

- [x] Pinch (Single)
- [x] Relative
- [x] Absolute

- [x] Rotate (Single)
- [x] Relative
- [x] Absolute

#### Gestures Setup

- [x] Tap (Any)
- [x] Relative
- [x] Absolute
### Bindings Rework

- [x] Hold (Any)
- [x] Relative
- [x] Absolute
- [ ] Wrap different versions of Binding under a single generic interface, with a `Press()` and `Release()` method.

- [x] Swipe (Single)
- [x] Relative
- [x] Absolute
### Debugger

- [x] Pan (Single)
- [x] Relative
- [x] Absolute
- [ ] Implement an In-app gesture debugger, draw the inputs as well as state changes when they happen. (Simillar to osu!lazer's replay analyzer or Rewind)

- [x] Pinch (Single)
- [x] Relative
- [x] Absolute

- [x] Rotate (Single)
- [x] Relative
- [x] Absolute
## Documentation

### Dev Documentation (Github Wiki)

Expand All @@ -122,6 +27,32 @@ For each of these topics, indicates in which way such systems could be improved,
- [ ] Gesture Setup
- [ ] Gesture Unit Tests

- [ ] Intended behaviors
- [ ] UX
- [ ] Connection Screen
- [ ] Binding Overview (Main View)
- [ ] Gesture Setup
- [ ] Gesture Selection Screen
- [ ] Gesture Setup Screen
- [ ] Options Selection Screen
- [ ] Binding Selection Screen
- [ ] Tweaks Screen (Area & Gesture specific tweaks)
- [ ] Gesture Editing
- [ ] Gesture Removal

- [ ] Gestures
- [ ] Tap
- [ ] Hold
- [ ] Swipe
- [ ] Pan
- [ ] Pinch
- [ ] Rotate

- [ ] UX Testing Procedures
- [ ] Gesture Testing Procedures
- [ ] Unit Tests
- [ ] Manual Testing

### User Documentation (Github Pages)

- [ ] A download link for the current platform & another to the github releases page
Expand All @@ -146,7 +77,3 @@ For each of these topics, indicates in which way such systems could be improved,
- [-] FAQ
- [-] Basic
- [-] Troubleshooting

### Bindings Rework

- [ ] Wrap different versions of Binding under a single generic interface, with a `Press()` and `Release()` method.
6 changes: 5 additions & 1 deletion Touch-Gestures-0.6.x/Extensions/TabletReferenceExtensions.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using System.Numerics;
using OpenTabletDriver.Desktop.Reflection;
using OpenTabletDriver.Plugin.Tablet;
Expand All @@ -11,7 +12,10 @@ public static class TabletReferenceExtensions
{
public static SharedTabletReference ToShared(this TabletReference tablet, TouchSettings touchSettings)
{
var digitizer = tablet.Properties.Specifications.Digitizer;
var digitizer = tablet?.Properties?.Specifications?.Digitizer;

if (tablet == null || digitizer == null)
throw new ArgumentNullException(nameof(tablet));

var penDigitizer = new SharedTabletDigitizer
{
Expand Down
Loading
Loading