fusuma-plugin-tap 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +5 -5
- data/CHANGELOG.md +12 -0
- data/bin/libinput_debug_events_generator.rb +4 -1
- data/lib/fusuma/plugin/buffers/tap_buffer.rb +10 -2
- data/lib/fusuma/plugin/detectors/tap_detector.rb +16 -7
- data/lib/fusuma/plugin/parsers/tap_parser.rb +9 -3
- data/lib/fusuma/plugin/tap/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2bedc73a6f30eada228504ea4b0c09b7c8cfb274a67764f6bcc93df88d63439d
|
4
|
+
data.tar.gz: 9b00f18217502e62dc83776231bf6de7ef5f7705f04178c67f4dd1f569675a77
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 11ea664f6f1ca08ef08fc0ef759634066a7f813cf5b43502294a034e96349e58fddbce4e223d3ac858c847d9a508a91335b4f262bc25b992e91f3559a9591a82
|
7
|
+
data.tar.gz: a0db20541d07c7542b7c38b8c6f34cd61160dce875dfd103251446dc80cf173fd6fec1e20cc61d476bf912af7b6c2ae024e4e2e761577c1e87165f157c86cc56
|
data/.rubocop_todo.yml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on 2020-05-
|
3
|
+
# on 2020-05-10 21:28:27 +0900 using RuboCop version 0.82.0.
|
4
4
|
# The point is for the user to remove these configuration records
|
5
5
|
# one by one as the offenses are removed from the code base.
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
@@ -16,7 +16,7 @@ Gemspec/RequiredRubyVersion:
|
|
16
16
|
# Offense count: 5
|
17
17
|
# Configuration parameters: IgnoredMethods.
|
18
18
|
Metrics/AbcSize:
|
19
|
-
Max:
|
19
|
+
Max: 40
|
20
20
|
|
21
21
|
# Offense count: 1
|
22
22
|
# Configuration parameters: CountComments, ExcludedMethods.
|
@@ -24,17 +24,17 @@ Metrics/AbcSize:
|
|
24
24
|
Metrics/BlockLength:
|
25
25
|
Max: 33
|
26
26
|
|
27
|
-
# Offense count:
|
27
|
+
# Offense count: 3
|
28
28
|
# Configuration parameters: IgnoredMethods.
|
29
29
|
Metrics/CyclomaticComplexity:
|
30
|
-
Max:
|
30
|
+
Max: 24
|
31
31
|
|
32
32
|
# Offense count: 5
|
33
33
|
# Configuration parameters: CountComments, ExcludedMethods.
|
34
34
|
Metrics/MethodLength:
|
35
35
|
Max: 45
|
36
36
|
|
37
|
-
# Offense count:
|
37
|
+
# Offense count: 3
|
38
38
|
# Configuration parameters: IgnoredMethods.
|
39
39
|
Metrics/PerceivedComplexity:
|
40
40
|
Max: 11
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [v0.2.0](https://github.com/iberianpig/fusuma-plugin-tap/tree/v0.2.0) (2020-05-05)
|
4
|
+
|
5
|
+
[Full Changelog](https://github.com/iberianpig/fusuma-plugin-tap/compare/v0.1.3...v0.2.0)
|
6
|
+
|
7
|
+
**Merged pull requests:**
|
8
|
+
|
9
|
+
- Support libinput v1.15.5 [\#3](https://github.com/iberianpig/fusuma-plugin-tap/pull/3) ([iberianpig](https://github.com/iberianpig))
|
10
|
+
|
11
|
+
## [v0.1.3](https://github.com/iberianpig/fusuma-plugin-tap/tree/v0.1.3) (2020-04-20)
|
12
|
+
|
13
|
+
[Full Changelog](https://github.com/iberianpig/fusuma-plugin-tap/compare/v0.1.1...v0.1.3)
|
14
|
+
|
3
15
|
## [v0.1.1](https://github.com/iberianpig/fusuma-plugin-tap/tree/v0.1.1) (2020-04-19)
|
4
16
|
|
5
17
|
[Full Changelog](https://github.com/iberianpig/fusuma-plugin-tap/compare/v0.1.0...v0.1.1)
|
@@ -12,6 +12,7 @@ class LibinputDebugEventsGenerator
|
|
12
12
|
@gesture_name = Pathname.new(evemu_record).basename
|
13
13
|
@list_devices = ENV.fetch('LIBINPUT_LIST_DEVICES', 'libinput list-devices')
|
14
14
|
@debug_events = ENV.fetch('LIBINPUT_DEBUG_EVENTS', 'libinput debug-events')
|
15
|
+
@libinput_version = ENV.fetch('LIBINPUT_VERSION', 'libinput list-devices')
|
15
16
|
end
|
16
17
|
|
17
18
|
def generate_debug_events
|
@@ -89,7 +90,9 @@ class LibinputDebugEventsGenerator
|
|
89
90
|
end
|
90
91
|
|
91
92
|
def version
|
92
|
-
@
|
93
|
+
raise 'Make rebuild libinput' unless @libinput_version == `#{@list_devices} --version`.chomp
|
94
|
+
|
95
|
+
@libinput_version
|
93
96
|
end
|
94
97
|
end
|
95
98
|
|
@@ -22,7 +22,7 @@ module Fusuma
|
|
22
22
|
# @param event [Event]
|
23
23
|
# @return [NilClass, TapBuffer]
|
24
24
|
def buffer(event)
|
25
|
-
return
|
25
|
+
return unless (event&.tag == source) || (event&.tag == 'libinput_gesture_parser')
|
26
26
|
|
27
27
|
# NOTE: need to set `begin` event at first of buffer
|
28
28
|
clear && return unless bufferable?(event)
|
@@ -50,12 +50,20 @@ module Fusuma
|
|
50
50
|
else
|
51
51
|
false
|
52
52
|
end
|
53
|
-
|
53
|
+
when 'keep', 'touch', 'hold', 'release', 'move'
|
54
54
|
if empty?
|
55
55
|
false
|
56
56
|
else
|
57
57
|
true
|
58
58
|
end
|
59
|
+
when 'update' # libinput_gesture_parser
|
60
|
+
if empty?
|
61
|
+
false
|
62
|
+
else
|
63
|
+
true
|
64
|
+
end
|
65
|
+
else
|
66
|
+
raise "Unexpected status: #{event.record.status}"
|
59
67
|
end
|
60
68
|
end
|
61
69
|
|
@@ -12,17 +12,16 @@ module Fusuma
|
|
12
12
|
|
13
13
|
BASE_INTERVAL = 0.5
|
14
14
|
BASE_HOLDING_TIME = 0.1
|
15
|
-
BASE_TAP_TIME =
|
15
|
+
BASE_TAP_TIME = 0.4
|
16
16
|
|
17
17
|
# @param buffers [Array<Buffer>]
|
18
18
|
# @return [Event] if event is detected
|
19
19
|
# @return [NilClass] if event is NOT detected
|
20
20
|
def detect(buffers)
|
21
21
|
buffer = buffers.find { |b| b.type == BUFFER_TYPE }
|
22
|
+
gesture_buffer = buffers.find { |b| b.type == 'gesture' }
|
22
23
|
|
23
|
-
return if buffer.empty?
|
24
|
-
|
25
|
-
finger = buffer.finger
|
24
|
+
return if buffer.empty? || !gesture_buffer.empty? || moved?(buffer)
|
26
25
|
|
27
26
|
holding_time = buffer.events.last.time - buffer.events.first.time
|
28
27
|
|
@@ -34,6 +33,8 @@ module Fusuma
|
|
34
33
|
|
35
34
|
return if direction.nil?
|
36
35
|
|
36
|
+
finger = buffer.finger
|
37
|
+
|
37
38
|
buffer.clear
|
38
39
|
|
39
40
|
index = create_index(finger: finger, direction: direction)
|
@@ -53,21 +54,29 @@ module Fusuma
|
|
53
54
|
)
|
54
55
|
end
|
55
56
|
|
57
|
+
# @return [TrueClass, FalseClass]
|
56
58
|
def hold?(buffer, holding_time)
|
57
|
-
return false if holding_time <
|
59
|
+
return false if holding_time < 0.7
|
58
60
|
|
59
61
|
return true if buffer.finger == 4
|
60
62
|
|
61
63
|
true if buffer.events.any? { |e| e.record.status == 'hold' }
|
62
64
|
end
|
63
65
|
|
66
|
+
# @return [TrueClass, FalseClass]
|
64
67
|
def tap?(buffer, holding_time)
|
65
68
|
return false if holding_time > 0.15
|
66
69
|
|
67
|
-
|
70
|
+
released_all?(buffer)
|
71
|
+
end
|
72
|
+
|
73
|
+
# @return [TrueClass, FalseClass]
|
74
|
+
def moved?(buffer)
|
75
|
+
buffer.events.any? { |e| e.record.status == 'move' }
|
68
76
|
end
|
69
77
|
|
70
|
-
|
78
|
+
# @return [TrueClass, FalseClass]
|
79
|
+
def released_all?(buffer)
|
71
80
|
touch_num = buffer.events.count { |e| (e.record.status =~ /begin|touch/) }
|
72
81
|
release_num = buffer.events.count { |e| e.record.status =~ /release|end/ }
|
73
82
|
MultiLogger.debug(touch_num: touch_num, release_num: release_num)
|
@@ -94,11 +94,17 @@ module Fusuma
|
|
94
94
|
1
|
95
95
|
end
|
96
96
|
# KEEP
|
97
|
-
when
|
97
|
+
when 'LIBINPUT TIMEOUT', # Timeout Event
|
98
|
+
/\sgesture(| state):\s/ # 1.10.4 prints "gesture state: GESTURE_STATE_.*"
|
98
99
|
# NOTE: treat the "gesture(| state):" as KEEP
|
99
100
|
status = 'keep'
|
100
101
|
finger = 0
|
101
102
|
|
103
|
+
# MOVE
|
104
|
+
when /\sPOINTER_AXIS\s/, /\sPOINTER_MOTION\s/, /\sTAP_EVENT_PALM\s/
|
105
|
+
status = 'move'
|
106
|
+
finger = 0
|
107
|
+
|
102
108
|
# RELEASE
|
103
109
|
when /\stap(?:| state):\s.*(#{(STATE[:touches] | STATE[:holds]).join('|')}) → TAP_EVENT_RELEASE → (#{STATE[:releases].join('|')})/
|
104
110
|
|
@@ -122,8 +128,8 @@ module Fusuma
|
|
122
128
|
|
123
129
|
matched = Regexp.last_match
|
124
130
|
finger = case matched[1]
|
125
|
-
when 'TAP_STATE_DEAD'
|
126
|
-
|
131
|
+
when 'TAP_STATE_DEAD' # NOTE: 2 finger hold -> scroll become TAP_STATE_DEAD
|
132
|
+
0
|
127
133
|
when 'TAP_STATE_TOUCH_3', 'TAP_STATE_TOUCH_3_HOLD'
|
128
134
|
3
|
129
135
|
when 'TAP_STATE_TOUCH_2', 'TAP_STATE_TOUCH_2_HOLD', 'TAP_STATE_TOUCH_2_RELEASE'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fusuma-plugin-tap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- iberianpig
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-05-
|
11
|
+
date: 2020-05-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fusuma
|