fusuma 2.4.0 → 2.5.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/README.md +34 -2
- data/fusuma.gemspec +17 -18
- data/lib/fusuma/config/index.rb +17 -17
- data/lib/fusuma/config/searcher.rb +1 -1
- data/lib/fusuma/config/yaml_duplication_checker.rb +7 -7
- data/lib/fusuma/config.rb +17 -13
- data/lib/fusuma/device.rb +12 -12
- data/lib/fusuma/environment.rb +10 -10
- data/lib/fusuma/hash_support.rb +1 -1
- data/lib/fusuma/libinput_command.rb +18 -19
- data/lib/fusuma/multi_logger.rb +4 -4
- data/lib/fusuma/plugin/base.rb +6 -6
- data/lib/fusuma/plugin/buffers/buffer.rb +5 -4
- data/lib/fusuma/plugin/buffers/gesture_buffer.rb +6 -6
- data/lib/fusuma/plugin/buffers/timer_buffer.rb +2 -2
- data/lib/fusuma/plugin/detectors/detector.rb +5 -5
- data/lib/fusuma/plugin/detectors/hold_detector.rb +29 -29
- data/lib/fusuma/plugin/detectors/pinch_detector.rb +47 -47
- data/lib/fusuma/plugin/detectors/rotate_detector.rb +40 -40
- data/lib/fusuma/plugin/detectors/swipe_detector.rb +43 -43
- data/lib/fusuma/plugin/events/event.rb +11 -11
- data/lib/fusuma/plugin/events/records/gesture_record.rb +5 -5
- data/lib/fusuma/plugin/events/records/index_record.rb +5 -5
- data/lib/fusuma/plugin/events/records/record.rb +2 -2
- data/lib/fusuma/plugin/events/records/text_record.rb +1 -1
- data/lib/fusuma/plugin/executors/command_executor.rb +4 -4
- data/lib/fusuma/plugin/executors/executor.rb +3 -3
- data/lib/fusuma/plugin/filters/filter.rb +3 -3
- data/lib/fusuma/plugin/filters/libinput_device_filter.rb +12 -12
- data/lib/fusuma/plugin/inputs/input.rb +8 -8
- data/lib/fusuma/plugin/inputs/libinput_command_input.rb +13 -13
- data/lib/fusuma/plugin/inputs/timer_input.rb +3 -3
- data/lib/fusuma/plugin/manager.rb +27 -21
- data/lib/fusuma/plugin/parsers/libinput_gesture_parser.rb +10 -10
- data/lib/fusuma/plugin/parsers/parser.rb +3 -3
- data/lib/fusuma/string_support.rb +3 -3
- data/lib/fusuma/version.rb +1 -1
- data/lib/fusuma.rb +10 -10
- metadata +3 -79
- data/spec/helpers/config_helper.rb +0 -20
- data/spec/lib/config/searcher_spec.rb +0 -179
- data/spec/lib/config_spec.rb +0 -104
- data/spec/lib/custom_process_spec.rb +0 -28
- data/spec/lib/device_spec.rb +0 -96
- data/spec/lib/dummy_config.yml +0 -31
- data/spec/lib/fusuma_spec.rb +0 -103
- data/spec/lib/libinput-list-devices_iberianpig-XPS-9360.txt +0 -181
- data/spec/lib/libinput-list-devices_magic_trackpad.txt +0 -51
- data/spec/lib/libinput-list-devices_razer_razer_blade.txt +0 -252
- data/spec/lib/libinput-list-devices_thejinx0r.txt +0 -361
- data/spec/lib/libinput-list-devices_unavailable.txt +0 -36
- data/spec/lib/libinput_command_spec.rb +0 -164
- data/spec/lib/plugin/base_spec.rb +0 -74
- data/spec/lib/plugin/buffers/buffer_spec.rb +0 -80
- data/spec/lib/plugin/buffers/dummy_buffer.rb +0 -20
- data/spec/lib/plugin/buffers/gesture_buffer_spec.rb +0 -192
- data/spec/lib/plugin/detectors/detector_spec.rb +0 -43
- data/spec/lib/plugin/detectors/dummy_detector.rb +0 -24
- data/spec/lib/plugin/detectors/hold_detector_spec.rb +0 -145
- data/spec/lib/plugin/detectors/pinch_detector_spec.rb +0 -119
- data/spec/lib/plugin/detectors/rotate_detector_spec.rb +0 -125
- data/spec/lib/plugin/detectors/swipe_detector_spec.rb +0 -118
- data/spec/lib/plugin/events/event_spec.rb +0 -30
- data/spec/lib/plugin/events/records/gesture_record_spec.rb +0 -22
- data/spec/lib/plugin/events/records/record_spec.rb +0 -31
- data/spec/lib/plugin/events/records/text_record_spec.rb +0 -26
- data/spec/lib/plugin/executors/command_executor_spec.rb +0 -57
- data/spec/lib/plugin/executors/executor_spec.rb +0 -164
- data/spec/lib/plugin/filters/filter_spec.rb +0 -92
- data/spec/lib/plugin/filters/libinput_filter_spec.rb +0 -120
- data/spec/lib/plugin/inputs/input_spec.rb +0 -70
- data/spec/lib/plugin/inputs/libinput_command_input_spec.rb +0 -121
- data/spec/lib/plugin/inputs/timer_input_spec.rb +0 -40
- data/spec/lib/plugin/manager_spec.rb +0 -27
- data/spec/lib/plugin/parsers/libinput_gesture_parser_spec.rb +0 -76
- data/spec/lib/plugin/parsers/parser_spec.rb +0 -45
- data/spec/spec_helper.rb +0 -20
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
3
|
+
require_relative "./executor"
|
4
4
|
|
5
5
|
module Fusuma
|
6
6
|
module Plugin
|
@@ -20,8 +20,8 @@ module Fusuma
|
|
20
20
|
|
21
21
|
accel = args_accel(event)
|
22
22
|
additional_env = event.record.args
|
23
|
-
|
24
|
-
|
23
|
+
.deep_transform_keys(&:to_s)
|
24
|
+
.deep_transform_values { |v| (v * accel).to_s }
|
25
25
|
|
26
26
|
pid = Process.spawn(additional_env, command.to_s)
|
27
27
|
Process.detach(pid)
|
@@ -30,7 +30,7 @@ module Fusuma
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def executable?(event)
|
33
|
-
event.tag.end_with?(
|
33
|
+
event.tag.end_with?("_detector") &&
|
34
34
|
event.record.type == :index &&
|
35
35
|
search_command(event)
|
36
36
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
3
|
+
require_relative "../base"
|
4
4
|
|
5
5
|
module Fusuma
|
6
6
|
module Plugin
|
@@ -47,8 +47,8 @@ module Fusuma
|
|
47
47
|
index = event.record.index
|
48
48
|
@interval_time[index.cache_key] ||= begin
|
49
49
|
config_value =
|
50
|
-
Config.search(Config::Index.new([*index.keys,
|
51
|
-
Config.search(Config::Index.new([
|
50
|
+
Config.search(Config::Index.new([*index.keys, "interval"])) ||
|
51
|
+
Config.search(Config::Index.new(["interval", Detectors::Detector.type(event.tag)]))
|
52
52
|
if event.record.trigger == :oneshot
|
53
53
|
(config_value || 1) * BASE_ONESHOT_INTERVAL
|
54
54
|
else
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
3
|
+
require_relative "../base"
|
4
4
|
|
5
5
|
module Fusuma
|
6
6
|
module Plugin
|
@@ -12,7 +12,7 @@ module Fusuma
|
|
12
12
|
# @return [Event] when keeping event
|
13
13
|
# @return [NilClass] when discarding record
|
14
14
|
def filter(event)
|
15
|
-
return event if event.tag
|
15
|
+
return event if !/#{source}/.match?(event.tag)
|
16
16
|
|
17
17
|
return event if keep?(event.record)
|
18
18
|
|
@@ -30,7 +30,7 @@ module Fusuma
|
|
30
30
|
# Set source for tag from config.yml.
|
31
31
|
# DEFAULT_SOURCE is defined in each Filter plugins.
|
32
32
|
def source
|
33
|
-
@source ||= config_params(:source) || self.class.const_get(
|
33
|
+
@source ||= config_params(:source) || self.class.const_get(:DEFAULT_SOURCE)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
@@ -1,14 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
4
|
-
require_relative
|
3
|
+
require_relative "./filter"
|
4
|
+
require_relative "../../device"
|
5
5
|
|
6
6
|
module Fusuma
|
7
7
|
module Plugin
|
8
8
|
module Filters
|
9
9
|
# Filter device log
|
10
10
|
class LibinputDeviceFilter < Filter
|
11
|
-
DEFAULT_SOURCE =
|
11
|
+
DEFAULT_SOURCE = "libinput_command_input"
|
12
12
|
|
13
13
|
def config_param_types
|
14
14
|
{
|
@@ -64,18 +64,18 @@ module Fusuma
|
|
64
64
|
# @return [Array]
|
65
65
|
def all
|
66
66
|
@all ||= if @name_patterns.empty?
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
67
|
+
Device.available
|
68
|
+
else
|
69
|
+
Device.all.select do |device|
|
70
|
+
match_pattern?(device.name)
|
71
|
+
end
|
72
|
+
end.tap do |devices|
|
73
|
+
print_not_found_messages if devices.empty?
|
74
|
+
end
|
75
75
|
end
|
76
76
|
|
77
77
|
def print_not_found_messages
|
78
|
-
puts
|
78
|
+
puts "Device is not found. Check following section on your config.yml"
|
79
79
|
puts LibinputDeviceFilter.new.config_param_sample
|
80
80
|
end
|
81
81
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
4
|
-
require_relative
|
3
|
+
require_relative "../base"
|
4
|
+
require_relative "../events/event"
|
5
5
|
|
6
6
|
module Fusuma
|
7
7
|
module Plugin
|
@@ -23,13 +23,13 @@ module Fusuma
|
|
23
23
|
line = io.readline_nonblock("\n").chomp
|
24
24
|
rescue EOFError => e
|
25
25
|
warn "#{input.class.name}: #{e}"
|
26
|
-
warn
|
26
|
+
warn "Send SIGKILL to fusuma processes"
|
27
27
|
inputs.reject { |i| i == input }.each do |i|
|
28
28
|
warn "stop process: #{i.class.name.underscore}"
|
29
29
|
Process.kill(:SIGKILL, i.pid)
|
30
30
|
end
|
31
31
|
exit 1
|
32
|
-
rescue
|
32
|
+
rescue => e
|
33
33
|
warn "#{input.class.name}: #{e}"
|
34
34
|
exit 1
|
35
35
|
end
|
@@ -48,14 +48,14 @@ module Fusuma
|
|
48
48
|
end
|
49
49
|
|
50
50
|
# @return [Event]
|
51
|
-
def create_event(record:
|
51
|
+
def create_event(record: "dummy input")
|
52
52
|
e = Events::Event.new(tag: tag, record: record)
|
53
53
|
MultiLogger.debug(input_event: e)
|
54
54
|
e
|
55
55
|
end
|
56
56
|
|
57
57
|
def tag
|
58
|
-
self.class.name.split(
|
58
|
+
self.class.name.split("Inputs::").last.underscore
|
59
59
|
end
|
60
60
|
end
|
61
61
|
end
|
@@ -65,8 +65,8 @@ end
|
|
65
65
|
# ref: https://github.com/Homebrew/brew/blob/6b2dbbc96f7d8aa12f9b8c9c60107c9cc58befc4/Library/Homebrew/extend/io.rb
|
66
66
|
class IO
|
67
67
|
def readline_nonblock(sep = $INPUT_RECORD_SEPARATOR)
|
68
|
-
line = +
|
69
|
-
buffer = +
|
68
|
+
line = +""
|
69
|
+
buffer = +""
|
70
70
|
|
71
71
|
loop do
|
72
72
|
break if buffer == sep
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
4
|
-
require_relative
|
3
|
+
require_relative "../../libinput_command"
|
4
|
+
require_relative "./input"
|
5
5
|
|
6
6
|
module Fusuma
|
7
7
|
module Plugin
|
@@ -13,12 +13,12 @@ module Fusuma
|
|
13
13
|
def config_param_types
|
14
14
|
{
|
15
15
|
device: [String],
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
"enable-dwt": [TrueClass, FalseClass],
|
17
|
+
"enable-tap": [TrueClass, FalseClass],
|
18
|
+
"show-keycodes": [TrueClass, FalseClass],
|
19
19
|
verbose: [TrueClass, FalseClass],
|
20
|
-
|
21
|
-
|
20
|
+
"libinput-debug-events": [String],
|
21
|
+
"libinput-list-devices": [String]
|
22
22
|
}
|
23
23
|
end
|
24
24
|
|
@@ -45,10 +45,10 @@ module Fusuma
|
|
45
45
|
# @return [Array]
|
46
46
|
def libinput_options
|
47
47
|
device = ("--device='#{config_params(:device)}'" if config_params(:device))
|
48
|
-
enable_tap =
|
49
|
-
enable_dwt =
|
50
|
-
show_keycodes =
|
51
|
-
verbose =
|
48
|
+
enable_tap = "--enable-tap" if config_params(:"enable-tap")
|
49
|
+
enable_dwt = "--enable-dwt" if config_params(:"enable-dwt")
|
50
|
+
show_keycodes = "--show-keycodes" if config_params(:"show-keycodes")
|
51
|
+
verbose = "--verbose" if config_params(:verbose)
|
52
52
|
[
|
53
53
|
device,
|
54
54
|
enable_dwt,
|
@@ -59,11 +59,11 @@ module Fusuma
|
|
59
59
|
end
|
60
60
|
|
61
61
|
def debug_events_command
|
62
|
-
config_params(:
|
62
|
+
config_params(:"libinput-debug-events")
|
63
63
|
end
|
64
64
|
|
65
65
|
def list_devices_command
|
66
|
-
config_params(:
|
66
|
+
config_params(:"libinput-list-devices")
|
67
67
|
end
|
68
68
|
|
69
69
|
private
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
3
|
+
require_relative "./input"
|
4
4
|
|
5
5
|
module Fusuma
|
6
6
|
module Plugin
|
@@ -39,11 +39,11 @@ module Fusuma
|
|
39
39
|
begin
|
40
40
|
loop do
|
41
41
|
sleep interval
|
42
|
-
writer.puts
|
42
|
+
writer.puts "timer"
|
43
43
|
end
|
44
44
|
rescue Errno::EPIPE
|
45
45
|
exit 0
|
46
|
-
rescue
|
46
|
+
rescue => e
|
47
47
|
MultiLogger.error e
|
48
48
|
end
|
49
49
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
4
|
-
require_relative
|
3
|
+
require_relative "../multi_logger"
|
4
|
+
require_relative "../string_support"
|
5
5
|
|
6
6
|
module Fusuma
|
7
7
|
module Plugin
|
@@ -12,30 +12,36 @@ module Fusuma
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def require_siblings_from_plugin_dir
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
fusuma_default_plugin_paths.each { |siblings_plugin| require(siblings_plugin) }
|
16
|
+
end
|
17
|
+
|
18
|
+
def fusuma_default_plugin_paths
|
19
|
+
search_key = File.join("../../", plugin_dir_name, "*.rb")
|
20
|
+
Dir.glob(File.expand_path("#{__dir__}/#{search_key}")).sort
|
19
21
|
end
|
20
22
|
|
21
23
|
def require_siblings_from_gems
|
22
|
-
|
23
|
-
|
24
|
-
|
24
|
+
fusuma_external_plugin_paths.each { |siblings_plugin| require(siblings_plugin) }
|
25
|
+
end
|
26
|
+
|
27
|
+
def fusuma_external_plugin_paths
|
28
|
+
search_key = File.join(plugin_dir_name, "*.rb")
|
29
|
+
Gem.find_latest_files(search_key).map do |siblings_plugin|
|
30
|
+
next unless %r{fusuma-plugin-(.+).*/lib/#{plugin_dir_name}/.+\.rb}.match?(siblings_plugin)
|
25
31
|
|
26
32
|
match_data = siblings_plugin.match(%r{(.*)/(.*)/lib/(.*)})
|
27
33
|
gemspec_path = Dir.glob("#{match_data[1]}/#{match_data[2]}/*.gemspec").first
|
28
34
|
raise "Not Found: #{match_data[1]}/#{match_data[2]}/*.gemspec" unless gemspec_path
|
29
35
|
|
30
36
|
gemspec = Gem::Specification.load(gemspec_path)
|
31
|
-
fusuma_gemspec_path = File.expand_path(
|
37
|
+
fusuma_gemspec_path = File.expand_path("../../../fusuma.gemspec", __dir__)
|
32
38
|
fusuma_gemspec = Gem::Specification.load(fusuma_gemspec_path)
|
33
|
-
if gemspec.dependencies.find { |d| d.name ==
|
34
|
-
|
39
|
+
if gemspec.dependencies.find { |d| d.name == "fusuma" }&.match?(fusuma_gemspec)
|
40
|
+
siblings_plugin
|
35
41
|
else
|
36
42
|
MultiLogger.warn "#{gemspec.name} #{gemspec.version} is incompatible with running #{fusuma_gemspec.name} #{fusuma_gemspec.version}"
|
37
43
|
end
|
38
|
-
end
|
44
|
+
end.compact
|
39
45
|
end
|
40
46
|
|
41
47
|
private
|
@@ -69,14 +75,14 @@ module Fusuma
|
|
69
75
|
end
|
70
76
|
|
71
77
|
def require_base_plugins
|
72
|
-
require_relative
|
73
|
-
require_relative
|
74
|
-
require_relative
|
75
|
-
require_relative
|
76
|
-
require_relative
|
77
|
-
require_relative
|
78
|
-
require_relative
|
79
|
-
require_relative
|
78
|
+
require_relative "./base"
|
79
|
+
require_relative "./events/event"
|
80
|
+
require_relative "./inputs/input"
|
81
|
+
require_relative "./filters/filter"
|
82
|
+
require_relative "./parsers/parser"
|
83
|
+
require_relative "./buffers/buffer"
|
84
|
+
require_relative "./detectors/detector"
|
85
|
+
require_relative "./executors/executor"
|
80
86
|
end
|
81
87
|
|
82
88
|
def plugins
|
@@ -1,14 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
4
|
-
require_relative
|
3
|
+
require_relative "../events/records/record"
|
4
|
+
require_relative "../events/records/gesture_record"
|
5
5
|
|
6
6
|
module Fusuma
|
7
7
|
module Plugin
|
8
8
|
module Parsers
|
9
9
|
# parse libinput and generate gesture record
|
10
10
|
class LibinputGestureParser < Parser
|
11
|
-
DEFAULT_SOURCE =
|
11
|
+
DEFAULT_SOURCE = "libinput_command_input"
|
12
12
|
|
13
13
|
# @param record [String]
|
14
14
|
# @return [Records::GestureRecord, nil]
|
@@ -21,9 +21,9 @@ module Fusuma
|
|
21
21
|
end
|
22
22
|
|
23
23
|
Events::Records::GestureRecord.new(status: status,
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
gesture: gesture,
|
25
|
+
finger: finger,
|
26
|
+
delta: delta)
|
27
27
|
end
|
28
28
|
|
29
29
|
private
|
@@ -34,7 +34,7 @@ module Fusuma
|
|
34
34
|
|
35
35
|
gesture, status = *detect_gesture(event_name)
|
36
36
|
|
37
|
-
status =
|
37
|
+
status = "cancelled" if gesture == "hold" && status == "end" && other == "cancelled"
|
38
38
|
delta = parse_delta(other)
|
39
39
|
[gesture, status, finger, delta]
|
40
40
|
end
|
@@ -50,10 +50,10 @@ module Fusuma
|
|
50
50
|
return if line.nil?
|
51
51
|
|
52
52
|
move_x, move_y, unaccelerated_x, unaccelerated_y, _, zoom, _, rotate =
|
53
|
-
line.tr(
|
53
|
+
line.tr("/|(|)", " ").split
|
54
54
|
Events::Records::GestureRecord::Delta.new(move_x.to_f, move_y.to_f,
|
55
|
-
|
56
|
-
|
55
|
+
unaccelerated_x.to_f, unaccelerated_y.to_f,
|
56
|
+
zoom.to_f, rotate.to_f)
|
57
57
|
end
|
58
58
|
end
|
59
59
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
3
|
+
require_relative "../base"
|
4
4
|
|
5
5
|
module Fusuma
|
6
6
|
module Plugin
|
@@ -26,11 +26,11 @@ module Fusuma
|
|
26
26
|
# Set source for tag from config.yml.
|
27
27
|
# DEFAULT_SOURCE is defined in each Parser plugins.
|
28
28
|
def source
|
29
|
-
@source ||= config_params(:source) || self.class.const_get(
|
29
|
+
@source ||= config_params(:source) || self.class.const_get(:DEFAULT_SOURCE)
|
30
30
|
end
|
31
31
|
|
32
32
|
def tag
|
33
|
-
@tag ||= self.class.name.split(
|
33
|
+
@tag ||= self.class.name.split("::").last.underscore
|
34
34
|
end
|
35
35
|
|
36
36
|
# parse Record object
|
@@ -3,14 +3,14 @@
|
|
3
3
|
# support camerize and underscore
|
4
4
|
class String
|
5
5
|
def camelize
|
6
|
-
split(
|
6
|
+
split("_").map(&:capitalize).join
|
7
7
|
end
|
8
8
|
|
9
9
|
def underscore
|
10
10
|
gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
|
11
11
|
.gsub(/([a-z\d])([A-Z])/, '\1_\2')
|
12
|
-
.gsub(
|
13
|
-
.tr(
|
12
|
+
.gsub("::", "/")
|
13
|
+
.tr("-", "_")
|
14
14
|
.downcase
|
15
15
|
end
|
16
16
|
end
|
data/lib/fusuma/version.rb
CHANGED
data/lib/fusuma.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative
|
4
|
-
require_relative
|
5
|
-
require_relative
|
6
|
-
require_relative
|
7
|
-
require_relative
|
8
|
-
require_relative
|
3
|
+
require_relative "./fusuma/version"
|
4
|
+
require_relative "./fusuma/multi_logger"
|
5
|
+
require_relative "./fusuma/config"
|
6
|
+
require_relative "./fusuma/environment"
|
7
|
+
require_relative "./fusuma/device"
|
8
|
+
require_relative "./fusuma/plugin/manager"
|
9
9
|
|
10
10
|
# this is top level module
|
11
11
|
module Fusuma
|
@@ -24,8 +24,8 @@ module Fusuma
|
|
24
24
|
private
|
25
25
|
|
26
26
|
def set_trap
|
27
|
-
Signal.trap(
|
28
|
-
Signal.trap(
|
27
|
+
Signal.trap("INT") { puts exit } # Trap ^C
|
28
|
+
Signal.trap("TERM") { puts exit } # Trap `Kill `
|
29
29
|
end
|
30
30
|
|
31
31
|
def read_options(option)
|
@@ -81,8 +81,8 @@ module Fusuma
|
|
81
81
|
|
82
82
|
# For performance monitoring
|
83
83
|
def run_with_lineprof(count: 1000)
|
84
|
-
require
|
85
|
-
require
|
84
|
+
require "rblineprof"
|
85
|
+
require "rblineprof-report"
|
86
86
|
|
87
87
|
profile = lineprof(%r{#{Pathname.new(__FILE__).parent}/.}) do
|
88
88
|
count.times { pipeline }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fusuma
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- iberianpig
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-09-28 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Fusuma is multitouch gesture recognizer. This gem makes your touchpad
|
14
14
|
on Linux able to recognize swipes or pinchs and assign command to them. Read installation
|
@@ -65,44 +65,6 @@ files:
|
|
65
65
|
- lib/fusuma/plugin/parsers/parser.rb
|
66
66
|
- lib/fusuma/string_support.rb
|
67
67
|
- lib/fusuma/version.rb
|
68
|
-
- spec/helpers/config_helper.rb
|
69
|
-
- spec/lib/config/searcher_spec.rb
|
70
|
-
- spec/lib/config_spec.rb
|
71
|
-
- spec/lib/custom_process_spec.rb
|
72
|
-
- spec/lib/device_spec.rb
|
73
|
-
- spec/lib/dummy_config.yml
|
74
|
-
- spec/lib/fusuma_spec.rb
|
75
|
-
- spec/lib/libinput-list-devices_iberianpig-XPS-9360.txt
|
76
|
-
- spec/lib/libinput-list-devices_magic_trackpad.txt
|
77
|
-
- spec/lib/libinput-list-devices_razer_razer_blade.txt
|
78
|
-
- spec/lib/libinput-list-devices_thejinx0r.txt
|
79
|
-
- spec/lib/libinput-list-devices_unavailable.txt
|
80
|
-
- spec/lib/libinput_command_spec.rb
|
81
|
-
- spec/lib/plugin/base_spec.rb
|
82
|
-
- spec/lib/plugin/buffers/buffer_spec.rb
|
83
|
-
- spec/lib/plugin/buffers/dummy_buffer.rb
|
84
|
-
- spec/lib/plugin/buffers/gesture_buffer_spec.rb
|
85
|
-
- spec/lib/plugin/detectors/detector_spec.rb
|
86
|
-
- spec/lib/plugin/detectors/dummy_detector.rb
|
87
|
-
- spec/lib/plugin/detectors/hold_detector_spec.rb
|
88
|
-
- spec/lib/plugin/detectors/pinch_detector_spec.rb
|
89
|
-
- spec/lib/plugin/detectors/rotate_detector_spec.rb
|
90
|
-
- spec/lib/plugin/detectors/swipe_detector_spec.rb
|
91
|
-
- spec/lib/plugin/events/event_spec.rb
|
92
|
-
- spec/lib/plugin/events/records/gesture_record_spec.rb
|
93
|
-
- spec/lib/plugin/events/records/record_spec.rb
|
94
|
-
- spec/lib/plugin/events/records/text_record_spec.rb
|
95
|
-
- spec/lib/plugin/executors/command_executor_spec.rb
|
96
|
-
- spec/lib/plugin/executors/executor_spec.rb
|
97
|
-
- spec/lib/plugin/filters/filter_spec.rb
|
98
|
-
- spec/lib/plugin/filters/libinput_filter_spec.rb
|
99
|
-
- spec/lib/plugin/inputs/input_spec.rb
|
100
|
-
- spec/lib/plugin/inputs/libinput_command_input_spec.rb
|
101
|
-
- spec/lib/plugin/inputs/timer_input_spec.rb
|
102
|
-
- spec/lib/plugin/manager_spec.rb
|
103
|
-
- spec/lib/plugin/parsers/libinput_gesture_parser_spec.rb
|
104
|
-
- spec/lib/plugin/parsers/parser_spec.rb
|
105
|
-
- spec/spec_helper.rb
|
106
68
|
homepage: https://github.com/iberianpig/fusuma
|
107
69
|
licenses:
|
108
70
|
- MIT
|
@@ -128,42 +90,4 @@ rubygems_version: 3.0.3.1
|
|
128
90
|
signing_key:
|
129
91
|
specification_version: 4
|
130
92
|
summary: Multitouch gestures with libinput driver, Linux
|
131
|
-
test_files:
|
132
|
-
- spec/spec_helper.rb
|
133
|
-
- spec/lib/libinput-list-devices_thejinx0r.txt
|
134
|
-
- spec/lib/dummy_config.yml
|
135
|
-
- spec/lib/device_spec.rb
|
136
|
-
- spec/lib/libinput_command_spec.rb
|
137
|
-
- spec/lib/libinput-list-devices_unavailable.txt
|
138
|
-
- spec/lib/plugin/executors/executor_spec.rb
|
139
|
-
- spec/lib/plugin/executors/command_executor_spec.rb
|
140
|
-
- spec/lib/plugin/filters/filter_spec.rb
|
141
|
-
- spec/lib/plugin/filters/libinput_filter_spec.rb
|
142
|
-
- spec/lib/plugin/buffers/gesture_buffer_spec.rb
|
143
|
-
- spec/lib/plugin/buffers/buffer_spec.rb
|
144
|
-
- spec/lib/plugin/buffers/dummy_buffer.rb
|
145
|
-
- spec/lib/plugin/manager_spec.rb
|
146
|
-
- spec/lib/plugin/parsers/libinput_gesture_parser_spec.rb
|
147
|
-
- spec/lib/plugin/parsers/parser_spec.rb
|
148
|
-
- spec/lib/plugin/inputs/libinput_command_input_spec.rb
|
149
|
-
- spec/lib/plugin/inputs/input_spec.rb
|
150
|
-
- spec/lib/plugin/inputs/timer_input_spec.rb
|
151
|
-
- spec/lib/plugin/detectors/rotate_detector_spec.rb
|
152
|
-
- spec/lib/plugin/detectors/dummy_detector.rb
|
153
|
-
- spec/lib/plugin/detectors/pinch_detector_spec.rb
|
154
|
-
- spec/lib/plugin/detectors/swipe_detector_spec.rb
|
155
|
-
- spec/lib/plugin/detectors/detector_spec.rb
|
156
|
-
- spec/lib/plugin/detectors/hold_detector_spec.rb
|
157
|
-
- spec/lib/plugin/events/records/text_record_spec.rb
|
158
|
-
- spec/lib/plugin/events/records/record_spec.rb
|
159
|
-
- spec/lib/plugin/events/records/gesture_record_spec.rb
|
160
|
-
- spec/lib/plugin/events/event_spec.rb
|
161
|
-
- spec/lib/plugin/base_spec.rb
|
162
|
-
- spec/lib/libinput-list-devices_magic_trackpad.txt
|
163
|
-
- spec/lib/config_spec.rb
|
164
|
-
- spec/lib/config/searcher_spec.rb
|
165
|
-
- spec/lib/libinput-list-devices_razer_razer_blade.txt
|
166
|
-
- spec/lib/custom_process_spec.rb
|
167
|
-
- spec/lib/fusuma_spec.rb
|
168
|
-
- spec/lib/libinput-list-devices_iberianpig-XPS-9360.txt
|
169
|
-
- spec/helpers/config_helper.rb
|
93
|
+
test_files: []
|
@@ -1,20 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'tempfile'
|
4
|
-
require './lib/fusuma/config'
|
5
|
-
|
6
|
-
module Fusuma
|
7
|
-
module ConfigHelper
|
8
|
-
module_function
|
9
|
-
|
10
|
-
def load_config_yml=(string)
|
11
|
-
Config.custom_path = Tempfile.open do |temp_file|
|
12
|
-
temp_file.tap { |f| f.write(string) }
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def clear_config_yml
|
17
|
-
Config.custom_path = nil
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|