#!/usr/bin/env ruby # frozen_string_literal: true require 'optparse' require 'fusuma/config' require 'fusuma/plugin/inputs/libinput_command_input.rb' require_relative '../lib/fusuma/plugin/sendkey/keyboard.rb' require_relative '../lib/fusuma/plugin/sendkey/version.rb' option = {} opt = OptionParser.new opt.on('-l', '--list-keycodes', 'List available keycodes') do |v| option[:list] = v end opt.on('--version', 'Show version') do |v| option[:version] = v end opt.parse!(ARGV) device_name = Fusuma::Config.instance.fetch_config_params( :device_name, Fusuma::Config::Index.new([:plugin, :executors, :sendkey_executor]) ).fetch(:device_name) if option[:list] puts Fusuma::Plugin::Sendkey::Keyboard.new(name_pattern: device_name).search_codes return end if option[:version] puts Fusuma::Plugin::Sendkey::VERSION return end args = ARGV.first if args.nil? warn 'fusuma-sendkey require 1 arugument' warn 'e.g. fusuma-sendkey LEFTALT+LEFT' warn 'e.g. fusuma-sendkey [A, B, C]' exit 1 end # remove [ and ] from args params = args.delete('[]').split(',').map(&:strip) keyboard = Fusuma::Plugin::Sendkey::Keyboard.new(name_pattern: device_name) return unless keyboard.valid?(params) if params.size == 1 keyboard.type(param: params.first) else keyboard.types(params) end