fusuma-plugin-sendkey 0.5.1 → 0.6.0.pre

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: 5594a966bf8ab22cd79d90873cf558ecf313b6d3d4ae167a4d060cee2bd76ac4
4
- data.tar.gz: c14f1fa0b6ec8237ce5cc603d8996a8d53a77e0122382c5c4d9b9ff8e5ba1b5b
3
+ metadata.gz: 5f604b8593c06c599afd8bd3c14344fcb503e2ffacc48025550c78daa8b970ae
4
+ data.tar.gz: 80f5ed997dac202b7f86f2f518538cf6181e54ec84bb52d47e92412b77c1645f
5
5
  SHA512:
6
- metadata.gz: fc0d0de02efb73f7a2d6da35672d4087971af78a2b5711be6bc05dad1e7efa0a04ccca59eb53d41538222478306413f0897eade0d6725f402f9300803ca01add
7
- data.tar.gz: 571f948d4ab8ea8cea6b134c013ac907d19f91f57eda9ee94bdadc2d4fbff3b44123beef3690cdac6851095aaecbc898cb3c20283458bb4ccfeec571ea9cba92
6
+ metadata.gz: ff64de3322846b3df4e476767a6ea78d406a773295d3c3c3b2997a13797468c3fc2cef4d46c82c6db325ba7513710bf797088c7199fcd4e26479cc35714071d7
7
+ data.tar.gz: 11cbe3e6612ae1e4f2d9f466c0a26283d2a144a1f369c19d9eb0414095e9508ad329278788ef6f58efeba8f8d47ad106ce113d1d2feba68edee49ef032d36287
@@ -1,3 +1,11 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.4
3
+ NewCops: enable
4
+ Layout/BeginEndAlignment:
5
+ Enabled: true
6
+ Layout/EmptyLinesAroundAttributeAccessor:
7
+ Enabled: true
8
+
1
9
  Metrics/ModuleLength:
2
10
  Exclude:
3
11
  - "**/*_spec.rb"
@@ -7,9 +15,10 @@ Metrics/BlockLength:
7
15
  - "**/*_spec.rb"
8
16
  - "fusuma-plugin-*.gemspec"
9
17
 
10
- Metrics/LineLength:
18
+ Layout/LineLength:
11
19
  Max: 100
12
20
  Exclude:
21
+ - "**/*_spec.rb"
13
22
  - "fusuma-plugin-*.gemspec"
14
23
 
15
24
  Style/HashEachMethods:
data/Gemfile CHANGED
@@ -2,3 +2,15 @@ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in fusuma-plugin-sendkey.gemspec
4
4
  gemspec
5
+
6
+ gem 'bundler'
7
+ gem 'github_changelog_generator', '~> 1.14'
8
+ gem 'pry-byebug', '~> 3.4'
9
+ gem 'pry-doc'
10
+ gem 'pry-inline'
11
+ gem 'rake', '~> 13.0'
12
+ gem 'reek'
13
+ gem 'rspec', '~> 3.0'
14
+ gem 'rubocop'
15
+ gem 'yard'
16
+ gem 'lefthook'
data/README.md CHANGED
@@ -13,7 +13,7 @@ Run the following code in your terminal.
13
13
 
14
14
  **NOTE: If you have installed ruby by apt, you must install ruby-dev.**
15
15
  ```sh
16
- $ sudo apt-get install libevdev-dev ruby-dev
16
+ $ sudo apt-get install libevdev-dev ruby-dev build-essential
17
17
  ```
18
18
 
19
19
  ### Install fusuma-plugin-sendkey
@@ -2,6 +2,7 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require 'optparse'
5
+ require 'fusuma/plugin/inputs/libinput_command_input.rb'
5
6
  require_relative '../lib/fusuma/plugin/sendkey/keyboard.rb'
6
7
  require_relative '../lib/fusuma/plugin/sendkey/version.rb'
7
8
 
@@ -24,17 +24,6 @@ Gem::Specification.new do |spec|
24
24
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
25
  spec.require_paths = ['lib']
26
26
 
27
- spec.add_dependency 'fusuma', '~> 1.7'
27
+ spec.add_dependency 'fusuma', '~> 2.0.0.pre'
28
28
  spec.add_dependency 'revdev'
