fusuma 1.11.1 → 2.0.2

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.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +49 -7
  3. data/fusuma.gemspec +6 -16
  4. data/lib/fusuma.rb +91 -28
  5. data/lib/fusuma/config.rb +34 -62
  6. data/lib/fusuma/config/index.rb +39 -6
  7. data/lib/fusuma/config/searcher.rb +166 -0
  8. data/lib/fusuma/custom_process.rb +13 -0
  9. data/lib/fusuma/device.rb +22 -7
  10. data/lib/fusuma/environment.rb +6 -4
  11. data/lib/fusuma/hash_support.rb +40 -0
  12. data/lib/fusuma/libinput_command.rb +17 -21
  13. data/lib/fusuma/multi_logger.rb +2 -6
  14. data/lib/fusuma/plugin/base.rb +18 -15
  15. data/lib/fusuma/plugin/buffers/buffer.rb +3 -2
  16. data/lib/fusuma/plugin/buffers/gesture_buffer.rb +34 -25
  17. data/lib/fusuma/plugin/buffers/timer_buffer.rb +46 -0
  18. data/lib/fusuma/plugin/detectors/detector.rb +26 -5
  19. data/lib/fusuma/plugin/detectors/pinch_detector.rb +109 -58
  20. data/lib/fusuma/plugin/detectors/rotate_detector.rb +91 -50
  21. data/lib/fusuma/plugin/detectors/swipe_detector.rb +93 -56
  22. data/lib/fusuma/plugin/events/event.rb +5 -4
  23. data/lib/fusuma/plugin/events/records/context_record.rb +27 -0
  24. data/lib/fusuma/plugin/events/records/gesture_record.rb +9 -6
  25. data/lib/fusuma/plugin/events/records/index_record.rb +46 -14
  26. data/lib/fusuma/plugin/events/records/record.rb +1 -1
  27. data/lib/fusuma/plugin/events/records/text_record.rb +2 -1
  28. data/lib/fusuma/plugin/executors/command_executor.rb +21 -6
  29. data/lib/fusuma/plugin/executors/executor.rb +45 -3
  30. data/lib/fusuma/plugin/filters/filter.rb +1 -1
  31. data/lib/fusuma/plugin/filters/libinput_device_filter.rb +6 -7
  32. data/lib/fusuma/plugin/filters/libinput_timeout_filter.rb +2 -2
  33. data/lib/fusuma/plugin/inputs/input.rb +64 -8
  34. data/lib/fusuma/plugin/inputs/libinput_command_input.rb +19 -9
  35. data/lib/fusuma/plugin/inputs/timer_input.rb +63 -0
  36. data/lib/fusuma/plugin/manager.rb +22 -29
  37. data/lib/fusuma/plugin/parsers/libinput_gesture_parser.rb +10 -8
  38. data/lib/fusuma/plugin/parsers/parser.rb +8 -9
  39. data/lib/fusuma/string_support.rb +16 -0
  40. data/lib/fusuma/version.rb +1 -1
  41. data/spec/helpers/config_helper.rb +20 -0
  42. data/spec/lib/config/searcher_spec.rb +97 -0
  43. data/spec/lib/config_spec.rb +112 -0
  44. data/spec/lib/custom_process_spec.rb +28 -0
  45. data/spec/lib/device_spec.rb +98 -0
  46. data/spec/lib/dummy_config.yml +31 -0
  47. data/spec/lib/fusuma_spec.rb +103 -0
  48. data/spec/lib/libinput-list-devices_iberianpig-XPS-9360.txt +181 -0
  49. data/spec/lib/libinput-list-devices_magic_trackpad.txt +51 -0
  50. data/spec/lib/libinput-list-devices_razer_razer_blade.txt +252 -0
  51. data/spec/lib/libinput-list-devices_thejinx0r.txt +361 -0
  52. data/spec/lib/libinput-list-devices_unavailable.txt +36 -0
  53. data/spec/lib/libinput_command_spec.rb +167 -0
  54. data/spec/lib/plugin/base_spec.rb +74 -0
  55. data/spec/lib/plugin/buffers/buffer_spec.rb +80 -0
  56. data/spec/lib/plugin/buffers/dummy_buffer.rb +20 -0
  57. data/spec/lib/plugin/buffers/gesture_buffer_spec.rb +172 -0
  58. data/spec/lib/plugin/detectors/detector_spec.rb +43 -0
  59. data/spec/lib/plugin/detectors/dummy_detector.rb +24 -0
  60. data/spec/lib/plugin/detectors/pinch_detector_spec.rb +119 -0
  61. data/spec/lib/plugin/detectors/rotate_detector_spec.rb +125 -0
  62. data/spec/lib/plugin/detectors/swipe_detector_spec.rb +118 -0
  63. data/spec/lib/plugin/events/event_spec.rb +30 -0
  64. data/spec/lib/plugin/events/records/gesture_record_spec.rb +22 -0
  65. data/spec/lib/plugin/events/records/record_spec.rb +31 -0
  66. data/spec/lib/plugin/events/records/text_record_spec.rb +26 -0
  67. data/spec/lib/plugin/executors/command_executor_spec.rb +57 -0
  68. data/spec/lib/plugin/executors/executor_spec.rb +160 -0
  69. data/spec/lib/plugin/filters/filter_spec.rb +92 -0
  70. data/spec/lib/plugin/filters/libinput_filter_spec.rb +120 -0
  71. data/spec/lib/plugin/inputs/input_spec.rb +70 -0
  72. data/spec/lib/plugin/inputs/libinput_command_input_spec.rb +120 -0
  73. data/spec/lib/plugin/inputs/timer_input_spec.rb +40 -0
  74. data/spec/lib/plugin/manager_spec.rb +27 -0
  75. data/spec/lib/plugin/parsers/parser_spec.rb +45 -0
  76. data/spec/spec_helper.rb +20 -0
  77. metadata +90 -167
  78. data/.github/FUNDING.yml +0 -8
  79. data/.github/ISSUE_TEMPLATE/bug_report.md +0 -32
  80. data/.github/ISSUE_TEMPLATE/feature_request.md +0 -17
  81. data/.github/pull_request_template.md +0 -9
  82. data/.github/stale.yml +0 -18
  83. data/.gitignore +0 -17
  84. data/.reek.yml +0 -96
  85. data/.rspec +0 -2
  86. data/.rubocop.yml +0 -37
  87. data/.rubocop_todo.yml +0 -40
  88. data/.travis.yml +0 -11
  89. data/CHANGELOG.md +0 -456
  90. data/CODE_OF_CONDUCT.md +0 -74
  91. data/CONTRIBUTING.md +0 -72
  92. data/Gemfile +0 -6
  93. data/Rakefile +0 -15
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require './lib/fusuma/plugin/inputs/input'
5
+
6
+ module Fusuma
7
+ module Plugin
8
+ module Inputs
9
+ RSpec.describe Input do
10
+ let(:input) { described_class.new }
11
+
12
+ describe '#io' do
13
+ subject { input.io { 'dummy' } }
14
+ it { expect { subject }.to raise_error(NotImplementedError) }
15
+ end
16
+
17
+ describe '#create_event' do
18
+ subject { input.create_event }
19
+ it { is_expected.to be_a Events::Event }
20
+
21
+ it { expect(input.tag).to eq 'input' }
22
+ end
23
+
24
+ describe '.select' do
25
+ subject { Input.select([DummyInput.new]) }
26
+
27
+ it { is_expected.to be_a Events::Event }
28
+ end
29
+ end
30
+
31
+ class DummyInput < Input
32
+ def io
33
+ @io ||= begin
34
+ r, w = IO.pipe
35
+ w.puts 'hoge'
36
+ w.close
37
+ r
38
+ end
39
+ end
40
+ end
41
+
42
+ RSpec.describe DummyInput do
43
+ let(:dummy_input) { described_class.new }
44
+
45
+ around do |example|
46
+ ConfigHelper.load_config_yml = <<~CONFIG
47
+ plugin:
48
+ inputs:
49
+ dummy_input:
50
+ dummy: dummy
51
+ CONFIG
52
+
53
+ example.run
54
+
55
+ Config.custom_path = nil
56
+ end
57
+
58
+ describe '#io' do
59
+ subject { dummy_input.io }
60
+ it { is_expected.to be_a IO }
61
+ end
62
+
63
+ describe '#config_params' do
64
+ subject { dummy_input.config_params }
65
+ it { is_expected.to eq(dummy: 'dummy') }
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,120 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require './lib/fusuma/plugin/inputs/libinput_command_input'
5
+
6
+ module Fusuma
7
+ module Plugin
8
+ module Inputs
9
+ RSpec.describe LibinputCommandInput do
10
+ let(:input) { described_class.new }
11
+
12
+ describe '#io' do
13
+ before do
14
+ @dummy_io = StringIO.new('dummy')
15
+ dummy_pid = 999_999_999
16
+ libinput_command = instance_double(LibinputCommand)
17
+ allow(LibinputCommand).to receive(:new).and_return(libinput_command)
18
+ allow(libinput_command).to receive(:debug_events).and_return([dummy_pid, @dummy_io])
19
+ end
20
+
21
+ it { expect(input.io).to eq @dummy_io }
22
+ end
23
+
24
+ describe '#libinput_options' do
25
+ it { expect(input.libinput_options).to be_a Array }
26
+
27
+ context 'when device: awesome_device is given as config_params' do
28
+ around do |example|
29
+ ConfigHelper.load_config_yml = <<~CONFIG
30
+ plugin:
31
+ inputs:
32
+ libinput_command_input:
33
+ device: awesome device
34
+ CONFIG
35
+
36
+ example.run
37
+
38
+ Config.custom_path = nil
39
+ end
40
+ it "contains --device='awesome device'" do
41
+ expect(input.libinput_options).to be_include "--device='awesome device'"
42
+ end
43
+ end
44
+
45
+ context 'when enable-tap: true is given as config_params' do
46
+ around do |example|
47
+ ConfigHelper.load_config_yml = <<~CONFIG
48
+ plugin:
49
+ inputs:
50
+ libinput_command_input:
51
+ enable-tap: true
52
+ CONFIG
53
+
54
+ example.run
55
+
56
+ Config.custom_path = nil
57
+ end
58
+ it 'contains --enable-tap' do
59
+ expect(input.libinput_options).to be_include '--enable-tap'
60
+ end
61
+ end
62
+
63
+ context 'when enable-dwt: true is given as config_params' do
64
+ around do |example|
65
+ ConfigHelper.load_config_yml = <<~CONFIG
66
+ plugin:
67
+ inputs:
68
+ libinput_command_input:
69
+ enable-dwt: true
70
+ CONFIG
71
+
72
+ example.run
73
+
74
+ Config.custom_path = nil
75
+ end
76
+ it 'contains --enable-dwt' do
77
+ expect(input.libinput_options).to be_include '--enable-dwt'
78
+ end
79
+ end
80
+
81
+ context 'when show-keycodes: true is given as config_params' do
82
+ around do |example|
83
+ ConfigHelper.load_config_yml = <<~CONFIG
84
+ plugin:
85
+ inputs:
86
+ libinput_command_input:
87
+ show-keycodes: true
88
+ CONFIG
89
+
90
+ example.run
91
+
92
+ Config.custom_path = nil
93
+ end
94
+ it 'contains --show-keycodes' do
95
+ expect(input.libinput_options).to be_include '--show-keycodes'
96
+ end
97
+ end
98
+
99
+ context 'when verbose: true is given as config_params' do
100
+ around do |example|
101
+ ConfigHelper.load_config_yml = <<~CONFIG
102
+ plugin:
103
+ inputs:
104
+ libinput_command_input:
105
+ verbose: true
106
+ CONFIG
107
+
108
+ example.run
109
+
110
+ Config.custom_path = nil
111
+ end
112
+ it 'contains --verbose' do
113
+ expect(input.libinput_options).to be_include '--verbose'
114
+ end
115
+ end
116
+ end
117
+ end
118
+ end
119
+ end
120
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require './lib/fusuma/plugin/inputs/timer_input'
5
+
6
+ module Fusuma
7
+ module Plugin
8
+ module Inputs
9
+ RSpec.describe TimerInput do
10
+ before do
11
+ @dummy_read = StringIO.new('dummy_read')
12
+ @dummy_write = StringIO.new('dummy_write')
13
+ @input = TimerInput.new
14
+ allow(@input).to receive(:create_io).and_return [@dummy_read, @dummy_write]
15
+ allow(@input).to receive(:fork)
16
+ allow(Process).to receive(:detach).with(anything)
17
+ end
18
+
19
+ describe '#io' do
20
+ it { expect(@input.io).to eq @dummy_read }
21
+
22
+ it 'should call #create_io' do
23
+ expect(@input).to receive(:create_io)
24
+ expect(@input).to receive(:start)
25
+ @input.io
26
+ end
27
+ end
28
+
29
+ describe '#start' do
30
+ it {
31
+ expect(@input).to receive(:fork).and_yield do |block_context|
32
+ expect(block_context).to receive(:timer_loop).with(@dummy_read, @dummy_write)
33
+ end
34
+ @input.start(@dummy_read, @dummy_write)
35
+ }
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require './lib/fusuma/plugin/base'
5
+ require './lib/fusuma/plugin/manager'
6
+
7
+ module Fusuma
8
+ module Plugin
9
+ RSpec.describe Manager do
10
+ describe '#require_siblings_from_plugin_dir' do
11
+ Manager.new(Base).require_siblings_from_plugin_dir
12
+ subject { Manager.new(Base).require_siblings_from_plugin_dir }
13
+ it { expect { subject }.not_to raise_error(LoadError) }
14
+ end
15
+
16
+ describe '#require_siblings_from_gem' do
17
+ subject { Manager.new(Inputs::Input).require_siblings_from_gem }
18
+ it { expect { subject }.not_to raise_error(LoadError) }
19
+ end
20
+
21
+ describe '.plugins' do
22
+ subject { Manger.plugins }
23
+ pending
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require './lib/fusuma/plugin/parsers/parser'
5
+ require './lib/fusuma/plugin/events/event'
6
+
7
+ module Fusuma
8
+ module Plugin
9
+ module Parsers
10
+ class DummyParser < Parser
11
+ DEFAULT_SOURCE = 'dummy_input'
12
+ end
13
+
14
+ RSpec.describe Parser do
15
+ let(:parser) { DummyParser.new }
16
+
17
+ around do |example|
18
+ ConfigHelper.load_config_yml = <<~CONFIG
19
+ plugin:
20
+ parsers:
21
+ dummy_parser:
22
+ dummy: dummy
23
+ CONFIG
24
+
25
+ example.run
26
+
27
+ Config.custom_path = nil
28
+ end
29
+
30
+ describe '#source' do
31
+ subject { parser.source }
32
+
33
+ it { is_expected.to be DummyParser::DEFAULT_SOURCE }
34
+ end
35
+
36
+ describe '#parse' do
37
+ subject { parser.parse(event) }
38
+ let(:event) { Events::Event.new(tag: 'dummy_input', record: 'dummy') }
39
+
40
+ it { is_expected.to be event }
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/setup'
4
+ require 'helpers/config_helper'
5
+ require 'coveralls'
6
+ Coveralls.wear!
7
+
8
+ RSpec.configure do |config|
9
+ # Enable flags like --only-failures and --next-failure
10
+ config.example_status_persistence_file_path = '.rspec_status'
11
+
12
+ # Disable RSpec exposing methods globally on `Module` and `main`
13
+ config.disable_monkey_patching!
14
+
15
+ config.expect_with :rspec do |c|
16
+ c.syntax = :expect
17
+ end
18
+
19
+ config.include(Fusuma::ConfigHelper)
20
+ end
metadata CHANGED
@@ -1,163 +1,23 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fusuma
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.11.1
4
+ version: 2.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - iberianpig
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-07-27 00:00:00.000000000 Z
11
+ date: 2021-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: posix-spawn
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: coveralls
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: github_changelog_generator
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '1.14'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '1.14'
55
- - !ruby/object:Gem::Dependency
56
- name: pry-byebug
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '3.4'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '3.4'
69
- - !ruby/object:Gem::Dependency
70
- name: pry-doc
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: pry-inline
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: rake
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '13.0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '13.0'
111
- - !ruby/object:Gem::Dependency
112
- name: reek
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: rspec
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '3.0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '3.0'
139
- - !ruby/object:Gem::Dependency
140
- name: rubocop
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- version: '0'
153
- - !ruby/object:Gem::Dependency
154
- name: yard
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - ">="
158
- - !ruby/object:Gem::Version
159
- version: '0'
160
- type: :development
20
+ type: :runtime
161
21
  prerelease: false
