fusuma-plugin-keypress 0.2.0 → 0.4.0

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: b88b42e81a482a2aed17b29813b519f561566943f36fb38f71b433e13fdd73eb
4
- data.tar.gz: c3700f1b2a0b3376a593c7862c9c04247b1a81811e23661984b50ab4be09de3b
3
+ metadata.gz: f33f3196c9ba712276a56e29db656f3724e1ab82db949bd2193d04103731ceab
4
+ data.tar.gz: c9808534898abd791e7aa5509c3d76cdd647e5ed0e23fd0afbbd6e3998c2c8a7
5
5
  SHA512:
6
- metadata.gz: 13b9a2be307562d6b76a3e157e1eb170168f4396a0078ec5b6eb11ce33c98f3b41790144f665fcf483a9f1e6926b860b744a204b335e2cb310d67f8ca82097d3
7
- data.tar.gz: 99b3c0d90b6baa117b77a9c188843dd8e0cbc387225681e20dfc7d5f881df0e5fb3134e795a1a7a156b41186ba9828f5a61e133ad55875391ab2e36ac3d69f14
6
+ metadata.gz: f450629cf53f1ed83abf32777575f56ef6f0856ee03dc0e0716aa27cf4723370524c8819cf2606d75de05188952701c92d604e85e19a8af25e51777edb400d35
7
+ data.tar.gz: cdf5aa65fabf23e5428822c4061b936fb718cbfcb77726ad4f4d99784d13ae535ea8cfa292ac54d037dc21e97c0d14488c6554d309fb900ba91909930b27cf9f
data/.gitignore CHANGED
@@ -10,3 +10,4 @@
10
10
 
11
11
  # rspec failure tracking
12
12
  .rspec_status
13
+ .ruby-version
data/.rubocop.yml CHANGED
@@ -1,3 +1,7 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.4
3
+ NewCops: enable
4
+
1
5
  Metrics/ModuleLength:
2
6
  Exclude:
3
7
  - "**/*_spec.rb"
