hidg0 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/hidg0.rb +211 -0
- metadata +71 -0
- metadata.gz.sig +0 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 68962cffd1ff46b36521423ed4632ead086fc8f6bfdfecdece33783ed79d9a4d
|
4
|
+
data.tar.gz: 5814ab247ff6cb222c62d6fa4a48b6c6c6d12696422e7024d0e616e31387989b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e85e81a2cf5b98c1098d679b02d89bc24d2c64b76751cf514ab54d6fe2d00985888e7af3abf7311a153b31efe8be2c04b587f8c2238909771c4fa53457497781
|
7
|
+
data.tar.gz: f67fd1abb38793a45131237198f99354c723d08643b1e91172b9c772c92b6cd728ffc32964539703e7fb4fd13f0d41bc18adfb659d7a4994cebad1fed3c40319
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data.tar.gz.sig
ADDED
Binary file
|
data/lib/hidg0.rb
ADDED
@@ -0,0 +1,211 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# file: hidg0.rb
|
4
|
+
|
5
|
+
# description: Used with a Raspberry PI Zero plugged into a computer to act as USB Keyboard (HID)
|
6
|
+
|
7
|
+
# This gem was made possible thanks to the code from [Turn Your Raspberry Pi Zero into a USB Keyboard (HID)](https://randomnerdtutorials.com/raspberry-pi-zero-usb-keyboard-hid/)
|
8
|
+
|
9
|
+
# The following USB HID keyboard IDs were obtained from https://gist.github.com/MightyPork/6da26e382a7ad91b5496ee55fdc73db2#file-usb_hid_keys-h-L36-L76
|
10
|
+
|
11
|
+
|
12
|
+
NULL_CHAR = 0.chr
|
13
|
+
|
14
|
+
KEYS = {
|
15
|
+
none: 0, # No key pressed
|
16
|
+
err_ovf: 1, # Keyboard Error Roll Over - used for all slots if too many keys are pressed ("Phantom key")
|
17
|
+
a: 4, # Keyboard a and A
|
18
|
+
b: 5, # Keyboard b and B
|
19
|
+
c: 6, # Keyboard c and C
|
20
|
+
d: 7, # Keyboard d and D
|
21
|
+
e: 8, # Keyboard e and E
|
22
|
+
f: 9, # Keyboard f and F
|
23
|
+
g: 10, # Keyboard g and G
|
24
|
+
h: 11, # Keyboard h and H
|
25
|
+
i: 12, # Keyboard i and I
|
26
|
+
j: 13, # Keyboard j and J
|
27
|
+
k: 14, # Keyboard k and K
|
28
|
+
l: 15, # Keyboard l and L
|
29
|
+
m: 16, # Keyboard m and M
|
30
|
+
n: 17, # Keyboard n and N
|
31
|
+
o: 18, # Keyboard o and O
|
32
|
+
p: 19, # Keyboard p and P
|
33
|
+
q: 20, # Keyboard q and Q
|
34
|
+
r: 21, # Keyboard r and R
|
35
|
+
s: 22, # Keyboard s and S
|
36
|
+
t: 23, # Keyboard t and T
|
37
|
+
u: 24, # Keyboard u and U
|
38
|
+
v: 25, # Keyboard v and V
|
39
|
+
w: 26, # Keyboard w and W
|
40
|
+
x: 27, # Keyboard x and X
|
41
|
+
y: 28, # Keyboard y and Y
|
42
|
+
z: 29, # Keyboard z and Z
|
43
|
+
:'1' => 30, # Keyboard 1 and !
|
44
|
+
:'2' => 31, # Keyboard 2 and @
|
45
|
+
:'3' => 32, # Keyboard 3 and #
|
46
|
+
:'4' => 33, # Keyboard 4 and $
|
47
|
+
:'5' => 34, # Keyboard 5 and %
|
48
|
+
:'6' => 35, # Keyboard 6 and ^
|
49
|
+
:'7' => 36, # Keyboard 7 and &
|
50
|
+
:'8' => 37, # Keyboard 8 and *
|
51
|
+
:'9' => 38, # Keyboard 9 and (
|
52
|
+
:'0' => 39, # Keyboard 0 and )
|
53
|
+
enter: 40, # Keyboard Return (ENTER)
|
54
|
+
esc: 41, # Keyboard ESCAPE
|
55
|
+
backspace: 42, # Keyboard DELETE (Backspace)
|
56
|
+
tab: 43, # Keyboard Tab
|
57
|
+
space: 44, # Keyboard Spacebar
|
58
|
+
minus: 45, # Keyboard - and _
|
59
|
+
equal: 46, # Keyboard = and +
|
60
|
+
leftbrace: 47, # Keyboard [ and {
|
61
|
+
rightbrace: 48, # Keyboard ] and }
|
62
|
+
backslash: 49, # Keyboard and |
|
63
|
+
hashtilde: 50, # Keyboard Non-US # and ~
|
64
|
+
semicolon: 51, # Keyboard ; and :
|
65
|
+
apostrophe: 52, # Keyboard ' and "
|
66
|
+
grave: 53, # Keyboard ` and ~
|
67
|
+
comma: 54, # Keyboard , and <
|
68
|
+
dot: 55, # Keyboard . and >
|
69
|
+
slash: 56, # Keyboard / and ?
|
70
|
+
capslock: 57, # Keyboard Caps Lock
|
71
|
+
f1: 58, # Keyboard F1
|
72
|
+
f2: 59, # Keyboard F2
|
73
|
+
f3: 60, # Keyboard F3
|
74
|
+
f4: 61, # Keyboard F4
|
75
|
+
f5: 62, # Keyboard F5
|
76
|
+
f6: 63, # Keyboard F6
|
77
|
+
f7: 64, # Keyboard F7
|
78
|
+
f8: 65, # Keyboard F8
|
79
|
+
f9: 66, # Keyboard F9
|
80
|
+
f10: 67, # Keyboard F10
|
81
|
+
f11: 68, # Keyboard F11
|
82
|
+
f12: 69, # Keyboard F12
|
83
|
+
sysrq: 70, # Keyboard Print Screen
|
84
|
+
scrolllock: 71, # Keyboard Scroll Lock
|
85
|
+
pause: 72, # Keyboard Pause
|
86
|
+
insert: 73, # Keyboard Insert
|
87
|
+
home: 74, # Keyboard Home
|
88
|
+
pageup: 75, # Keyboard Page Up
|
89
|
+
delete: 76, # Keyboard Delete Forward
|
90
|
+
_end: 77, # Keyboard End
|
91
|
+
pagedown: 78, # Keyboard Page Down
|
92
|
+
right: 79, # Keyboard Right Arrow
|
93
|
+
left: 80, # Keyboard Left Arrow
|
94
|
+
down: 81, # Keyboard Down Arrow
|
95
|
+
up: 82, # Keyboard Up Arrow
|
96
|
+
numlock: 83, # Keyboard Num Lock and Clear
|
97
|
+
kpslash: 84, # Keypad /
|
98
|
+
kpasterisk: 85, # Keypad *
|
99
|
+
kpminus: 86, # Keypad -
|
100
|
+
kpplus: 87, # Keypad +
|
101
|
+
kpenter: 88, # Keypad ENTER
|
102
|
+
kp1: 89, # Keypad 1 and End
|
103
|
+
kp2: 90, # Keypad 2 and Down Arrow
|
104
|
+
kp3: 91, # Keypad 3 and PageDn
|
105
|
+
kp4: 92, # Keypad 4 and Left Arrow
|
106
|
+
kp5: 93, # Keypad 5
|
107
|
+
kp6: 94, # Keypad 6 and Right Arrow
|
108
|
+
kp7: 95, # Keypad 7 and Home
|
109
|
+
kp8: 96, # Keypad 8 and Up Arrow
|
110
|
+
kp9: 97, # Keypad 9 and Page Up
|
111
|
+
kp0: 98, # Keypad 0 and Insert
|
112
|
+
kpdot: 99, # Keypad . and Delete
|
113
|
+
_102nd: 100, # Keyboard Non-US and |
|
114
|
+
compose: 101, # Keyboard Application
|
115
|
+
power: 102, # Keyboard Power
|
116
|
+
kpequal: 103, # Keypad =
|
117
|
+
f13: 104, # Keyboard F13
|
118
|
+
f14: 105, # Keyboard F14
|
119
|
+
f15: 106, # Keyboard F15
|
120
|
+
f16: 107, # Keyboard F16
|
121
|
+
f17: 108, # Keyboard F17
|
122
|
+
f18: 109, # Keyboard F18
|
123
|
+
f19: 110, # Keyboard F19
|
124
|
+
f20: 111, # Keyboard F20
|
125
|
+
f21: 112, # Keyboard F21
|
126
|
+
f22: 113, # Keyboard F22
|
127
|
+
f23: 114, # Keyboard F23
|
128
|
+
f24: 115, # Keyboard F24
|
129
|
+
open: 116, # Keyboard Execute
|
130
|
+
help: 117, # Keyboard Help
|
131
|
+
props: 118, # Keyboard Menu
|
132
|
+
front: 119, # Keyboard Select
|
133
|
+
stop: 120, # Keyboard Stop
|
134
|
+
again: 121, # Keyboard Again
|
135
|
+
undo: 122, # Keyboard Undo
|
136
|
+
cut: 123, # Keyboard Cut
|
137
|
+
copy: 124, # Keyboard Copy
|
138
|
+
paste: 125, # Keyboard Paste
|
139
|
+
find: 126, # Keyboard Find
|
140
|
+
mute: 127, # Keyboard Mute
|
141
|
+
volumeup: 128, # Keyboard Volume Up
|
142
|
+
volumedown: 129, # Keyboard Volume Down
|
143
|
+
kpcomma: 133, # Keypad Comma
|
144
|
+
ro: 135, # Keyboard International1
|
145
|
+
katakanahiragana: 136, # Keyboard International2
|
146
|
+
yen: 137, # Keyboard International3
|
147
|
+
henkan: 138, # Keyboard International4
|
148
|
+
muhenkan: 139, # Keyboard International5
|
149
|
+
kpjpcomma: 140, # Keyboard International6
|
150
|
+
hangeul: 144, # Keyboard LANG1
|
151
|
+
hanja: 145, # Keyboard LANG2
|
152
|
+
katakana: 146, # Keyboard LANG3
|
153
|
+
hiragana: 147, # Keyboard LANG4
|
154
|
+
zenkakuhankaku: 148, # Keyboard LANG5
|
155
|
+
kpleftparen: 182, # Keypad (
|
156
|
+
kprightparen: 183, # Keypad )
|
157
|
+
leftctrl: 224, # Keyboard Left Control
|
158
|
+
leftshift: 225, # Keyboard Left Shift
|
159
|
+
leftalt: 226, # Keyboard Left Alt
|
160
|
+
leftmeta: 227, # Keyboard Left GUI
|
161
|
+
rightctrl: 228, # Keyboard Right Control
|
162
|
+
rightshift: 229, # Keyboard Right Shift
|
163
|
+
rightalt: 230, # Keyboard Right Alt
|
164
|
+
rightmeta: 231, # Keyboard Right GUI
|
165
|
+
media_playpause: 232,
|
166
|
+
media_stopcd: 233,
|
167
|
+
media_previoussong: 234,
|
168
|
+
media_nextsong: 235,
|
169
|
+
media_ejectcd: 236,
|
170
|
+
media_volumeup: 237,
|
171
|
+
media_volumedown: 238,
|
172
|
+
media_mute: 239,
|
173
|
+
media_www: 240,
|
174
|
+
media_back: 241,
|
175
|
+
media_forward: 242,
|
176
|
+
media_stop: 243,
|
177
|
+
media_find: 244,
|
178
|
+
media_scrollup: 245,
|
179
|
+
media_scrolldown: 246,
|
180
|
+
media_edit: 247,
|
181
|
+
media_sleep: 248,
|
182
|
+
media_coffee: 249,
|
183
|
+
media_refresh: 250,
|
184
|
+
media_calc: 251
|
185
|
+
}
|
186
|
+
|
187
|
+
class HidG0
|
188
|
+
|
189
|
+
def initialize(dev='/dev/hidg0')
|
190
|
+
@dev = dev
|
191
|
+
end
|
192
|
+
|
193
|
+
def keypress(key)
|
194
|
+
|
195
|
+
write_report(NULL_CHAR*2 + KEYS[key.to_sym].chr + NULL_CHAR*5)
|
196
|
+
|
197
|
+
# Release keys
|
198
|
+
write_report(NULL_CHAR*8)
|
199
|
+
|
200
|
+
end
|
201
|
+
|
202
|
+
def sendkeys()
|
203
|
+
end
|
204
|
+
|
205
|
+
private
|
206
|
+
|
207
|
+
def write_report(report)
|
208
|
+
open(@dev, 'wb+') {|f| f.write report }
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
metadata
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: hidg0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- James Robertson
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
|
14
|
+
YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTkwMzEzMjAxMjI5WhcN
|
15
|
+
MjAwMzEyMjAxMjI5WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
|
16
|
+
cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDDwLr3
|
17
|
+
mjbK3/PPmpZ+b474F3t9tTUSAROY7lq1HSygxzHPa7SWiNrhBRdHGCP+oE0npPXQ
|
18
|
+
BjqJMXe5Cixnh8JYpXLLhZ3T5GHAHLjgiPmdB5nNflm9DrJI35vTnzVFfo9ncBW+
|
19
|
+
ZMo7NsjBnaGcE7aYfkdPNqDZ+Vy1yMWHdUxwLoB9SHOhg7u6kaK6J6uQzk8dpXoS
|
20
|
+
AthI9u822vuiXNNpWBJShUw0JL0hW2ES33YGjPznsWJzpH+BC9UoE9k9IRWaYUDe
|
21
|
+
qp8FxtIkBzuuBrdmmXhuu0TnXr1bBgb4saqUUJZIMI/HOWgyCGCSofLC7kE+xiWH
|
22
|
+
JIEcXzzCVOj47btmPwi2Y1gZLRpMaeRReTYZCKPAW0B0l+BBB9pF+POozbw0ih+e
|
23
|
+
YTrdlFn+S5On+kZZa2HfonmRigQI02uoH/bYRf8BBG1VHZLfDS4c7nGBqS0nLTID
|
24
|
+
YNVORWickRYyCQCtHYITmZNJ9MD5Gk2wg/tDKDzEjprysktbqxNwHEPqXuMCAwEA
|
25
|
+
AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUwYlmZ+Iy
|
26
|
+
Ds7+ZJSqzE9lXiLYvNYwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
27
|
+
c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
|
28
|
+
BgkqhkiG9w0BAQsFAAOCAYEAbiz/qL0BnhynTNU7cO3DQSPcwteF/1IcMuuSwUjF
|
29
|
+
tKRNCIQNdr/QEz9IKSs0VbF++l6Sq5G5ub2j0+VOZSqI2tqJN8KxcQZTg6UAngUd
|
30
|
+
9oaCyjb2gMDoANv6zB0OBT0y+AD+MKhzMoIh+SQYuK1xnu82E+xO56+2XGLSgjD8
|
31
|
+
7JigHpjxKBTp/LSDaXasvZ7jT9fDP7VWxxSkN/3b8WKvLnXwGSdFxGGLGN/VNuIp
|
32
|
+
VOlLYpQL3OIJ3b4Pa75RX92tCIuTojuzIX3nH8VXaA4iUtP2NJYt90q7IAcQWx6d
|
33
|
+
/KwboLCTigl112eg5ndLhMiWkG/IQpfK+ixi+pPXScCaGWwcpAsneO+VWVMa26rY
|
34
|
+
Q3sgcMkKiuN+fcbu4i4FPY1OCUArxlVE2c71C2MB4HVJL53jY9epetsWIJdwfQb8
|
35
|
+
PwTg5+TqjQvWRfpf4tDWra3/fS6sXSuA4aoh28J3YpuAS2upGYuCk61X4iEDYerh
|
36
|
+
INwakAqcXQ4/4DC0SoRunSvJ
|
37
|
+
-----END CERTIFICATE-----
|
38
|
+
date: 2019-03-13 00:00:00.000000000 Z
|
39
|
+
dependencies: []
|
40
|
+
description:
|
41
|
+
email: james@jamesrobertson.eu
|
42
|
+
executables: []
|
43
|
+
extensions: []
|
44
|
+
extra_rdoc_files: []
|
45
|
+
files:
|
46
|
+
- lib/hidg0.rb
|
47
|
+
homepage: https://github.com/jrobertson/hidg0
|
48
|
+
licenses:
|
49
|
+
- MIT
|
50
|
+
metadata: {}
|
51
|
+
post_install_message:
|
52
|
+
rdoc_options: []
|
53
|
+
require_paths:
|
54
|
+
- lib
|
55
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0'
|
60
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '0'
|
65
|
+
requirements: []
|
66
|
+
rubygems_version: 3.0.1
|
67
|
+
signing_key:
|
68
|
+
specification_version: 4
|
69
|
+
summary: Used with a Raspberry PI Zero plugged into a computer to act as USB Keyboard
|
70
|
+
(HID).
|
71
|
+
test_files: []
|
metadata.gz.sig
ADDED
Binary file
|