fusuma 1.11.1 → 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
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