29
-
30
- spec.add_development_dependency 'bundler'
31
- spec.add_development_dependency 'github_changelog_generator', '~> 1.14'
32
- spec.add_development_dependency 'pry-byebug', '~> 3.4'
33
- spec.add_development_dependency 'pry-doc'
34
- spec.add_development_dependency 'pry-inline'
35
- spec.add_development_dependency 'rake', '~> 13.0'
36
- spec.add_development_dependency 'reek'
37
- spec.add_development_dependency 'rspec', '~> 3.0'
38
- spec.add_development_dependency 'rubocop'
39
- spec.add_development_dependency 'yard'
40
29
  end
@@ -0,0 +1,29 @@
1
+ # EXAMPLE USAGE
2
+ # Refer for explanation to following link:
3
+ # https://github.com/Arkweid/lefthook/blob/master/docs/full_guide.md
4
+
5
+ # pre-push:
6
+ # commands:
7
+ # packages-audit:
8
+ # tags: frontend security
9
+ # run: yarn audit
10
+ # gems-audit:
11
+ # tags: backend security
12
+ # run: bundle audit
13
+
14
+ pre-commit:
15
+ parallel: true
16
+ commands:
17
+ # eslint:
18
+ # glob: "*.{js,ts}"
19
+ # run: yarn eslint {staged_files}
20
+ rubocop:
21
+ tags: backend style
22
+ glob: "*.rb"
23
+ # exclude: "application.rb|routes.rb"
24
+ run: bundle exec rubocop --force-exclusion {staged_files}
25
+ # scripts:
26
+ # "hello.js":
27
+ # runner: node
28
+ # "any.go":
29
+ # runner: go run
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../sendkey/keyboard.rb'
3
+ require_relative '../sendkey/keyboard'
4
4
 
5
5
  module Fusuma
6
6
  module Plugin
@@ -13,19 +13,29 @@ module Fusuma
13
13
  }
14
14
  end
15
15
 
16
- # execute sendkey command
16
+ # fork and execute sendkey command
17
17
  # @param event [Event]
18
18
  # @return [nil]
19
19
  def execute(event)
20
20
  MultiLogger.info(sendkey: search_param(event))
21
21
  pid = fork do
22
22
  Process.daemon(true)
23
- keyboard.type(param: search_param(event))
23
+ _execute(event)
24
24
  end
25
25
 
26
26
  Process.detach(pid)
27
27
  end
28
28
 
29
+ # execute sendkey command
30
+ # @param event [Event]
31
+ # @return [nil]
32
+ def _execute(event)
33
+ keyboard.type(
34
+ param: search_param(event),
35
+ keep: search_keypress(event)
36
+ )
37
+ end
38
+
29
39
  # check executable
30
40
  # @param event [Event]
31
41
  # @return [TrueClass, FalseClass]
@@ -39,15 +49,24 @@ module Fusuma
39
49
 
40
50
  def keyboard
41
51
  @keyboard ||= begin
42
- name_pattren = config_params(:device_name)
43
- Sendkey::Keyboard.new(name_pattern: name_pattren)
44
- end
52
+ name_pattren = config_params(:device_name)
53
+ Sendkey::Keyboard.new(name_pattern: name_pattren)
54
+ end
45
55
  end
46
56
 
47
57
  def search_param(event)
48
58
  index = Config::Index.new([*event.record.index.keys, :sendkey])
49
59
  Config.search(index)
50
60
  end
61
+
62
+ # @param event [Event]
63
+ # @return [String]
64
+ def search_keypress(event)
65
+ keys = event.record.index.keys
66
+ keypress_index = keys.find_index { |k| k.symbol == :keypress }
67
+ code = keypress_index && keys[keypress_index + 1].symbol
68
+ code.to_s
69
+ end
51
70
  end
52
71
  end
53
72
  end
@@ -3,7 +3,7 @@
3
3
  require 'revdev'
4
4
  require 'fusuma/device'
5
5
 
6
- require_relative './device.rb'
6
+ require_relative './device'
7
7
 
8
8
  module Fusuma
9
9
  module Plugin
@@ -25,12 +25,14 @@ module Fusuma
25
25
  attr_reader :device
26
26
 
27
27
  # @param param [String]
28
- def type(param:)
28
+ # @param keep [String]
29
+ def type(param:, keep: '')
29
30
  return unless param.is_a?(String)
