fusuma-plugin-thumbsense 0.10.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/fusuma-plugin-thumbsense.gemspec +1 -1
- data/lib/fusuma/plugin/buffers/thumbsense_buffer.rb +9 -8
- data/lib/fusuma/plugin/detectors/thumbsense_detector.rb +29 -8
- data/lib/fusuma/plugin/inputs/pointing_stick_input.rb +1 -0
- data/lib/fusuma/plugin/thumbsense/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 04f4cb11433bf62016e1a4b8155c9a9e0526796599367280705eac2a47446735
|
4
|
+
data.tar.gz: fe2486a552f788a3d333e3e9b46dfb4d2ea6e8ee0d20d4228713deec05b943e1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: efa45c56517dce953e877b77808b10ce9d7ab1824fa91a616b961306997c9499dfc771b4ce4d4516730cdbc1481dcdae09b4ce3fce8997844a50e3ed4cf79a9e
|
7
|
+
data.tar.gz: 3e4c3f38c2bf24b9ffb31b407760f50b8aecc3b982ad35540ec80d73acf01faeb3d3d12e85239c78f7ed8f65c93930a372abf941344c56b6d3c006d31184c622
|
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
|
|
26
26
|
# support focal (20.04LTS) 2.7
|
27
27
|
spec.add_dependency "fusuma", ">= 3.2"
|
28
28
|
spec.add_dependency "fusuma-plugin-keypress", ">= 0.11"
|
29
|
-
spec.add_dependency "fusuma-plugin-remap", ">= 0.
|
29
|
+
spec.add_dependency "fusuma-plugin-remap", ">= 0.11.0"
|
30
30
|
spec.metadata = {
|
31
31
|
"rubygems_mfa_required" => "true"
|
32
32
|
}
|
@@ -18,10 +18,7 @@ module Fusuma
|
|
18
18
|
def clear_expired(*)
|
19
19
|
return if @events.empty?
|
20
20
|
|
21
|
-
|
22
|
-
return if !ended?(@events.last)
|
23
|
-
|
24
|
-
clear
|
21
|
+
clear if ended? || cancelled?
|
25
22
|
end
|
26
23
|
|
27
24
|
# @param event [Event]
|
@@ -39,12 +36,16 @@ module Fusuma
|
|
39
36
|
@events.map { |e| e.record.finger }.max
|
40
37
|
end
|
41
38
|
|
42
|
-
def ended?
|
43
|
-
|
39
|
+
def ended?
|
40
|
+
@events.last.record.status == "end"
|
41
|
+
end
|
42
|
+
|
43
|
+
def cancelled?
|
44
|
+
@events.last.record.status == "cancelled"
|
44
45
|
end
|
45
46
|
|
46
|
-
def begin?
|
47
|
-
|
47
|
+
def begin?
|
48
|
+
@events.last.record.status == "begin"
|
48
49
|
end
|
49
50
|
end
|
50
51
|
end
|
@@ -47,11 +47,13 @@ module Fusuma
|
|
47
47
|
return
|
48
48
|
end
|
49
49
|
|
50
|
+
before_tap, after_tap = partition_keypress_with_first_tap
|
51
|
+
|
50
52
|
# When keypress event is first:
|
51
53
|
# If current layer is thumbsense, the layer should not be changed
|
52
54
|
# If current layer is not thumbsense, it should remain a normal key
|
53
55
|
# In other words, if the key event comes first, do nothing
|
54
|
-
if keypress_first?
|
56
|
+
if keypress_first?(before_tap)
|
55
57
|
MultiLogger.debug("keypress event is first")
|
56
58
|
|
57
59
|
return
|
@@ -67,9 +69,11 @@ module Fusuma
|
|
67
69
|
)
|
68
70
|
)
|
69
71
|
|
72
|
+
keys = pressed_codes(@keypress_buffer.events.map(&:record))
|
73
|
+
|
70
74
|
# TODO: Threshold
|
71
75
|
# create remap index
|
72
|
-
index = if (
|
76
|
+
index = if !pressed_codes(after_tap).empty?
|
73
77
|
MultiLogger.debug("thumbsense remap index created: #{keys}")
|
74
78
|
combined_keys = keys.join("+")
|
75
79
|
create_event(
|
@@ -92,8 +96,7 @@ module Fusuma
|
|
92
96
|
end
|
93
97
|
|
94
98
|
# @return [Array<String>]
|
95
|
-
def pressed_codes
|
96
|
-
records = @keypress_buffer.events.map(&:record)
|
99
|
+
def pressed_codes(records)
|
97
100
|
codes = []
|
98
101
|
records.each do |r|
|
99
102
|
if r.status == "pressed"
|
@@ -109,7 +112,7 @@ module Fusuma
|
|
109
112
|
def touch_released?
|
110
113
|
return true if @thumbsense_buffer.empty?
|
111
114
|
|
112
|
-
@thumbsense_buffer.
|
115
|
+
@thumbsense_buffer.ended? || @thumbsense_buffer.cancelled?
|
113
116
|
end
|
114
117
|
|
115
118
|
# @return [TrueClass, FalseClass]
|
@@ -131,15 +134,33 @@ module Fusuma
|
|
131
134
|
# @param thumbsense_buffer [Buffer]
|
132
135
|
# @return [TrueClass] if keypress event is first
|
133
136
|
# @return [FalseClass] if keypress event is NOT first or buffers are empty
|
134
|
-
def keypress_first?
|
135
|
-
return false if @thumbsense_buffer.empty? ||
|
137
|
+
def keypress_first?(keypress_records)
|
138
|
+
return false if @thumbsense_buffer.empty? || keypress_records.empty?
|
136
139
|
|
137
|
-
if (keys = pressed_codes) && !keys.empty?
|
140
|
+
if (keys = pressed_codes(keypress_records)) && !keys.empty?
|
138
141
|
return false if MODIFIER_KEYS.include?(keys.first)
|
139
142
|
end
|
140
143
|
|
141
144
|
@keypress_buffer.events.first.time < @thumbsense_buffer.events.first.time
|
142
145
|
end
|
146
|
+
|
147
|
+
def partition_keypress_with_first_tap
|
148
|
+
return [], [] if @thumbsense_buffer.empty?
|
149
|
+
|
150
|
+
first_tap_time = @thumbsense_buffer.events.first.time
|
151
|
+
|
152
|
+
before_tap = []
|
153
|
+
after_tap = []
|
154
|
+
|
155
|
+
@keypress_buffer.events.each do |event|
|
156
|
+
if event.time < first_tap_time
|
157
|
+
before_tap << event.record
|
158
|
+
else
|
159
|
+
after_tap << event.record
|
160
|
+
end
|
161
|
+
end
|
162
|
+
[before_tap, after_tap]
|
163
|
+
end
|
143
164
|
end
|
144
165
|
end
|
145
166
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fusuma-plugin-thumbsense
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- iberianpig
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-05-
|
11
|
+
date: 2025-05-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fusuma
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
47
|
+
version: 0.11.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: 0.11.0
|
55
55
|
description: fusuma-plugin-thumbsense is Fusuma plugin for thumbsense.
|
56
56
|
email:
|
57
57
|
- yhkyky@gmail.com
|