lib/fusuma/plugin/executors/sendkey_executor.rb in fusuma-plugin-sendkey-0.6.4 vs lib/fusuma/plugin/executors/sendkey_executor.rb in fusuma-plugin-sendkey-0.7.1
- old
+ new
@@ -1,8 +1,8 @@
# frozen_string_literal: true
-require_relative '../sendkey/keyboard'
+require_relative "../sendkey/keyboard"
module Fusuma
module Plugin
module Executors
# Control Window or Workspaces by executing wctrl
@@ -32,18 +32,21 @@
# execute sendkey command
# @param event [Event]
# @return [nil]
def _execute(event)
- keyboard.type(param: search_param(event))
+ keyboard.type(
+ param: search_param(event),
+ keep: search_keypress(event)
+ )
end
# check executable
# @param event [Event]
# @return [TrueClass, FalseClass]
def executable?(event)
- event.tag.end_with?('_detector') &&
+ event.tag.end_with?("_detector") &&
event.record.type == :index &&
keyboard.valid?(param: search_param(event))
end
private
@@ -56,9 +59,18 @@
end
def search_param(event)
index = Config::Index.new([*event.record.index.keys, :sendkey])
Config.search(index)
+ end
+
+ # @param event [Event]
+ # @return [String]
+ def search_keypress(event)
+ keys = event.record.index.keys
+ keypress_index = keys.find_index { |k| k.symbol == :keypress }
+ code = keypress_index && keys[keypress_index + 1].symbol
+ code.to_s
end
end
end
end
end