fusuma-plugin-remap 0.3.0 → 0.3.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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb42159c757f56d2da9af424bfc088719bc22c965ad72bed52bc9bd81ad86e9f
|
4
|
+
data.tar.gz: cdddfbf418ecb85c1ad0cd3991d04ca5f022833ce4b344b1e9e37594c6c82ae9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d8255feb9082b3f8e18962b8edfe73ba44ebb61d53f159ebeeadf6fda53ca796cbce18f100d4efdb8dcf3c8290920458c30ccffb924973b8a6a9eb0c855db555
|
7
|
+
data.tar.gz: c24ca94224d7aadb892af07c62fe689ff74e07b38ff09cc0a15b6755d1aa3092a2255c553aff93f6c6c4401220456ec665776fd9eb5b57da3e102816929f9182
|
@@ -51,15 +51,15 @@ module Fusuma
|
|
51
51
|
private
|
52
52
|
|
53
53
|
def setup_remapper
|
54
|
+
source_keyboards = KeyboardSelector.new(config_params(:keyboard_name_patterns)).select
|
55
|
+
internal_touchpad = TouchpadSelector.new(config_params(:touchpad_name_patterns)).select.first
|
56
|
+
MultiLogger.info(source_keyboards: source_keyboards.map(&:device_name), internal_touchpad: internal_touchpad.device_name)
|
57
|
+
|
54
58
|
layer_manager = Remap::LayerManager.instance
|
55
59
|
|
56
60
|
# physical keyboard input event
|
57
61
|
@keyboard_reader, keyboard_writer = IO.pipe
|
58
62
|
|
59
|
-
source_keyboards = KeyboardSelector.new(config_params(:keyboard_name_patterns)).select
|
60
|
-
internal_touchpad = TouchpadSelector.new(config_params(:touchpad_name_patterns)).select.first
|
61
|
-
MultiLogger.info(source_keyboards: source_keyboards.map(&:device_name), internal_touchpad: internal_touchpad.device_name)
|
62
|
-
|
63
63
|
@pid = fork do
|
64
64
|
layer_manager.writer.close
|
65
65
|
@keyboard_reader.close
|
@@ -96,11 +96,7 @@ module Fusuma
|
|
96
96
|
# @return [Array<Revdev::EventDevice>]
|
97
97
|
def select
|
98
98
|
devices = if @names
|
99
|
-
Fusuma::Device.all.select
|
100
|
-
Array(@names).any? do |name|
|
101
|
-
d.name =~ /#{name}/
|
102
|
-
end
|
103
|
-
end
|
99
|
+
Fusuma::Device.all.select { |d| Array(@names).any? { |name| d.name =~ /#{name}/ } }
|
104
100
|
else
|
105
101
|
# available returns only touchpad devices
|
106
102
|
Fusuma::Device.available
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require "revdev"
|
2
2
|
require "msgpack"
|
3
3
|
require "set"
|
4
|
-
require_relative "
|
4
|
+
require_relative "layer_manager"
|
5
5
|
|
6
|
-
require_relative "
|
6
|
+
require_relative "ruinput_device_patched"
|
7
7
|
|
8
8
|
module Fusuma
|
9
9
|
module Plugin
|
@@ -79,7 +79,8 @@ module Fusuma
|
|
79
79
|
|
80
80
|
remapped_event = InputEvent.new(nil, input_event.type, find_code_from_key(remapped), input_event.value)
|
81
81
|
|
82
|
-
#
|
82
|
+
# Workaround to solve the problem that the remapped key remains pressed
|
83
|
+
# when the key pressed before remapping is released after remapping
|
83
84
|
unless record_virtual_keyboard_event?(remapped, remapped_event.value)
|
84
85
|
# set original key before remapping
|
85
86
|
remapped_event.code = input_event.code
|
@@ -94,14 +95,20 @@ module Fusuma
|
|
94
95
|
end
|
95
96
|
end
|
96
97
|
|
97
|
-
|
98
|
-
|
98
|
+
private
|
99
|
+
|
100
|
+
# record virtual keyboard event
|
101
|
+
# @param [String] remapped_value remapped key name
|
102
|
+
# @param [Integer] event_value event value
|
103
|
+
# @return [Boolean] false if the key was pressed before remapping started and was released
|
104
|
+
# @return [Boolean] true if the key was not pressed before remapping started
|
99
105
|
def record_virtual_keyboard_event?(remapped_value, event_value)
|
100
106
|
case event_value
|
101
107
|
when 0
|
102
108
|
@pressed_virtual_keys.delete?(remapped_value)
|
103
109
|
when 1
|
104
110
|
@pressed_virtual_keys.add?(remapped_value)
|
111
|
+
true # Always return true because the remapped key may be the same
|
105
112
|
else
|
106
113
|
# 2 is repeat
|
107
114
|
true
|
@@ -129,7 +136,13 @@ module Fusuma
|
|
129
136
|
|
130
137
|
def grab_keyboards
|
131
138
|
@source_keyboards.each do |keyboard|
|
132
|
-
wait_release_all_keys(keyboard)
|
139
|
+
wait_release_all_keys(keyboard)
|
140
|
+
begin
|
141
|
+
keyboard.grab
|
142
|
+
MultiLogger.info "Grabbed #{keyboard.device_name}"
|
143
|
+
rescue Errno::EBUSY
|
144
|
+
MultiLogger.error "Failed to grab #{keyboard.device_name}"
|
145
|
+
end
|
133
146
|
end
|
134
147
|
end
|
135
148
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fusuma-plugin-remap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- iberianpig
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-09-
|
11
|
+
date: 2023-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fusuma
|