162
22
  version_requirements: !ruby/object:Gem::Requirement
163
23
  requirements:
@@ -174,24 +34,8 @@ executables:
174
34
  extensions: []
175
35
  extra_rdoc_files: []
176
36
  files:
177
- - ".github/FUNDING.yml"
178
- - ".github/ISSUE_TEMPLATE/bug_report.md"
179
- - ".github/ISSUE_TEMPLATE/feature_request.md"
180
- - ".github/pull_request_template.md"
181
- - ".github/stale.yml"
182
- - ".gitignore"
183
- - ".reek.yml"
184
- - ".rspec"
185
- - ".rubocop.yml"
186
- - ".rubocop_todo.yml"
187
- - ".travis.yml"
188
- - CHANGELOG.md
189
- - CODE_OF_CONDUCT.md
190
- - CONTRIBUTING.md
191
- - Gemfile
192
37
  - LICENSE
193
38
  - README.md
194
- - Rakefile
195
39
  - bin/console
196
40
  - bin/setup
197
41
  - exe/fusuma
@@ -200,19 +44,24 @@ files:
200
44
  - lib/fusuma/config.rb
201
45
  - lib/fusuma/config.yml
202
46
  - lib/fusuma/config/index.rb
47
+ - lib/fusuma/config/searcher.rb
203
48
  - lib/fusuma/config/yaml_duplication_checker.rb
