fusuma 3.6.1 → 3.7.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f8ebe6dea94f392eb2972323029d8f32ab58735020f0f5af4e70a52f3d80eb13
4
- data.tar.gz: 12e77d944ef40cd9daf3c05d8f9b2de2538dd031ef0095395904f9fb4dacc238
3
+ metadata.gz: ea61b72e99beea075544c95d3a3307161d471feb2849d27eda02f469a0597afb
4
+ data.tar.gz: cccc575de906c854c49655c80848e97c4f5be4bc6e8f48645f30f5277ea25f5a
5
5
  SHA512:
6
- metadata.gz: ccc8856c22dfe28666edf5163913250058b3859925b1eae7e38187663dcdb99c27b24690620a0518192c7342da664683f4821d9b691e1929d1c3472d5e208699
7
- data.tar.gz: c88048e832b387171cc3ef49f015564f8b1bfc19058eaa8e9bf54e4b79a90199c0652df7c4936b3a01eea363cb26718fbb6fc839700ef10d7c407835010a2642
6
+ metadata.gz: cad08188f1318b0e6ccfb2630ff6d2a8960289f084d3390e2870d97ed0743d4868dd0ed4218238be1b73048f7bcd841fdb50c74ed3306ff4a56773261032e14d
7
+ data.tar.gz: 77c81733d411db62f3eeb55a87f55ba25cacc9e2dba495fd0026b5cae2e0f095c447458a6506f4cf81efec71dcbe4caab4b461bbc17e78c9467d344a5c3b2112
@@ -20,6 +20,11 @@ module Fusuma
20
20
  Gem::Version.new(version) >= Gem::Version.new(NEW_CLI_OPTION_VERSION)
21
21
  end
22
22
 
23
+ # @return [Boolean]
24
+ def libinput_1_27_0_or_later?
25
+ Gem::Version.new(version) >= Gem::Version.new("1.27.0")
26
+ end
27
+
23
28
  # @return [String]
24
29
  def version
25
30
  # version_command prints "1.6.3\n"
@@ -53,9 +53,8 @@ module Fusuma
53
53
 
54
54
  next if param_types.any? { |klass| val.is_a?(klass) }
55
55
 
56
- MultiLogger.error("Please fix config.yml.")
57
- MultiLogger.error(":#{config_index.keys.map(&:symbol)
58
- .join(" => :")} => :#{key} should be #{param_types.join(" OR ")}.")
56
+ MultiLogger.error("Please fix config.yml")
57
+ MultiLogger.error("`#{config_index.keys.join(".")}.#{key}` should be #{param_types.join(" OR ")}.")
59
58
  exit 1
60
59
  end
61
60
  end
@@ -40,6 +40,7 @@ module Fusuma
40
40
  plugin_gemspec = Gem::Specification.load(plugin_gemspec_path)
41
41
  fusuma_gemspec_path = File.expand_path("../../../fusuma.gemspec", __dir__)
42
42
  fusuma_gemspec = Gem::Specification.load(fusuma_gemspec_path)
43
+ next if plugin_gemspec == fusuma_gemspec
43
44
 
44
45
  if plugin_gemspec.dependencies.find { |d| d.name == "fusuma" }&.match?(fusuma_gemspec)
45
46
  siblings_plugin
@@ -2,6 +2,7 @@
2
2
 
3
3
  require_relative "../events/records/record"
4
4
  require_relative "../events/records/gesture_record"
5
+ require_relative "../../libinput_command"
5
6
 
6
7
  module Fusuma
7
8
  module Plugin
@@ -29,6 +30,20 @@ module Fusuma
29
30
  private
30
31
 
31
32
  def parse_libinput(line)
33
+ if libinput_1_27_0_or_later?
34
+ parse_line_1_27_0_or_later(line)
35
+ else
36
+ parse_line(line)
37
+ end
38
+ end
39
+
40
+ def libinput_1_27_0_or_later?
41
+ return @libinput_1_27_0_or_later if defined?(@libinput_1_27_0_or_later)
42
+
43
+ @libinput_1_27_0_or_later = Inputs::LibinputCommandInput.new.command.libinput_1_27_0_or_later?
44
+ end
45
+
46
+ def parse_line(line)
32
47
  _device, event_name, _time, other = line.strip.split(nil, 4)
33
48
  finger, other = other.split(nil, 2)
34
49
 
@@ -39,6 +54,22 @@ module Fusuma
39
54
  [gesture, status, finger, delta]
40
55
  end
41
56
 
57
+ def parse_line_1_27_0_or_later(line)
58
+ _device, event_name, other = line.strip.split(nil, 3)
59
+
60
+ if other[0] != "+"
61
+ _seq, other = other.split(nil, 2)
62
+ end
63
+
64
+ _time, finger, other = other.split(nil, 3)
65
+
66
+ gesture, status = *detect_gesture(event_name)
67
+
68
+ status = "cancelled" if gesture == "hold" && status == "end" && other == "cancelled"
69
+ delta = parse_delta(other)
70
+ [gesture, status, finger, delta]
71
+ end
72
+
42
73
  def detect_gesture(event_name)
43
74
  event_name =~ /GESTURE_(SWIPE|PINCH|HOLD)_(BEGIN|UPDATE|END)/
44
75
  gesture = Regexp.last_match(1).downcase
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Fusuma
4
- VERSION = "3.6.1"
4
+ VERSION = "3.7.0"
5
5
  end
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: 3.6.1
4
+ version: 3.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - iberianpig
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-08-19 00:00:00.000000000 Z
11
+ date: 2024-11-24 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