data/CHANGELOG.md CHANGED
@@ -1,9 +1,37 @@
1
- # Change Log
1
+ # Changelog
2
+
3
+ ## [v0.4.0.pre](https://github.com/iberianpig/fusuma-plugin-keypress/tree/v0.4.0.pre) (2020-11-09)
4
+
5
+ [Full Changelog](https://github.com/iberianpig/fusuma-plugin-keypress/compare/v0.3.0...v0.4.0.pre)
6
+
7
+ ## [v0.3.0](https://github.com/iberianpig/fusuma-plugin-keypress/tree/v0.3.0) (2020-11-09)
8
+
9
+ [Full Changelog](https://github.com/iberianpig/fusuma-plugin-keypress/compare/v0.2.1...v0.3.0)
10
+
11
+ ## [v0.2.1](https://github.com/iberianpig/fusuma-plugin-keypress/tree/v0.2.1) (2020-04-15)
12
+
13
+ [Full Changelog](https://github.com/iberianpig/fusuma-plugin-keypress/compare/v0.2.0...v0.2.1)
14
+
15
+ **Closed issues:**
16
+
17
+ - Only 'LEFTMETA' keycode works on KDE Plasma [\#2](https://github.com/iberianpig/fusuma-plugin-keypress/issues/2)
18
+
19
+ ## [v0.2.0](https://github.com/iberianpig/fusuma-plugin-keypress/tree/v0.2.0) (2020-03-18)
20
+
21
+ [Full Changelog](https://github.com/iberianpig/fusuma-plugin-keypress/compare/v0.1.1...v0.2.0)
22
+
23
+ **Closed issues:**
24
+
25
+ - Trigger a command multiple times while keeping the key pressed [\#1](https://github.com/iberianpig/fusuma-plugin-keypress/issues/1)
2
26
 
3
27
  ## [v0.1.1](https://github.com/iberianpig/fusuma-plugin-keypress/tree/v0.1.1) (2020-02-18)
28
+
4
29
  [Full Changelog](https://github.com/iberianpig/fusuma-plugin-keypress/compare/v0.1.0...v0.1.1)
5
30
 
6
31
  ## [v0.1.0](https://github.com/iberianpig/fusuma-plugin-keypress/tree/v0.1.0) (2019-11-12)
7
32
 
33
+ [Full Changelog](https://github.com/iberianpig/fusuma-plugin-keypress/compare/fb8d8ccfc3828e487607706335f670ae5392f08d...v0.1.0)
34
+
35
+
8
36
 
9
- \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
37
+ \* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
data/Gemfile CHANGED
@@ -4,3 +4,15 @@ source 'https://rubygems.org'
4
4
 
5
5
  # Specify your gem's dependencies in fusuma-plugin-keypress.gemspec
6
6
  gemspec
7
+
8
+ gem 'bundler'
9
+ gem 'github_changelog_generator'
10
+ gem 'lefthook'
11
+ gem 'pry-byebug', '~> 3.4'
12
+ gem 'pry-doc'
13
+ gem 'pry-inline'
14
+ gem 'rake', '~> 13.0'
15
+ gem 'reek'
16
+ gem 'rspec', '~> 3.0'
17
+ gem 'rubocop'
18
+ gem 'yard'
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  Keyboard + Touchpad combination plugin for [Fusuma](https://github.com/iberianpig/fusuma)
5
5
 
6
6
  * Customize gestures with modifier keys
7
- * Supports multiple modifier key combinations
7
+ * Supports multiple modifier key combinations
8
8
 
9
9
  ## Installation
10
10
 
@@ -18,24 +18,25 @@ This plugin requires [Fusuma](https://github.com/iberianpig/fusuma#update) versi
18
18
  $ sudo gem install fusuma-plugin-keypress
19
19
  ```
20
20
 
21
- ### Add show-keycode option
21
+ ### Add show-keycodes option
22
22
 
23
23
  Open `~/.config/fusuma/config.yml` and add the following code at the bottom.
24
24
 
25
25
  ```yaml
26
- plugin:
26
+ plugin:
27
27
  inputs:
28
28
  libinput_command_input:
29
- show-keycode: true
29
+ show-keycodes: true
30
30
  ```
31
31
 
32
- **NOTE: fusuma can read your keyboard inputs if show-keycode option is true**
32
+ **NOTE: fusuma can read your keyboard inputs if show-keycodes option is true**
33
33
 
34
34
  ## Properties
35
35
 
36
36
  Add `keypress:` property in `~/.config/fusuma/config.yml`.
37
37
 
38
38
  Keys following are available for `keypress`.
39
+
39
40
  * `CAPSLOCK`
40
41
  * `LEFTALT`
41
42
  * `LEFTCTRL`
@@ -44,6 +45,7 @@ Keys following are available for `keypress`.
44
45
  * `RIGHTALT`
45
46
  * `RIGHTCTRL`
46
47
  * `RIGHTSHIFT`
48
+ * `RIGHTMETA`
47
49
 
48
50
  ## Example
49
51
 
@@ -68,15 +70,15 @@ swipe:
68
70
  LEFTMETA+LEFTALT:
69
71
  command: 'xdotool key --clearmodifiers XF86AudioLowerVolume'
70
72
 
71
- plugin:
73
+ plugin:
72
74
  inputs:
73
75
  libinput_command_input:
74
- show-keycode: true
76
+ show-keycodes: true
75
77
  ```
76
78
 
77
79
  * Swipe up/down with four fingers while keypress LEFTMETA key to change display brightnes .
78
80
  * Swipe up/down with four fingers while keypress LEFTMETA and LEFTALT keys to change audio volume.
79
- - If you want to combine a gesture with two keys, combine modifier keys with `+`
81
+ - If you want to combine a gesture with two keys, combine modifier keys with `+`
80
82
 
81
83
  ## Contributing
82
84
 
@@ -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.required_ruby_version = '>= 2.3' # https://packages.ubuntu.com/search?keywords=ruby&searchon=names&exact=1&suite=all&section=main
28
- spec.add_dependency 'fusuma', '~> 1.5'
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'
27
+ spec.required_ruby_version = '>= 2.4' # https://packages.ubuntu.com/search?keywords=ruby&searchon=names&exact=1&suite=all&section=main
28
+ spec.add_dependency 'fusuma', '~> 2.0.0'
40
29
  end
data/lefthook.yml ADDED
@@ -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
@@ -17,7 +17,10 @@ module Fusuma
17
17
  def clear_expired(*)
18
18
  return if @events.empty?
19
19
 
20
- @events.clear if released?
20
+ return unless released?
21
+
22
+ released_code = @events.last.record.code
23
+ @events.delete_if { |e| e.record.code == released_code }
21
24
  end
22
25
 
23
26
  def empty?
@@ -5,8 +5,14 @@ module Fusuma
5
5
  module Detectors
6
6
  # Detect KeypressEvent from KeypressBuffer
7
7
  class KeypressDetector < Detector
8
+ SOURCES = ['keypress'].freeze
8
9
  BUFFER_TYPE = 'keypress'
9
10
 
11
+ # Always watch buffers and detect them.
12
+ def watch?
13
+ true
14
+ end
15
+
10
16
  # @param buffers [Array<Event>]
11
17
  # @return [Event] if event is detected
12
18
  # @return [NilClass] if event is NOT detected
@@ -15,14 +21,13 @@ module Fusuma
15
21
 
16
22
  return if buffer.empty?
17
23
 
18
- records = buffer.events.map(&:record)
19
-
20
- index = create_index(records: records)
24
+ records = buffer.events.select { |e| e.record.status == 'pressed' }.map(&:record)
21
25
 
22
26
  index_record = Events::Records::IndexRecord.new(
23
- index: index,
27
+ index: create_index(records: records),
24
28
  position: :surfix
25
29
  )
30
+
26
31
  create_event(record: index_record)
27
32
  end
28
33
 
@@ -3,8 +3,8 @@
3
3
  # fusuma will `require fusuma-plugin-xxxx/plugin/xxxx.rb`
4
4
 
5
5
  require_relative './keypress/version'
6
- require_relative './events/records/keypress_record.rb'
7
- require_relative './filters/keypress_filter.rb'
8
- require_relative './parsers/keypress_parser.rb'
9
- require_relative './buffers/keypress_buffer.rb'
10
- require_relative './detectors/keypress_detector.rb'
6
+ require_relative './events/records/keypress_record'
7
+ require_relative './filters/keypress_filter'
8
+ require_relative './parsers/keypress_parser'
9
+ require_relative './buffers/keypress_buffer'
10
+ require_relative './detectors/keypress_detector'
@@ -3,7 +3,7 @@
3
3
  module Fusuma
4
4
  module Plugin
5
5
  module Keypress
6
- VERSION = '0.2.0'
6
+ VERSION = '0.4.0'
7
7
  end
8
8
  end
9
9
  end
@@ -7,6 +7,18 @@ module Fusuma
7
7
  class KeypressParser < Parser
8
8
  DEFAULT_SOURCE = 'libinput_command_input'
9
9
 
10
+ AVAILABLE_KEYS = %w[
11
+ CAPSLOCK
12
+ LEFTALT
13
+ LEFTCTRL
14
+ LEFTMETA
15
+ LEFTSHIFT
16
+ RIGHTALT
17
+ RIGHTCTRL
18
+ RIGHTSHIFT
19
+ RIGHTMETA
20
+ ].freeze
21
+
10
22
  # @param record [String]
11
23
  # @return [Records::Gesture, nil]
12
24
  def parse_record(record)
@@ -27,6 +39,8 @@ module Fusuma
27
39
  code = matched[2] # LEFTSHIFT
28
40
  status = matched[3] # pressed
29
41
 
42
+ return unless AVAILABLE_KEYS.include?(code)
43
+
30
44
  Events::Records::KeypressRecord.new(status: status, code: code)
31
45
  end
32
46
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fusuma-plugin-keypress
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.0
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-03-18 00:00:00.000000000 Z
11
+ date: 2021-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fusuma
@@ -16,154 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.5'
19
+ version: 2.0.0
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.5'
27
- - !ruby/object:Gem::Dependency
28
- name: bundler
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: github_changelog_generator
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '1.14'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '1.14'
55
- - !ruby/object:Gem::Dependency
56
- name: pry-byebug
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '3.4'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '3.4'
69
- - !ruby/object:Gem::Dependency
70
- name: pry-doc
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: pry-inline
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: rake
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '13.0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '13.0'
111
- - !ruby/object:Gem::Dependency
112
- name: reek
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: rspec
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '3.0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '3.0'
139
- - !ruby/object:Gem::Dependency
140
- name: rubocop
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- version: '0'
153
- - !ruby/object:Gem::Dependency
154
- name: yard
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'
26
+ version: 2.0.0
167
27
  description: fusuma-plugin-keypress is Fusuma plugin for keypress combination.
168
28
  email:
169
29
  - yhkyky@gmail.com
@@ -183,6 +43,7 @@ files:
183
43
  - bin/console
184
44
  - bin/setup
185
45
  - fusuma-plugin-keypress.gemspec
46
+ - lefthook.yml
186
47
  - lib/fusuma/plugin/buffers/keypress_buffer.rb
187
48
  - lib/fusuma/plugin/detectors/keypress_detector.rb
188
49
  - lib/fusuma/plugin/events/records/keypress_record.rb
@@ -194,7 +55,7 @@ homepage: https://github.com/iberianpig/fusuma-plugin-keypress
194
55
  licenses:
195
56
  - MIT
196
57
  metadata: {}
197
- post_install_message:
58
+ post_install_message:
198
59
  rdoc_options: []
199
60
  require_paths:
200
61
  - lib
@@ -202,15 +63,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
202
63
  requirements:
203
64
  - - ">="
204
65
  - !ruby/object:Gem::Version
205
- version: '2.3'
66
+ version: '2.4'
206
67
  required_rubygems_version: !ruby/object:Gem::Requirement
207
68
  requirements:
208
69
  - - ">="
209
70
  - !ruby/object:Gem::Version
210
71
  version: '0'
211
72
  requirements: []
212
- rubygems_version: 3.0.6
213
- signing_key:
73
+ rubygems_version: 3.1.4
74
+ signing_key:
214
75
  specification_version: 4
215
76
  summary: Keypress plugin for Fusuma
216
77
  test_files: []