fusuma-plugin-remap 0.2.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 +4 -4
- data/README.md +0 -20
- data/fusuma-plugin-remap.gemspec +5 -2
- data/lib/fusuma/plugin/inputs/remap_keyboard_input.rb +5 -9
- data/lib/fusuma/plugin/inputs/remap_keyboard_input.yml +10 -0
- data/lib/fusuma/plugin/remap/remapper.rb +19 -6
- data/lib/fusuma/plugin/remap/version.rb +1 -1
- metadata +9 -8
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
|
data/README.md
CHANGED
|
@@ -37,26 +37,6 @@ $ sudo udevadm control --reload-rules && sudo udevadm trigger
|
|
|
37
37
|
$ sudo gem install fusuma-plugin-remap
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
### Set plugin properties
|
|
41
|
-
|
|
42
|
-
Open `~/.config/fusuma/config.yml` and add the following code at the bottom in primary context(first section separated by `---`).
|
|
43
|
-
|
|
44
|
-
```yaml
|
|
45
|
-
plugin:
|
|
46
|
-
inputs:
|
|
47
|
-
remap_keyboard_input:
|
|
48
|
-
keyboard_name_patterns: xremap # (optional) specifiy other source keyboard name
|
|
49
|
-
buffers:
|
|
50
|
-
keypress_buffer:
|
|
51
|
-
source: remap_keyboard_input # (required) use buffer of fusuma-plugin-keypress
|
|
52
|
-
executors:
|
|
53
|
-
sendkey_executor:
|
|
54
|
-
device_name: fusuma_virtual_keyboard # (optional) when you use fusuma-plugin-sendkey
|
|
55
|
-
|
|
56
|
-
---
|
|
57
|
-
|
|
58
|
-
```
|
|
59
|
-
|
|
60
40
|
## Properties
|
|
61
41
|
|
|
62
42
|
### Remap
|
data/fusuma-plugin-remap.gemspec
CHANGED
|
@@ -20,8 +20,11 @@ Gem::Specification.new do |spec|
|
|
|
20
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
21
21
|
spec.require_paths = ["lib"]
|
|
22
22
|
|
|
23
|
-
spec.required_ruby_version = ">= 2.
|
|
24
|
-
|
|
23
|
+
spec.required_ruby_version = ">= 2.7"
|
|
24
|
+
# https://packages.ubuntu.com/search?keywords=ruby&searchon=names&exact=1&suite=all§ion=main
|
|
25
|
+
# support focal (20.04LTS) 2.7
|
|
26
|
+
|
|
27
|
+
spec.add_dependency "fusuma", ">= 3.1"
|
|
25
28
|
spec.add_dependency "fusuma-plugin-keypress", "~> 0.5"
|
|
26
29
|
spec.add_dependency "msgpack"
|
|
27
30
|
spec.add_dependency "revdev"
|
|
@@ -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,29 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fusuma-plugin-remap
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
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-
|
|
11
|
+
date: 2023-09-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: fusuma
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- - "
|
|
17
|
+
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '3.
|
|
19
|
+
version: '3.1'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- - "
|
|
24
|
+
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '3.
|
|
26
|
+
version: '3.1'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: fusuma-plugin-keypress
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -100,6 +100,7 @@ files:
|
|
|
100
100
|
- exe/fusuma-remap
|
|
101
101
|
- fusuma-plugin-remap.gemspec
|
|
102
102
|
- lib/fusuma/plugin/inputs/remap_keyboard_input.rb
|
|
103
|
+
- lib/fusuma/plugin/inputs/remap_keyboard_input.yml
|
|
103
104
|
- lib/fusuma/plugin/remap.rb
|
|
104
105
|
- lib/fusuma/plugin/remap/layer_manager.rb
|
|
105
106
|
- lib/fusuma/plugin/remap/remapper.rb
|
|
@@ -118,14 +119,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
118
119
|
requirements:
|
|
119
120
|
- - ">="
|
|
120
121
|
- !ruby/object:Gem::Version
|
|
121
|
-
version: 2.
|
|
122
|
+
version: '2.7'
|
|
122
123
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
123
124
|
requirements:
|
|
124
125
|
- - ">="
|
|
125
126
|
- !ruby/object:Gem::Version
|
|
126
127
|
version: '0'
|
|
127
128
|
requirements: []
|
|
128
|
-
rubygems_version: 3.
|
|
129
|
+
rubygems_version: 3.4.10
|
|
129
130
|
signing_key:
|
|
130
131
|
specification_version: 4
|
|
131
132
|
summary: A Fusuma plugin for remapping keyboard events into virtual input devices.
|