fusuma 0.3.3 → 0.3.4
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 +1 -1
- data/lib/fusuma.rb +4 -32
- data/lib/fusuma/device.rb +45 -0
- data/lib/fusuma/gesture_info.rb +1 -1
- data/lib/fusuma/multi_logger.rb +0 -2
- data/lib/fusuma/version.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc924ac29b2c4dbdb4af8a4244f3562f8c691e13
|
4
|
+
data.tar.gz: cfc5aed1ddfa5ef0e5c3804344159f9a4275fb26
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e89d9e3ad941b4e87cee08f216867c89c6e57095ae6eb9d536a58f89eb7fb446378694aaa2dfc0edbb18f4f13101fa5867ac2703b9f3e400db528ade75302909
|
7
|
+
data.tar.gz: db29831ba20d5962a18a5fb8957a84eb58167a962660d900373628e442d97f3c9b77c49046fbeae824b0b658efda36e5ad6ddcf28b6a052319564b8334d04144
|
data/README.md
CHANGED
@@ -14,7 +14,7 @@ IMPORTANT: You must be a member of the _input_ group to have permission
|
|
14
14
|
|
15
15
|
$ sudo gpasswd -a $USER input
|
16
16
|
|
17
|
-
You must log out and back in or restart to assign this group.
|
17
|
+
**You must log out and back in or restart** to assign this group.
|
18
18
|
|
19
19
|
You need libinput release 1.0 or later. Install libinput-tools:
|
20
20
|
|
data/lib/fusuma.rb
CHANGED
@@ -6,6 +6,7 @@ require_relative 'fusuma/swipe.rb'
|
|
6
6
|
require_relative 'fusuma/pinch.rb'
|
7
7
|
require_relative 'fusuma/multi_logger'
|
8
8
|
require_relative 'fusuma/config.rb'
|
9
|
+
require_relative 'fusuma/device.rb'
|
9
10
|
require 'logger'
|
10
11
|
require 'open3'
|
11
12
|
require 'yaml'
|
@@ -35,7 +36,7 @@ module Fusuma
|
|
35
36
|
def read_libinput
|
36
37
|
Open3.popen3(libinput_command) do |_i, o, _e, _w|
|
37
38
|
o.each do |line|
|
38
|
-
gesture_action = GestureAction.initialize_by(line,
|
39
|
+
gesture_action = GestureAction.initialize_by(line, Device.names)
|
39
40
|
next if gesture_action.nil?
|
40
41
|
@action_stack ||= ActionStack.new
|
41
42
|
@action_stack.push gesture_action
|
@@ -45,48 +46,19 @@ module Fusuma
|
|
45
46
|
end
|
46
47
|
end
|
47
48
|
|
48
|
-
def device_names
|
49
|
-
return @device_names unless @device_names.nil?
|
50
|
-
names = []
|
51
|
-
@device_names = list_devices_logs.map do |line|
|
52
|
-
MultiLogger.debug(line)
|
53
|
-
name = extracted_input_device_from(line)
|
54
|
-
names << name unless name.nil?
|
55
|
-
next unless natural_scroll_is_available?(line)
|
56
|
-
names.pop
|
57
|
-
end.compact
|
58
|
-
end
|
59
|
-
|
60
49
|
private
|
61
50
|
|
62
|
-
def list_devices_logs
|
63
|
-
Open3.popen3('libinput-list-devices') do |_i, o, _e, _w|
|
64
|
-
return o.to_a
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
51
|
def libinput_command
|
69
52
|
return @libinput_command if @libinput_command
|
70
53
|
# NOTE: --enable-dwt means "disable while typing"
|
71
54
|
prefix = 'stdbuf -oL --'
|
72
55
|
command = 'libinput-debug-events --enable-dwt'
|
73
|
-
device_option = if
|
74
|
-
"--device /dev/input/#{
|
56
|
+
device_option = if Device.names.size == 1
|
57
|
+
"--device /dev/input/#{Device.names.first}"
|
75
58
|
end
|
76
59
|
@libinput_command = [prefix, command, device_option].join(' ')
|
77
60
|
MultiLogger.debug(libinput_command: @libinput_command)
|
78
61
|
@libinput_command
|
79
62
|
end
|
80
|
-
|
81
|
-
def extracted_input_device_from(line)
|
82
|
-
return unless line =~ /^Kernel: /
|
83
|
-
line.match(/event[0-9]+/).to_s
|
84
|
-
end
|
85
|
-
|
86
|
-
def natural_scroll_is_available?(line)
|
87
|
-
return false unless line =~ /^Nat.scrolling: /
|
88
|
-
return false if line =~ %r{n/a}
|
89
|
-
true
|
90
|
-
end
|
91
63
|
end
|
92
64
|
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Fusuma
|
2
|
+
# detect input device
|
3
|
+
class Device
|
4
|
+
class << self
|
5
|
+
def names
|
6
|
+
return @names unless @names.nil?
|
7
|
+
device_names = fetch_device_names
|
8
|
+
MultiLogger.debug(device_names: device_names)
|
9
|
+
raise 'Touchpad is not found' if device_names.empty?
|
10
|
+
@names = device_names
|
11
|
+
rescue => ex
|
12
|
+
MultiLogger.error(ex.message)
|
13
|
+
exit 1
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def fetch_device_names
|
19
|
+
current_device = nil
|
20
|
+
list_devices_logs.map do |line|
|
21
|
+
current_device = extracted_input_device_from(line) || current_device
|
22
|
+
next unless natural_scroll_is_available?(line)
|
23
|
+
current_device
|
24
|
+
end.compact
|
25
|
+
end
|
26
|
+
|
27
|
+
def list_devices_logs
|
28
|
+
Open3.popen3('libinput-list-devices') do |_i, o, _e, _w|
|
29
|
+
return o.to_a
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def extracted_input_device_from(line)
|
34
|
+
return unless line =~ /^Kernel: /
|
35
|
+
line.match(/event[0-9]+/).to_s
|
36
|
+
end
|
37
|
+
|
38
|
+
def natural_scroll_is_available?(line)
|
39
|
+
return false unless line =~ /^Nat.scrolling: /
|
40
|
+
return false if line =~ %r{n/a}
|
41
|
+
true
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/fusuma/gesture_info.rb
CHANGED
data/lib/fusuma/multi_logger.rb
CHANGED
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: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- iberianpig
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -136,6 +136,7 @@ files:
|
|
136
136
|
- lib/fusuma/action_stack.rb
|
137
137
|
- lib/fusuma/config.rb
|
138
138
|
- lib/fusuma/config.yml
|
139
|
+
- lib/fusuma/device.rb
|
139
140
|
- lib/fusuma/gesture_action.rb
|
140
141
|
- lib/fusuma/gesture_info.rb
|
141
142
|
- lib/fusuma/multi_logger.rb
|
@@ -162,8 +163,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
162
163
|
version: '0'
|
163
164
|
requirements: []
|
164
165
|
rubyforge_project:
|
165
|
-
rubygems_version: 2.
|
166
|
+
rubygems_version: 2.6.11
|
166
167
|
signing_key:
|
167
168
|
specification_version: 4
|
168
169
|
summary: Multitouch gestures with libinput dirver on X11, Linux
|
169
170
|
test_files: []
|
171
|
+
has_rdoc:
|