fusuma 1.2 → 1.2.1
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 +5 -5
- data/.github/FUNDING.yml +1 -1
- data/.rubocop.yml +1 -0
- data/lib/fusuma.rb +2 -1
- data/lib/fusuma/device.rb +0 -26
- data/lib/fusuma/plugin/filters/filter.rb +3 -2
- data/lib/fusuma/plugin/filters/libinput_device_filter.rb +48 -12
- data/lib/fusuma/plugin/inputs/libinput_command_input.rb +1 -9
- data/lib/fusuma/version.rb +1 -1
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: f639aca336e61fc9c2a68d32bb31c52964c30eefb9c32ab2caba61dc6f37a9e7
|
4
|
+
data.tar.gz: 8055c1d8250c7062f314371129d51adc54f27c4a5f7e18e07452462233047c18
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40f9f9aae6f9b281c474fbb65e2bb48ef4b1082c9065adbaea06dc51559504f5b652fb8716517a43d827f8b3e02f63961661d592e75fcfdf0d478c1723b9667f
|
7
|
+
data.tar.gz: d3ca5a6136544f760e8277e2629838e6903f5028478fd43b647218ee19b1b4fd4a8bb744ce6e5a9b8b708614a7689cf2f6178db77180bab4105b0db55430c457
|
data/.github/FUNDING.yml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# These are supported funding model platforms
|
2
2
|
|
3
|
-
github:
|
3
|
+
github: [iberianpig] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
4
4
|
patreon: iberianpig # Replace with a single Patreon username
|
5
5
|
open_collective: # Replace with a single Open Collective username
|
6
6
|
ko_fi: # Replace with a single Ko-fi username
|
data/.rubocop.yml
CHANGED
data/lib/fusuma.rb
CHANGED
@@ -37,7 +37,8 @@ module Fusuma
|
|
37
37
|
print_enabled_plugins
|
38
38
|
|
39
39
|
print_device_list if option[:list]
|
40
|
-
|
40
|
+
# TODO: remove keep_device_from_option from command line options
|
41
|
+
Plugin::Filters::LibinputDeviceFilter::KeepDevice.from_option = option[:device]
|
41
42
|
Process.daemon if option[:daemon]
|
42
43
|
end
|
43
44
|
|
data/lib/fusuma/device.rb
CHANGED
@@ -28,8 +28,6 @@ module Fusuma
|
|
28
28
|
end
|
29
29
|
|
30
30
|
class << self
|
31
|
-
attr_reader :given_devices
|
32
|
-
|
33
31
|
# @return [Array]
|
34
32
|
def all
|
35
33
|
@all ||= fetch_devices
|
@@ -53,19 +51,6 @@ module Fusuma
|
|
53
51
|
@available = nil
|
54
52
|
end
|
55
53
|
|
56
|
-
# Narrow down available device list
|
57
|
-
# @param names [String, Array]
|
58
|
-
def given_devices=(names)
|
59
|
-
# NOTE: convert to Array
|
60
|
-
device_names = Array(names)
|
61
|
-
return if device_names.empty?
|
62
|
-
|
63
|
-
@given_devices = narrow_available_devices(device_names: device_names)
|
64
|
-
return unless @given_devices.empty?
|
65
|
-
|
66
|
-
exit 1
|
67
|
-
end
|
68
|
-
|
69
54
|
private
|
70
55
|
|
71
56
|
# @return [Array]
|
@@ -77,17 +62,6 @@ module Fusuma
|
|
77
62
|
line_parser.generate_devices
|
78
63
|
end
|
79
64
|
|
80
|
-
def narrow_available_devices(device_names:)
|
81
|
-
device_names.select do |name|
|
82
|
-
if available.map(&:name).include? name
|
83
|
-
MultiLogger.info("Touchpad is found: #{name}")
|
84
|
-
true
|
85
|
-
else
|
86
|
-
MultiLogger.warn("Touchpad is not found: #{name}")
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
65
|
# parse line and generate devices
|
92
66
|
class LineParser
|
93
67
|
attr_reader :lines
|
@@ -6,7 +6,7 @@ module Fusuma
|
|
6
6
|
module Plugin
|
7
7
|
# filter class
|
8
8
|
module Filters
|
9
|
-
#
|
9
|
+
# Filter record to keep
|
10
10
|
class Filter < Base
|
11
11
|
# Filter input event
|
12
12
|
# @param event [Event]
|
@@ -24,7 +24,8 @@ module Fusuma
|
|
24
24
|
|
25
25
|
# @abstract override `#keep?` to implement
|
26
26
|
# @param record [String]
|
27
|
-
# @return [True
|
27
|
+
# @return [True] when keeping record
|
28
|
+
# @return [False] when discarding record
|
28
29
|
def keep?(record)
|
29
30
|
true if record
|
30
31
|
end
|
@@ -17,23 +17,59 @@ module Fusuma
|
|
17
17
|
}
|
18
18
|
end
|
19
19
|
|
20
|
+
# @return [TrueClass] when keeping it
|
21
|
+
# @return [FalseClass] when discarding it
|
20
22
|
def keep?(record)
|
21
|
-
|
22
|
-
|
23
|
+
# NOTE: purge cache when found new device
|
24
|
+
if record.to_s =~ /\sDEVICE_ADDED\s/ && keep_device.match_pattern?(record.to_s)
|
25
|
+
keep_device.reset
|
26
|
+
return false
|
27
|
+
end
|
23
28
|
|
24
|
-
|
29
|
+
keep_device.all.map(&:id).any? { |device_id| record.to_s =~ /^\s?#{device_id}\s/ }
|
30
|
+
end
|
25
31
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
32
|
+
def keep_device
|
33
|
+
@keep_device ||= begin
|
34
|
+
from_config = Array(config_params(:keep_device_names))
|
35
|
+
KeepDevice.new(name_patterns: from_config)
|
36
|
+
end
|
31
37
|
end
|
32
38
|
|
33
|
-
#
|
34
|
-
|
35
|
-
|
36
|
-
|
39
|
+
# Select Device to keep
|
40
|
+
class KeepDevice
|
41
|
+
def initialize(name_patterns:)
|
42
|
+
@name_patterns = name_patterns | Array(self.class.from_option)
|
43
|
+
end
|
44
|
+
|
45
|
+
# remove cache for reloading new devices
|
46
|
+
def reset
|
47
|
+
@all = nil
|
48
|
+
Device.reset
|
49
|
+
end
|
50
|
+
|
51
|
+
# @return [Array]
|
52
|
+
def all
|
53
|
+
@all ||= if @name_patterns.empty?
|
54
|
+
Device.available
|
55
|
+
else
|
56
|
+
Device.all.select do |device|
|
57
|
+
match_pattern?(device.name)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
# @return [TrueClass]
|
63
|
+
# @return [FalseClass]
|
64
|
+
def match_pattern?(string)
|
65
|
+
return true if @name_patterns.empty?
|
66
|
+
|
67
|
+
@name_patterns.any? { |name_pattern| string.match(name_pattern) }
|
68
|
+
end
|
69
|
+
|
70
|
+
class << self
|
71
|
+
# TODO: remove from_option and command line options
|
72
|
+
attr_accessor :from_option
|
37
73
|
end
|
38
74
|
end
|
39
75
|
end
|
@@ -49,7 +49,7 @@ module Fusuma
|
|
49
49
|
# @yield [line] gives a line in libinput debug-events output to the block
|
50
50
|
def debug_events
|
51
51
|
prefix = 'stdbuf -oL --'
|
52
|
-
options = [*libinput_options
|
52
|
+
options = [*libinput_options]
|
53
53
|
cmd = "#{prefix} #{debug_events_command} #{options.join(' ')}".strip
|
54
54
|
MultiLogger.debug(debug_events: cmd)
|
55
55
|
Open3.popen3(cmd) do |_i, o, _e, _w|
|
@@ -90,14 +90,6 @@ module Fusuma
|
|
90
90
|
|
91
91
|
private
|
92
92
|
|
93
|
-
# use device option only if libinput detect only 1 device
|
94
|
-
# @return [String]
|
95
|
-
def device_option
|
96
|
-
return unless Device.available.size == 1
|
97
|
-
|
98
|
-
"--device=/dev/input/#{Device.available.first.id}"
|
99
|
-
end
|
100
|
-
|
101
93
|
# TODO: add specs
|
102
94
|
def libinput_options
|
103
95
|
enable_tap = '--enable-tap' if config_params(:'enable-tap')
|
data/lib/fusuma/version.rb
CHANGED
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:
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- iberianpig
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-10-
|
11
|
+
date: 2019-10-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -228,8 +228,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
228
228
|
- !ruby/object:Gem::Version
|
229
229
|
version: '0'
|
230
230
|
requirements: []
|
231
|
-
|
232
|
-
rubygems_version: 2.5.1
|
231
|
+
rubygems_version: 3.0.3
|
233
232
|
signing_key:
|
234
233
|
specification_version: 4
|
235
234
|
summary: Multitouch gestures with libinput dirver on X11, Linux
|