mirror of
https://github.com/MiyooCFW/buildroot.git
synced 2025-09-27 22:24:19 +03:00
[PACKAGE/BOARD] Add handle usb-hid gadget (#55)
* Add handle usb-hid gadget (Tunr your handheld into usb gamepad for PC) * Add special keys handling * add Manual for USB-HID app * use st terminal to execute script --------- Co-authored-by: Apaczer <94932128+Apaczer@users.noreply.github.com>
This commit is contained in:
68
board/miyoo/main/apps/usb-hid/usb-hid.py
Normal file
68
board/miyoo/main/apps/usb-hid/usb-hid.py
Normal file
@@ -0,0 +1,68 @@
|
||||
import sys
|
||||
import keyboard
|
||||
|
||||
## usb hid codes: https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf
|
||||
hidCodeDict = {
|
||||
103:82, #up
|
||||
108:81, #down
|
||||
105:80, #left
|
||||
106:79, #right
|
||||
29:224, #b mapped to l_ctrl
|
||||
56:44, #a mapped to space
|
||||
57:225, #y mapped to l_shift
|
||||
42:27, #x mapped to x
|
||||
1:42, #select mapped to backspace
|
||||
28:40, #start mapped to enter
|
||||
15:226, #lpad1 mapped to l_alt
|
||||
14:43, #rpad1 mapped to tab
|
||||
104:75, #lpad2 mapped to pg_up
|
||||
109:78, #rpad2 mapped to pg_down
|
||||
97:0, #reset not mapped, used to quit
|
||||
}
|
||||
|
||||
specialCodeDict = {
|
||||
224:1,
|
||||
225:2,
|
||||
226:4,
|
||||
227:8,
|
||||
228:16,
|
||||
229:32,
|
||||
230:64,
|
||||
231:128,
|
||||
}
|
||||
|
||||
NULL_CHAR = chr(0)
|
||||
SPECIAL_KEY_CODES=[224,225,226,227,228,229,230,231]
|
||||
def write_report(report):
|
||||
with open('/dev/hidg0', 'rb+') as fd:
|
||||
fd.write(report.encode())
|
||||
|
||||
def translate(code, dictonary):
|
||||
if code in dictonary:
|
||||
return dictonary[code]
|
||||
return 0
|
||||
|
||||
def write_pressed_keys(e):
|
||||
print('\r', end='')
|
||||
all_keys=[translate(code,hidCodeDict) for code in keyboard._pressed_events]
|
||||
if not len(all_keys):
|
||||
write_report(NULL_CHAR*8)
|
||||
return
|
||||
|
||||
special_keys=0
|
||||
for s_key in SPECIAL_KEY_CODES:
|
||||
if s_key in all_keys:
|
||||
all_keys.remove(s_key)
|
||||
special_keys += translate(s_key,specialCodeDict)
|
||||
|
||||
if not len(all_keys):
|
||||
write_report(chr(special_keys)+NULL_CHAR*7)
|
||||
return
|
||||
|
||||
keys =''.join(chr(key) for key in all_keys)
|
||||
write_report(chr(special_keys)+NULL_CHAR+keys+NULL_CHAR*5)
|
||||
|
||||
|
||||
print("Press RESET button to quit")
|
||||
keyboard.hook(write_pressed_keys)
|
||||
keyboard.wait(97)
|
||||
Reference in New Issue
Block a user