hidg0 0.2.3 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/hidg0.rb +47 -22
- data.tar.gz.sig +0 -0
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed5e0205a0076670f8d7daa2a0b3d2f435c201b39182761380863f1bc81a4751
|
4
|
+
data.tar.gz: d035c0286f3214cdf202245b2581e0de020079564b12ab0356dbee00a99896d4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a0b5ebbfbedfbf3ef8b3a1d036afa193ce715de54b0f1362e06dd6bf4a20305470a340e15e0cff59968bc50ce0c0e722600c1766c7ae62667208fe5e9abce7ec
|
7
|
+
data.tar.gz: 10ee00392668a9d176ffab716894b5522a4ddb8fad5e2f42d956716743ceb7d7f89336d87b0cf5c35c47e8bd5f282dc5505885e37b6e9ab73b8fc53b541a1c7a
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/hidg0.rb
CHANGED
@@ -52,7 +52,8 @@ h = %i(right_gui rightalt rightshift rightctrl left_gui left_alt leftshift leftc
|
|
52
52
|
reverse.map.with_index {|x,i| [x, (2 ** i)]}.to_h
|
53
53
|
|
54
54
|
MODIFIERS = h.merge({shift: h[:leftshift], alt: h[:left_alt],
|
55
|
-
ctrl: h[:leftctrl], control: h[:leftctrl]
|
55
|
+
ctrl: h[:leftctrl], control: h[:leftctrl],
|
56
|
+
windows_key: h[:right_gui]})
|
56
57
|
|
57
58
|
=begin
|
58
59
|
byte1 byte2 byte3 bytes4...bytes8
|
@@ -102,6 +103,7 @@ KEYS = {
|
|
102
103
|
:'0' => 39, # Keyboard 0 and )
|
103
104
|
enter: 40, # Keyboard Return (ENTER)
|
104
105
|
:"\n" => 40,
|
106
|
+
cr: 40,
|
105
107
|
esc: 41, # Keyboard ESCAPE
|
106
108
|
backspace: 42, # Keyboard DELETE (Backspace)
|
107
109
|
tab: 43, # Keyboard Tab
|
@@ -297,7 +299,8 @@ KEYS = {
|
|
297
299
|
left_arrow: :kp4,
|
298
300
|
right_arrow: :kp6,
|
299
301
|
up_arrow: :kp8,
|
300
|
-
page_up: :kp9
|
302
|
+
page_up: :kp9,
|
303
|
+
windows_key: 0
|
301
304
|
}
|
302
305
|
|
303
306
|
class HidG0
|
@@ -310,7 +313,7 @@ class HidG0
|
|
310
313
|
|
311
314
|
def keypress(key, duration: 0)
|
312
315
|
|
313
|
-
keydown(key); sleep(duration); release_keys()
|
316
|
+
keydown(key.strip); sleep(duration); release_keys()
|
314
317
|
|
315
318
|
end
|
316
319
|
|
@@ -319,10 +322,12 @@ class HidG0
|
|
319
322
|
# current keymapping is for en-gb
|
320
323
|
|
321
324
|
# £ is "\u{00A3}" in unicode
|
322
|
-
[["\
|
325
|
+
[["\u{00A3}","{shift+3}"],['"','{shift+2}']]\
|
323
326
|
.map {|x,y| s.gsub!(x,y) }
|
324
327
|
|
325
|
-
s.scan(/\{[^\}]+\}|./).each do |x|
|
328
|
+
s.gsub(/\s*(?=\{)|(?<=\})\s*/,'').scan(/\{[^\}]+\}|./).each do |x|
|
329
|
+
|
330
|
+
puts ('x: ' + x.inspect).debug if @debug
|
326
331
|
|
327
332
|
if x.length == 1 and x[0] != '{' then
|
328
333
|
|
@@ -330,28 +335,46 @@ class HidG0
|
|
330
335
|
|
331
336
|
else
|
332
337
|
|
333
|
-
|
334
|
-
|
338
|
+
# split by semicolon
|
339
|
+
|
340
|
+
x[1..-2].split(/\s*;\s*/).each do |instruction|
|
335
341
|
|
336
|
-
|
342
|
+
keys = instruction.split('+')
|
343
|
+
|
344
|
+
|
345
|
+
puts ('keys: ' + keys.inspect).debug if @debug
|
337
346
|
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
modifier = keys.map {|x| MODIFIERS[x.to_sym]}.inject(:+)
|
347
|
+
if keys.length > 1 then
|
348
|
+
|
349
|
+
# e.g. keys #=> ['ctrl', 's']
|
342
350
|
|
343
|
-
|
344
|
-
|
345
|
-
|
351
|
+
key = KEYS[keys.pop.to_sym]
|
352
|
+
modifier = keys.map {|x| MODIFIERS[x.to_sym]}.inject(:+)
|
353
|
+
|
354
|
+
if @debug then
|
355
|
+
puts ('key: ' + key.inspect).debug
|
356
|
+
puts ('modifier: ' + modifier.inspect).debug
|
357
|
+
end
|
358
|
+
|
359
|
+
write_report(modifier.chr + NULL_CHAR + key.chr + NULL_CHAR*5)
|
360
|
+
release_keys()
|
361
|
+
|
362
|
+
else
|
363
|
+
|
364
|
+
key = keys.first
|
365
|
+
|
366
|
+
if key =~ /sleep/ then
|
367
|
+
|
368
|
+
seconds = key[/(?<=sleep )\d+(?:\.\d+)/]
|
369
|
+
puts ('sleeping for ' + seconds + 'seconds').info if @debug
|
370
|
+
sleep seconds.to_f
|
371
|
+
|
372
|
+
else
|
373
|
+
|
374
|
+
keypress key, duration: @duration
|
375
|
+
end
|
346
376
|
end
|
347
|
-
|
348
|
-
write_report(modifier.chr + NULL_CHAR + key.chr + NULL_CHAR*5)
|
349
|
-
release_keys()
|
350
|
-
|
351
|
-
else
|
352
|
-
keypress keys.first, duration: @duration
|
353
377
|
end
|
354
|
-
|
355
378
|
end
|
356
379
|
end
|
357
380
|
|
@@ -363,6 +386,8 @@ class HidG0
|
|
363
386
|
|
364
387
|
puts 'keydown | key: ' + key.inspect if @debug
|
365
388
|
|
389
|
+
return write_report(8.chr + NULL_CHAR*7) if key.to_s =~ /^windows_key$/
|
390
|
+
|
366
391
|
if KEYS[key.to_sym].is_a? Integer then
|
367
392
|
|
368
393
|
write_report(NULL_CHAR*2 + KEYS[key.to_sym].chr + NULL_CHAR*5)
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hidg0
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
PwTg5+TqjQvWRfpf4tDWra3/fS6sXSuA4aoh28J3YpuAS2upGYuCk61X4iEDYerh
|
36
36
|
INwakAqcXQ4/4DC0SoRunSvJ
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date: 2019-03-
|
38
|
+
date: 2019-03-30 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: c32
|
metadata.gz.sig
CHANGED
Binary file
|