fusuma-plugin-remap 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
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