30
31
 
31
- keycodes = split_param(param)
32
+ keep_keycodes = split_param(keep)
33
+ keycodes = split_param(param) - keep_keycodes
32
34
 
33
- clear_modifiers
35
+ clear_modifiers(keep_keycodes)
34
36
  keycodes.each { |keycode| key_event(keycode: keycode, press: true) }
35
37
  key_sync(press: true)
36
38
  keycodes.reverse.map { |keycode| key_event(keycode: keycode, press: false) }
@@ -99,10 +101,11 @@ module Fusuma
99
101
  Object.const_get "LinuxInput::#{keycode}"
100
102
  end
101
103
 
102
- def clear_modifiers
104
+ def clear_modifiers(keycodes)
103
105
  modifiers = %w[ CAPSLOCK LEFTALT LEFTCTRL LEFTMETA
104
106
  LEFTSHIFT RIGHTALT RIGHTCTRL RIGHTSHIFT ]
105
- modifiers.each { |code| key_event(keycode: key_prefix(code), press: false) }
107
+ .map { |code| key_prefix(code) }
108
+ (modifiers - keycodes).each { |code| key_event(keycode: code, press: false) }
106
109
  end
107
110
 
108
111
  private
@@ -3,7 +3,7 @@
3
3
  module Fusuma
4
4
  module Plugin
5
5
  module Sendkey
6
- VERSION = '0.5.1'
6
+ VERSION = '0.6.0.pre'
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-sendkey
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - iberianpig
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-07-14 00:00:00.000000000 Z
11
+ date: 2020-11-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fusuma
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.7'
19
+ version: 2.0.0.pre
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: '1.7'
26
+ version: 2.0.0.pre
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: revdev
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,146 +38,6 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: bundler
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: github_changelog_generator
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '1.14'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '1.14'
69
- - !ruby/object:Gem::Dependency
70
- name: pry-byebug
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '3.4'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '3.4'
83
- - !ruby/object:Gem::Dependency
84
- name: pry-doc
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: pry-inline
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: rake
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '13.0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '13.0'
125
- - !ruby/object:Gem::Dependency
126
- name: reek
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
- - !ruby/object:Gem::Dependency
140
- name: rspec
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: '3.0'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: '3.0'
153
- - !ruby/object:Gem::Dependency
154
- name: rubocop
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - ">="
158
- - !ruby/object:Gem::Version
159
- version: '0'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - ">="
165
- - !ruby/object:Gem::Version
166
- version: '0'
167
- - !ruby/object:Gem::Dependency
168
- name: yard
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - ">="
172
- - !ruby/object:Gem::Version
173
- version: '0'
174
- type: :development
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - ">="
179
- - !ruby/object:Gem::Version
180
- version: '0'
181
41
  description: Fusuma::Plugin::Sendkey emulate keyboard events with evdev
182
42
  email:
183
43
  - yhkyky@gmail.com
@@ -200,6 +60,7 @@ files:
200
60
  - bin/setup
201
61
  - exe/fusuma-sendkey
202
62
  - fusuma-plugin-sendkey.gemspec
63
+ - lefthook.yml
203
64
  - lib/fusuma/plugin/executors/sendkey_executor.rb
204
65
  - lib/fusuma/plugin/sendkey.rb
205
66
  - lib/fusuma/plugin/sendkey/device.rb
@@ -209,7 +70,7 @@ homepage: https://github.com/iberianpig/fusuma-plugin-sendkey
209
70
  licenses:
210
71
  - MIT
211
72
  metadata: {}
212
- post_install_message:
73
+ post_install_message:
213
74
  rdoc_options: []
214
75
  require_paths:
215
76
  - lib
@@ -220,12 +81,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
220
81
  version: '0'
221
82
  required_rubygems_version: !ruby/object:Gem::Requirement
222
83
  requirements:
223
- - - ">="
84
+ - - ">"
224
85
  - !ruby/object:Gem::Version
225
- version: '0'
86
+ version: 1.3.1
226
87
  requirements: []
227
- rubygems_version: 3.0.6
228
- signing_key:
88
+ rubygems_version: 3.1.4
89
+ signing_key:
229
90
  specification_version: 4
230
91
  summary: Fusuma plugin to send keyboard events
231
92
  test_files: []