fusuma-plugin-tap 0.2.0 → 0.4.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +5 -0
- data/.rubocop_todo.yml +6 -6
- data/CHANGELOG.md +48 -0
- data/Makefile +15 -4
- data/README.md +5 -0
- data/bin/libinput_debug_events_generator.rb +9 -1
- data/fusuma-plugin-tap.gemspec +1 -1
- data/lib/fusuma/plugin/buffers/tap_buffer.rb +4 -2
- data/lib/fusuma/plugin/detectors/tap_detector.rb +43 -18
- data/lib/fusuma/plugin/parsers/tap_parser.rb +14 -5
- data/lib/fusuma/plugin/tap/version.rb +1 -1
- metadata +10 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c46c3f606aa83757b439afac123cd8efd4a87b3205ccb0364ca565998ee4e6e2
|
4
|
+
data.tar.gz: cd0db523002ead56784c44df3b8443d635cb5c8dc4c8aa0a1616994eabf1c44e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 920c2f083dde9a3c67edb42de1295941812e992e0753b05da482169aba8f2596c1a18802c6d67218bb8b5f07c44862a067e9a02945041b6c0c6ee7eaeeae8e80
|
7
|
+
data.tar.gz: fb8b27a7ed3853428ecc810c3ffdaf941676a2575eced35d4d264f6191df782cb0f1e7bf770f21d01caaeb92611821e1c825b99dcc96a242866c02ab83fd74ac
|
data/.rubocop.yml
CHANGED
@@ -18,6 +18,11 @@ Metrics/MethodLength:
|
|
18
18
|
- 'lib/fusuma/plugin/parsers/tap_parser.rb'
|
19
19
|
- 'lib/fusuma/plugin/parsers/tap_detector.rb'
|
20
20
|
|
21
|
+
Metrics/ClassLength:
|
22
|
+
Exclude:
|
23
|
+
- 'lib/fusuma/plugin/parsers/tap_parser.rb'
|
24
|
+
- 'lib/fusuma/plugin/parsers/tap_detector.rb'
|
25
|
+
|
21
26
|
Layout/LineLength:
|
22
27
|
Max: 100
|
23
28
|
Exclude:
|
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-07-05 15:49:25 UTC using RuboCop version 0.86.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: 42
|
20
20
|
|
21
21
|
# Offense count: 1
|
22
22
|
# Configuration parameters: CountComments, ExcludedMethods.
|
@@ -24,20 +24,20 @@ 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: 25
|
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: 2
|
38
38
|
# Configuration parameters: IgnoredMethods.
|
39
39
|
Metrics/PerceivedComplexity:
|
40
|
-
Max:
|
40
|
+
Max: 13
|
41
41
|
|
42
42
|
# Offense count: 1
|
43
43
|
Style/Documentation:
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,53 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [v0.4.0.pre](https://github.com/iberianpig/fusuma-plugin-tap/tree/v0.4.0.pre) (2020-11-09)
|
4
|
+
|
5
|
+
[Full Changelog](https://github.com/iberianpig/fusuma-plugin-tap/compare/v0.3.2...v0.4.0.pre)
|
6
|
+
|
7
|
+
## [v0.3.2](https://github.com/iberianpig/fusuma-plugin-tap/tree/v0.3.2) (2020-08-13)
|
8
|
+
|
9
|
+
[Full Changelog](https://github.com/iberianpig/fusuma-plugin-tap/compare/v0.3.1...v0.3.2)
|
10
|
+
|
11
|
+
**Fixed bugs:**
|
12
|
+
|
13
|
+
- Fix Parser when detecting a false 4 finger tap after a pinch gesture [\#5](https://github.com/iberianpig/fusuma-plugin-tap/pull/5) ([iberianpig](https://github.com/iberianpig))
|
14
|
+
|
15
|
+
**Closed issues:**
|
16
|
+
|
17
|
+
- tap 4 not registered [\#4](https://github.com/iberianpig/fusuma-plugin-tap/issues/4)
|
18
|
+
|
19
|
+
**Merged pull requests:**
|
20
|
+
|
21
|
+
- test\(tap\_parser\): reproduce the bug that 4 finger tap after detecting palm [\#8](https://github.com/iberianpig/fusuma-plugin-tap/pull/8) ([iberianpig](https://github.com/iberianpig))
|
22
|
+
|
23
|
+
## [v0.3.1](https://github.com/iberianpig/fusuma-plugin-tap/tree/v0.3.1) (2020-05-15)
|
24
|
+
|
25
|
+
[Full Changelog](https://github.com/iberianpig/fusuma-plugin-tap/compare/v0.3.0...v0.3.1)
|
26
|
+
|
27
|
+
**Closed issues:**
|
28
|
+
|
29
|
+
- Reduce false positives with Hold gesture [\#2](https://github.com/iberianpig/fusuma-plugin-tap/issues/2)
|
30
|
+
|
31
|
+
## [v0.3.0](https://github.com/iberianpig/fusuma-plugin-tap/tree/v0.3.0) (2020-05-10)
|
32
|
+
|
33
|
+
[Full Changelog](https://github.com/iberianpig/fusuma-plugin-tap/compare/v0.2.0...v0.3.0)
|
34
|
+
|
35
|
+
**Closed issues:**
|
36
|
+
|
37
|
+
- 4 finger tap / hold is not being registered [\#1](https://github.com/iberianpig/fusuma-plugin-tap/issues/1)
|
38
|
+
|
39
|
+
## [v0.2.0](https://github.com/iberianpig/fusuma-plugin-tap/tree/v0.2.0) (2020-05-05)
|
40
|
+
|
41
|
+
[Full Changelog](https://github.com/iberianpig/fusuma-plugin-tap/compare/v0.1.3...v0.2.0)
|
42
|
+
|
43
|
+
**Merged pull requests:**
|
44
|
+
|
45
|
+
- Support libinput v1.15.5 [\#3](https://github.com/iberianpig/fusuma-plugin-tap/pull/3) ([iberianpig](https://github.com/iberianpig))
|
46
|
+
|
47
|
+
## [v0.1.3](https://github.com/iberianpig/fusuma-plugin-tap/tree/v0.1.3) (2020-04-20)
|
48
|
+
|
49
|
+
[Full Changelog](https://github.com/iberianpig/fusuma-plugin-tap/compare/v0.1.1...v0.1.3)
|
50
|
+
|
3
51
|
## [v0.1.1](https://github.com/iberianpig/fusuma-plugin-tap/tree/v0.1.1) (2020-04-19)
|
4
52
|
|
5
53
|
[Full Changelog](https://github.com/iberianpig/fusuma-plugin-tap/compare/v0.1.0...v0.1.1)
|
data/Makefile
CHANGED
@@ -3,11 +3,22 @@
|
|
3
3
|
all: help
|
4
4
|
|
5
5
|
build: ## build libinput with LIBINPUT_VERSION
|
6
|
-
cd $(
|
6
|
+
cd $(LIBINPUT_REPO) && \
|
7
|
+
git fetch && \
|
7
8
|
git checkout $(LIBINPUT_VERSION) && \
|
8
|
-
|
9
|
-
|
10
|
-
|
9
|
+
mkdir -p builddir/$(LIBINPUT_VERSION)/ && \
|
10
|
+
meson --prefix=/usr builddir/$(LIBINPUT_VERSION)/ -Dlibwacom=false -Ddebug-gui=false -Dtests=false -Ddocumentation=false && \
|
11
|
+
ninja -C builddir/$(LIBINPUT_VERSION)/
|
12
|
+
$(LIBINPUT_REPO)/builddir/$(LIBINPUT_VERSION)/libinput-list-devices --version
|
13
|
+
|
14
|
+
version: ## libinput list-devces --version
|
15
|
+
$(LIBINPUT_REPO)/builddir/$(LIBINPUT_VERSION)/libinput-list-devices --version
|
16
|
+
|
17
|
+
list-devices: ## libinput list-devices
|
18
|
+
$(LIBINPUT_REPO)/builddir/$(LIBINPUT_VERSION)/libinput-list-devices
|
19
|
+
|
20
|
+
debug-events: ## libinput debug-events
|
21
|
+
$(LIBINPUT_REPO)/builddir/$(LIBINPUT_VERSION)/libinput-debug-events --enable-tap --verbose
|
11
22
|
|
12
23
|
help: ## show help
|
13
24
|
@grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | uniq | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
|
data/README.md
CHANGED
@@ -62,6 +62,11 @@ plugin:
|
|
62
62
|
verbose: true
|
63
63
|
```
|
64
64
|
|
65
|
+
## Known issues
|
66
|
+
* `libinput debug-events --verbose` outputs is unstable, so it may not work properly with some versions of libinput.
|
67
|
+
* **libinput 1.10.4 contains a bug that suddenly stopped detecting taps.**
|
68
|
+
* ref: https://github.com/iberianpig/fusuma-plugin-tap/pull/8
|
69
|
+
|
65
70
|
## Development
|
66
71
|
|
67
72
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
@@ -4,6 +4,7 @@
|
|
4
4
|
require 'fileutils'
|
5
5
|
require 'pathname'
|
6
6
|
require 'fusuma/device'
|
7
|
+
require 'fusuma/plugin/inputs/libinput_command_input'
|
7
8
|
|
8
9
|
# Generate libinput generator
|
9
10
|
class LibinputDebugEventsGenerator
|
@@ -12,6 +13,7 @@ class LibinputDebugEventsGenerator
|
|
12
13
|
@gesture_name = Pathname.new(evemu_record).basename
|
13
14
|
@list_devices = ENV.fetch('LIBINPUT_LIST_DEVICES', 'libinput list-devices')
|
14
15
|
@debug_events = ENV.fetch('LIBINPUT_DEBUG_EVENTS', 'libinput debug-events')
|
16
|
+
@libinput_version = ENV.fetch('LIBINPUT_VERSION', 'libinput list-devices')
|
15
17
|
end
|
16
18
|
|
17
19
|
def generate_debug_events
|
@@ -40,6 +42,10 @@ class LibinputDebugEventsGenerator
|
|
40
42
|
rescue Timeout::Error
|
41
43
|
puts 'cut out device infos'
|
42
44
|
end
|
45
|
+
if `which evemu-play` == ''
|
46
|
+
warn 'evemu-play is not found'
|
47
|
+
exit 1
|
48
|
+
end
|
43
49
|
|
44
50
|
command = "evemu-play /dev/input/#{device_id} < #{@evemu_record}"
|
45
51
|
|
@@ -89,7 +95,9 @@ class LibinputDebugEventsGenerator
|
|
89
95
|
end
|
90
96
|
|
91
97
|
def version
|
92
|
-
@
|
98
|
+
raise 'Make rebuild libinput' unless @libinput_version == `#{@list_devices} --version`.chomp
|
99
|
+
|
100
|
+
@libinput_version
|
93
101
|
end
|
94
102
|
end
|
95
103
|
|
data/fusuma-plugin-tap.gemspec
CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
|
|
26
26
|
|
27
27
|
spec.required_ruby_version = '>= 2.3' # https://packages.ubuntu.com/search?keywords=ruby&searchon=names&exact=1&suite=all§ion=main
|
28
28
|
|
29
|
-
spec.add_dependency 'fusuma', '~>
|
29
|
+
spec.add_dependency 'fusuma', '~> 2.0.0.pre2'
|
30
30
|
|
31
31
|
spec.add_development_dependency 'bundler'
|
32
32
|
spec.add_development_dependency 'github_changelog_generator', '~> 1.14'
|
@@ -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
|
26
26
|
|
27
27
|
# NOTE: need to set `begin` event at first of buffer
|
28
28
|
clear && return unless bufferable?(event)
|
@@ -50,12 +50,14 @@ 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
|
+
else
|
60
|
+
raise "Unexpected status: #{event.record.status}"
|
59
61
|
end
|
60
62
|
end
|
61
63
|
|
@@ -7,34 +7,39 @@ module Fusuma
|
|
7
7
|
module Detectors
|
8
8
|
# Detect tap event
|
9
9
|
class TapDetector < Detector
|
10
|
+
SOURCES = ['tap', 'gesture', 'timer']
|
10
11
|
BUFFER_TYPE = 'tap'
|
11
12
|
GESTURE_RECORD_TYPE = 'tap'
|
12
13
|
|
13
14
|
BASE_INTERVAL = 0.5
|
14
15
|
BASE_HOLDING_TIME = 0.1
|
15
|
-
BASE_TAP_TIME =
|
16
|
+
BASE_TAP_TIME = 0.4
|
16
17
|
|
17
18
|
# @param buffers [Array<Buffer>]
|
18
19
|
# @return [Event] if event is detected
|
19
20
|
# @return [NilClass] if event is NOT detected
|
20
21
|
def detect(buffers)
|
21
|
-
|
22
|
+
tap_buffer = buffers.find { |b| b.type == BUFFER_TYPE }
|
23
|
+
gesture_buffer = buffers.find { |b| b.type == 'gesture' }
|
24
|
+
timer_buffer = buffers.find { |b| b.type == 'timer' }
|
22
25
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
+
if tap_buffer.empty? || moved?(tap_buffer: tap_buffer, gesture_buffer: gesture_buffer)
|
27
|
+
return
|
28
|
+
end
|
26
29
|
|
27
|
-
holding_time =
|
30
|
+
holding_time = calc_holding_time(tap_buffer: tap_buffer, timer_buffer: timer_buffer)
|
28
31
|
|
29
|
-
direction = if hold?(
|
32
|
+
direction = if hold?(tap_buffer, holding_time)
|
30
33
|
'hold'
|
31
|
-
elsif tap?(
|
34
|
+
elsif tap?(tap_buffer, holding_time)
|
32
35
|
'tap'
|
33
36
|
end
|
34
37
|
|
35
38
|
return if direction.nil?
|
36
39
|
|
37
|
-
|
40
|
+
finger = tap_buffer.finger
|
41
|
+
|
42
|
+
tap_buffer.clear # NOTE: Clear after detecting hold
|
38
43
|
|
39
44
|
index = create_index(finger: finger, direction: direction)
|
40
45
|
|
@@ -53,21 +58,31 @@ module Fusuma
|
|
53
58
|
)
|
54
59
|
end
|
55
60
|
|
61
|
+
# @return [TrueClass, FalseClass]
|
56
62
|
def hold?(buffer, holding_time)
|
57
|
-
return false if holding_time <
|
63
|
+
return false if holding_time < 0.7
|
58
64
|
|
59
65
|
return true if buffer.finger == 4
|
60
66
|
|
61
67
|
true if buffer.events.any? { |e| e.record.status == 'hold' }
|
62
68
|
end
|
63
69
|
|
70
|
+
# @return [TrueClass, FalseClass]
|
64
71
|
def tap?(buffer, holding_time)
|
65
72
|
return false if holding_time > 0.15
|
66
73
|
|
67
|
-
|
74
|
+
released_all?(buffer)
|
75
|
+
end
|
76
|
+
|
77
|
+
# @return [TrueClass, FalseClass]
|
78
|
+
def moved?(tap_buffer:, gesture_buffer:)
|
79
|
+
tap_buffer.events.any? { |e| e.record.status == 'move' } ||
|
80
|
+
# FIXME: Find good parameter for ignoring
|
81
|
+
gesture_buffer.events.count { |e| tap_buffer.events.first.time < e.time } > 5
|
68
82
|
end
|
69
83
|
|
70
|
-
|
84
|
+
# @return [TrueClass, FalseClass]
|
85
|
+
def released_all?(buffer)
|
71
86
|
touch_num = buffer.events.count { |e| (e.record.status =~ /begin|touch/) }
|
72
87
|
release_num = buffer.events.count { |e| e.record.status =~ /release|end/ }
|
73
88
|
MultiLogger.debug(touch_num: touch_num, release_num: release_num)
|
@@ -86,6 +101,16 @@ module Fusuma
|
|
86
101
|
end
|
87
102
|
end
|
88
103
|
|
104
|
+
def calc_holding_time(tap_buffer:, timer_buffer:)
|
105
|
+
last_time = if timer_buffer && !timer_buffer.empty? &&
|
106
|
+
(tap_buffer.events.last.time < timer_buffer.events.last.time)
|
107
|
+
timer_buffer.events.last.time
|
108
|
+
else
|
109
|
+
tap_buffer.events.last.time
|
110
|
+
end
|
111
|
+
last_time - tap_buffer.events.first.time
|
112
|
+
end
|
113
|
+
|
89
114
|
private
|
90
115
|
|
91
116
|
def enough?(index:, direction:)
|
@@ -102,12 +127,12 @@ module Fusuma
|
|
102
127
|
def interval_time(index:, direction:)
|
103
128
|
@interval_time ||= {}
|
104
129
|
@interval_time[index.cache_key] ||= begin
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
130
|
+
keys_specific = Config::Index.new [*index.keys, 'interval']
|
131
|
+
keys_global = Config::Index.new ['interval', direction]
|
132
|
+
config_value = Config.search(keys_specific) ||
|
133
|
+
Config.search(keys_global) || 1
|
134
|
+
BASE_INTERVAL * config_value
|
135
|
+
end
|
111
136
|
end
|
112
137
|
end
|
113
138
|
end
|
@@ -67,7 +67,11 @@ module Fusuma
|
|
67
67
|
|
68
68
|
finger = case Regexp.last_match(2)
|
69
69
|
when 'TAP_STATE_DEAD'
|
70
|
-
|
70
|
+
if Regexp.last_match(1) == 'TAP_STATE_TOUCH_3'
|
71
|
+
4
|
72
|
+
else
|
73
|
+
0
|
74
|
+
end
|
71
75
|
when 'TAP_STATE_TOUCH_3'
|
72
76
|
3
|
73
77
|
when 'TAP_STATE_TOUCH_2'
|
@@ -94,11 +98,16 @@ module Fusuma
|
|
94
98
|
1
|
95
99
|
end
|
96
100
|
# KEEP
|
97
|
-
when /\sgesture(| state):\s
|
101
|
+
when /\sgesture(| state):\s/ # 1.10.4 prints "gesture state: GESTURE_STATE_.*"
|
98
102
|
# NOTE: treat the "gesture(| state):" as KEEP
|
99
103
|
status = 'keep'
|
100
104
|
finger = 0
|
101
105
|
|
106
|
+
# MOVE
|
107
|
+
when /\sPOINTER_AXIS\s/, /\sPOINTER_MOTION\s/, /\sTAP_EVENT_PALM\s/
|
108
|
+
status = 'move'
|
109
|
+
finger = 0
|
110
|
+
|
102
111
|
# RELEASE
|
103
112
|
when /\stap(?:| state):\s.*(#{(STATE[:touches] | STATE[:holds]).join('|')}) → TAP_EVENT_RELEASE → (#{STATE[:releases].join('|')})/
|
104
113
|
|
@@ -122,8 +131,8 @@ module Fusuma
|
|
122
131
|
|
123
132
|
matched = Regexp.last_match
|
124
133
|
finger = case matched[1]
|
125
|
-
when 'TAP_STATE_DEAD'
|
126
|
-
|
134
|
+
when 'TAP_STATE_DEAD' # NOTE: 2 finger hold -> scroll become TAP_STATE_DEAD
|
135
|
+
0
|
127
136
|
when 'TAP_STATE_TOUCH_3', 'TAP_STATE_TOUCH_3_HOLD'
|
128
137
|
3
|
129
138
|
when 'TAP_STATE_TOUCH_2', 'TAP_STATE_TOUCH_2_HOLD', 'TAP_STATE_TOUCH_2_RELEASE'
|
@@ -138,7 +147,7 @@ module Fusuma
|
|
138
147
|
Events::Records::GestureRecord.new(status: status,
|
139
148
|
gesture: gesture,
|
140
149
|
finger: finger,
|
141
|
-
|
150
|
+
delta: nil)
|
142
151
|
end
|
143
152
|
|
144
153
|
def tag
|
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.4.0.pre2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- iberianpig
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fusuma
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 2.0.0.pre2
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 2.0.0.pre2
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -169,7 +169,7 @@ homepage: https://github.com/iberianpig/fusuma-plugin-tap
|
|
169
169
|
licenses:
|
170
170
|
- MIT
|
171
171
|
metadata: {}
|
172
|
-
post_install_message:
|
172
|
+
post_install_message:
|
173
173
|
rdoc_options: []
|
174
174
|
require_paths:
|
175
175
|
- lib
|
@@ -180,12 +180,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
180
180
|
version: '2.3'
|
181
181
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
182
182
|
requirements:
|
183
|
-
- - "
|
183
|
+
- - ">"
|
184
184
|
- !ruby/object:Gem::Version
|
185
|
-
version:
|
185
|
+
version: 1.3.1
|
186
186
|
requirements: []
|
187
|
-
rubygems_version: 3.
|
188
|
-
signing_key:
|
187
|
+
rubygems_version: 3.1.4
|
188
|
+
signing_key:
|
189
189
|
specification_version: 4
|
190
190
|
summary: Tap gesture plugin for Fusuma
|
191
191
|
test_files: []
|