49
+ - lib/fusuma/custom_process.rb
204
50
  - lib/fusuma/device.rb
205
51
  - lib/fusuma/environment.rb
52
+ - lib/fusuma/hash_support.rb
206
53
  - lib/fusuma/libinput_command.rb
207
54
  - lib/fusuma/multi_logger.rb
208
55
  - lib/fusuma/plugin/base.rb
209
56
  - lib/fusuma/plugin/buffers/buffer.rb
210
57
  - lib/fusuma/plugin/buffers/gesture_buffer.rb
58
+ - lib/fusuma/plugin/buffers/timer_buffer.rb
211
59
  - lib/fusuma/plugin/detectors/detector.rb
212
60
  - lib/fusuma/plugin/detectors/pinch_detector.rb
213
61
  - lib/fusuma/plugin/detectors/rotate_detector.rb
214
62
  - lib/fusuma/plugin/detectors/swipe_detector.rb
215
63
  - lib/fusuma/plugin/events/event.rb
64
+ - lib/fusuma/plugin/events/records/context_record.rb
216
65
  - lib/fusuma/plugin/events/records/gesture_record.rb
217
66
  - lib/fusuma/plugin/events/records/index_record.rb
218
67
  - lib/fusuma/plugin/events/records/record.rb
@@ -224,16 +73,54 @@ files:
224
73
  - lib/fusuma/plugin/filters/libinput_timeout_filter.rb
