Skip to content

Commit 458c994

Browse files
committed
Initial commit
0 parents  commit 458c994

File tree

2 files changed

+291
-0
lines changed

2 files changed

+291
-0
lines changed

keylist-en

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
left-ctrl:"01"
2+
right-ctrl:"10"
3+
left-shift:"02"
4+
right-shift:"20"
5+
left-alt:"04"
6+
right-alt:"40"
7+
left-meta:"08"
8+
right-meta:"80"
9+
a:"04"
10+
b:"05"
11+
c:"06"
12+
d:"07"
13+
e:"08"
14+
f:"09"
15+
g:"0a"
16+
h:"0b"
17+
i:"0c"
18+
j:"0d"
19+
k:"0e"
20+
l:"0f"
21+
m:"10"
22+
n:"11"
23+
o:"12"
24+
p:"13"
25+
q:"14"
26+
r:"15"
27+
s:"16"
28+
t:"17"
29+
u:"18"
30+
v:"19"
31+
w:"1a"
32+
x:"1b"
33+
y:"1c"
34+
z:"1d"
35+
1:"1e"
36+
2:"1f"
37+
3:"20"
38+
4:"21"
39+
5:"22"
40+
6:"23"
41+
7:"24"
42+
8:"25"
43+
9:"26"
44+
0:"27"
45+
return:"28"
46+
enter:"28"
47+
esc:"29"
48+
escape:"29"
49+
bckspc:"2a"
50+
backspace:"2a"
51+
tab:"2b"
52+
space:"2c"
53+
minus:"2d"
54+
dash:"2d"
55+
equals:"2e"
56+
equal:"2e"
57+
lbracket:"2f"
58+
rbracket:"30"
59+
backslash:"31"
60+
hash:"32"
61+
number:"32"
62+
semicolon:"33"
63+
quote:"34"
64+
backquote:"35"
65+
tilde:"35"
66+
comma:"36"
67+
period:"37"
68+
stop:"37"
69+
slash:"38"
70+
caps-lock:"39"
71+
capslock:"39"
72+
f1:"3a"
73+
f2:"3b"
74+
f3:"3c"
75+
f4:"3d"
76+
f5:"3e"
77+
f6:"3f"
78+
f7:"40"
79+
f8:"41"
80+
f9:"42"
81+
f10:"43"
82+
f11:"44"
83+
f12:"45"
84+
print:"46"
85+
scroll-lock:"47"
86+
scrolllock:"47"
87+
pause:"48"
88+
insert:"49"
89+
home:"4a"
90+
pageup:"4b"
91+
pgup:"4b"
92+
del:"4c"
93+
delete:"4c"
94+
end:"4d"
95+
pagedown:"4e"
96+
pgdown:"4e"
97+
right:"4f"
98+
left:"50"
99+
down:"51"
100+
up:"52"
101+
num-lock:"53"
102+
numlock:"53"
103+
kp-divide:"54"
104+
kp-multiply:"55"
105+
kp-minus:"56"
106+
kp-plus:"57"
107+
kp-enter:"58"
108+
kp-return:"58"
109+
kp-1:"59"
110+
kp-2:"5a"
111+
kp-3:"5b"
112+
kp-4:"5c"
113+
kp-5:"5d"
114+
kp-6:"5e"
115+
kp-7:"5f"
116+
kp-8:"60"
117+
kp-9:"61"
118+
kp-0:"62"
119+
kp-period:"63"
120+
kp-stop:"63"
121+
application:"65"
122+
power:"66"
123+
kp-equals:"67"
124+
kp-equal:"67"
125+
f13:"68"
126+
f14:"69"
127+
f15:"6a"
128+
f16:"6b"
129+
f17:"6c"
130+
f18:"6d"
131+
f19:"6e"
132+
f20:"6f"
133+
f21:"70"
134+
f22:"71"
135+
f23:"72"
136+
f24:"73"
137+
execute:"74"
138+
help:"75"
139+
menu:"76"
140+
select:"77"
141+
cancel:"78"
142+
redo:"79"
143+
undo:"7a"
144+
cut:"7b"
145+
copy:"7c"
146+
paste:"7d"
147+
find:"7e"
148+
mute:"7f"
149+
volume-up:"80"
150+
volume-down:"81"

