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: 489bf6bf8a1b161db98aad213b9a3444c3374ecda95c7790772a9c1d49d987e9
4
- data.tar.gz: b74218e6acc04e51a4dd168995925ef2492093eaefff172543eee3a72051c311
3
+ metadata.gz: fb42159c757f56d2da9af424bfc088719bc22c965ad72bed52bc9bd81ad86e9f
4
+ data.tar.gz: cdddfbf418ecb85c1ad0cd3991d04ca5f022833ce4b344b1e9e37594c6c82ae9
5
5
  SHA512:
6
- metadata.gz: 1295235a7bac8f4e18d43c1659b16621d3db8f06099d4b02d98506b16ee6d0f185c90027e598efab180a4f722a91d583ab16d978590787a091f97ee3e038d02c
7
- data.tar.gz: 17796ef9b95b12b134bcda2d92c3780fdf9da1f491a984dcc27e75e09d13f8e822d07ebb2a93a3e994bee7879d45b1c6cab7141a4643e782dd6bf47edf8222fa
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 do |d|
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 "./layer_manager"
4
+ require_relative "layer_manager"
5
5
 
6
- require_relative "./ruinput_device_patched"
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
- # When Set.delete? fails, it means that the key was pressed before remapping started and was released.
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
- # @param [Revdev::InputEvent] event
98
- # @return [void]
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) && keyboard.grab
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
 
@@ -3,7 +3,7 @@
3
3
  module Fusuma
4
4
  module Plugin
5
5
  module Remap
6
- VERSION = "0.3.0"
6
+ VERSION = "0.3.1"
7
7
  end
8
8
  end
9
9
  end
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.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-09-03 00:00:00.000000000 Z
11
+ date: 2023-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fusuma