225
74
  - lib/fusuma/plugin/inputs/input.rb
226
75
  - lib/fusuma/plugin/inputs/libinput_command_input.rb
76
+ - lib/fusuma/plugin/inputs/timer_input.rb
227
77
  - lib/fusuma/plugin/manager.rb
228
78
  - lib/fusuma/plugin/parsers/libinput_gesture_parser.rb
229
79
  - lib/fusuma/plugin/parsers/parser.rb
80
+ - lib/fusuma/string_support.rb
230
81
  - lib/fusuma/version.rb
82
+ - spec/helpers/config_helper.rb
83
+ - spec/lib/config/searcher_spec.rb
84
+ - spec/lib/config_spec.rb
85
+ - spec/lib/custom_process_spec.rb
86
+ - spec/lib/device_spec.rb
87
+ - spec/lib/dummy_config.yml
88
+ - spec/lib/fusuma_spec.rb
89
+ - spec/lib/libinput-list-devices_iberianpig-XPS-9360.txt
90
+ - spec/lib/libinput-list-devices_magic_trackpad.txt
91
+ - spec/lib/libinput-list-devices_razer_razer_blade.txt
92
+ - spec/lib/libinput-list-devices_thejinx0r.txt
93
+ - spec/lib/libinput-list-devices_unavailable.txt
94
+ - spec/lib/libinput_command_spec.rb
95
+ - spec/lib/plugin/base_spec.rb
96
+ - spec/lib/plugin/buffers/buffer_spec.rb
97
+ - spec/lib/plugin/buffers/dummy_buffer.rb
98
+ - spec/lib/plugin/buffers/gesture_buffer_spec.rb
99
+ - spec/lib/plugin/detectors/detector_spec.rb
100
+ - spec/lib/plugin/detectors/dummy_detector.rb
101
+ - spec/lib/plugin/detectors/pinch_detector_spec.rb
102
+ - spec/lib/plugin/detectors/rotate_detector_spec.rb
103
+ - spec/lib/plugin/detectors/swipe_detector_spec.rb
104
+ - spec/lib/plugin/events/event_spec.rb
105
+ - spec/lib/plugin/events/records/gesture_record_spec.rb
106
+ - spec/lib/plugin/events/records/record_spec.rb
107
+ - spec/lib/plugin/events/records/text_record_spec.rb
108
+ - spec/lib/plugin/executors/command_executor_spec.rb
109
+ - spec/lib/plugin/executors/executor_spec.rb
110
+ - spec/lib/plugin/filters/filter_spec.rb
111
+ - spec/lib/plugin/filters/libinput_filter_spec.rb
112
+ - spec/lib/plugin/inputs/input_spec.rb
113
+ - spec/lib/plugin/inputs/libinput_command_input_spec.rb
114
+ - spec/lib/plugin/inputs/timer_input_spec.rb
115
+ - spec/lib/plugin/manager_spec.rb
116
+ - spec/lib/plugin/parsers/parser_spec.rb
117
+ - spec/spec_helper.rb
231
118
  homepage: https://github.com/iberianpig/fusuma