piduck.py

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
#!/bin/python3
2+
import sys
3+
from time import sleep
4+
5+
commap = {}
6+
c1map = {
7+
"a": 4,
8+
"b": 5,
9+
"c": 6,
10+
"d": 7,
11+
"e": 8,
12+
"f": 9,
13+
"g": 10,
14+
"h": 11,
15+
"i": 12,
16+
"j": 13,
17+
"k": 14,
18+
"l": 15,
19+
"m": 16,
20+
"n": 17,
21+
"o": 18,
22+
"p": 19,
23+
"q": 20,
24+
"r": 21,
25+
"s": 22,
26+
"t": 23,
27+
"u": 24,
28+
"v": 25,
29+
"w": 26,
30+
"x": 27,
31+
"y": 28,
32+
"z": 29,
33+
"1": 30,
34+
"2": 31,
35+
"3": 32,
36+
"4": 33,
37+
"5": 34,
38+
"6": 35,
39+
"7": 36,
40+
"8": 37,
41+
"9": 38,
42+
"0": 39,
43+
"RETURN": 40,
44+
"ESC": 41,
45+
"BACKSPACE": 42,
46+
"TAB": 43,
47+
"SPACE": 44,
48+
}
49+
c2map = {}
50+
for i in range(65, 91):
51+
c2map[chr(i)] = "SHIFT " + chr(i).lower()
52+
aliasmap = {
53+
"CTRL-ALT": "CTRL ALT",
54+
"CTRL-SHIFT": "CTRL SHIFT",
55+
"DEFAULT_DELAY": "DEFAULTDELAY",
56+
}
57+
default_delay = 10
58+
string_delay = 10
59+
60+
61+
def divide_chunks(l, n):
62+
for i in range(0, len(l), n):
63+
yield l[i : i + n]
64+
65+
66+
def string(string):
67+
for char in string:
68+
pharse(char, [], True)
69+
sleep(string_delay / 100)
70+
71+
72+
def pharse(line, known, deltrue):
73+
global default_delay
74+
global string_delay
75+
command = line.split()
76+
if not deltrue:
77+
if command[0] == "DELAY":
78+
sleep(int(command[1]) / 100)
79+
return
80+
elif command[0] == "REM":
81+
return
82+
elif command[0] == "REPEAT":
83+
return # todo
84+
else:
85+
sleep(default_delay / 100)
86+
if command[0] == "STRING":
87+
string(" ".join(command[1:]))
88+
return
89+
elif command[0] == "DEFAULTCHARDELAY":
90+
string_delay = int(command[1])
91+
return
92+
elif command[0] == "DEFAULTDELAY":
93+
default_delay = int(command[1])
94+
return
95+
elif command[0] in aliasmap:
96+
pharse(aliasmap[command[0]] + " ".join(command[1:]), True)
97+
return
98+
elif command[0] in commap:
99+
known.append(commap[command[0]])
100+
pharse(" ".join(command[1:]), known, True)
101+
return
102+
elif command[0] in c1map:
103+
known.append(c1map[command[0]])
104+
out(known)
105+
return
106+
else:
107+
exit(2)
108+
109+
110+
def out(ccl):
111+
# ccl_part=list(divide_chunks(ccl, n))
112+
rep = chr(0) * 2
113+
i = 2
114+
for e in ccl:
115+
i += 1
116+
rep = rep + chr(e)
117+
rep = rep + (chr(0) * (8 - i))
118+
with open("/dev/hidg0", "rb+") as fd:
119+
fd.write(rep.encode())
120+
fd.write((chr(0) * 8).encode())
121+
122+
123+
def main():
124+
if len(sys.argv) >= 2:
125+
file1 = open(sys.argv[1], "r")
126+
while True:
127+
line = file1.readline()
128+
if not line:
129+
break
130+
pharse(line.strip(), [], False)
131+
file1.close()
132+
elif len(sys.argv) == 1:
133+
while True:
134+
line = input()
135+
if not line:
136+
break
137+
pharse(line.strip(), [], False)
138+
139+
140+
main()
141+
exit(0)

0 commit comments

Comments
 (0)