232
119
  licenses:
233
120
  - MIT
234
121
  metadata:
235
122
  yard.run: yri
236
- post_install_message:
123
+ post_install_message:
237
124
  rdoc_options: []
238
125
  require_paths:
239
126
  - lib
@@ -241,15 +128,51 @@ required_ruby_version: !ruby/object:Gem::Requirement
241
128
  requirements:
242
129
  - - ">="
243
130
  - !ruby/object:Gem::Version
244
- version: '2.3'
131
+ version: 2.5.1
245
132
  required_rubygems_version: !ruby/object:Gem::Requirement
246
133
  requirements:
247
134
  - - ">="
248
135
  - !ruby/object:Gem::Version
249
136
  version: '0'
250
137
  requirements: []
251
- rubygems_version: 3.2.0.rc.1
252
- signing_key:
138
+ rubygems_version: 3.1.4
139
+ signing_key:
253
140
  specification_version: 4
254
- summary: Multitouch gestures with libinput dirver on X11, Linux
255
- test_files: []
141
+ summary: Multitouch gestures with libinput driver, Linux
142
+ test_files:
143
+ - spec/lib/device_spec.rb
144
+ - spec/lib/config/searcher_spec.rb
145
+ - spec/lib/libinput-list-devices_iberianpig-XPS-9360.txt
146
+ - spec/lib/dummy_config.yml
147
+ - spec/lib/libinput-list-devices_magic_trackpad.txt
148
+ - spec/lib/custom_process_spec.rb
149
+ - spec/lib/plugin/base_spec.rb
150
+ - spec/lib/plugin/inputs/libinput_command_input_spec.rb
151
+ - spec/lib/plugin/inputs/input_spec.rb
152
+ - spec/lib/plugin/inputs/timer_input_spec.rb
153
+ - spec/lib/plugin/events/records/record_spec.rb
154
+ - spec/lib/plugin/events/records/gesture_record_spec.rb
155
+ - spec/lib/plugin/events/records/text_record_spec.rb
156
+ - spec/lib/plugin/events/event_spec.rb
157
+ - spec/lib/plugin/filters/libinput_filter_spec.rb
158
+ - spec/lib/plugin/filters/filter_spec.rb
159
+ - spec/lib/plugin/detectors/detector_spec.rb
160
+ - spec/lib/plugin/detectors/swipe_detector_spec.rb
161
+ - spec/lib/plugin/detectors/rotate_detector_spec.rb
162
+ - spec/lib/plugin/detectors/pinch_detector_spec.rb
163
+ - spec/lib/plugin/detectors/dummy_detector.rb
164
+ - spec/lib/plugin/manager_spec.rb
165
+ - spec/lib/plugin/buffers/dummy_buffer.rb
166
+ - spec/lib/plugin/buffers/buffer_spec.rb
167
+ - spec/lib/plugin/buffers/gesture_buffer_spec.rb
168
+ - spec/lib/plugin/parsers/parser_spec.rb
169
+ - spec/lib/plugin/executors/executor_spec.rb
170
+ - spec/lib/plugin/executors/command_executor_spec.rb
171
+ - spec/lib/libinput-list-devices_unavailable.txt
172
+ - spec/lib/libinput_command_spec.rb
173
+ - spec/lib/fusuma_spec.rb
174
+ - spec/lib/libinput-list-devices_razer_razer_blade.txt
175
+ - spec/lib/libinput-list-devices_thejinx0r.txt
176
+ - spec/lib/config_spec.rb
177
+ - spec/helpers/config_helper.rb
178
+ - spec/spec_helper.rb