add test code
This commit is contained in:
parent
f7d0bcd4ff
commit
2660d7bad9
|
@ -0,0 +1,177 @@
|
|||
import evdev,sys
|
||||
import pandas as pd
|
||||
from socket import *
|
||||
|
||||
NULL_CHAR = chr(0)
|
||||
serHost = '127.0.0.1'
|
||||
serPort = 50009
|
||||
|
||||
data = pd.read_csv("./scan-code.csv")
|
||||
list = data.values.tolist()
|
||||
|
||||
def read_line(code):
|
||||
code_hex = code.replace("0x","")
|
||||
#print("code_hex=",code_hex)
|
||||
for i in range(len(list)):
|
||||
lkc = str(list[i][2])
|
||||
if lkc[-1] == "0":
|
||||
if code_hex == lkc.replace("0x00",""):
|
||||
return int(list[i][0].replace("0x07 0x00",""),16)
|
||||
else:
|
||||
if code_hex == lkc[lkc.rfind("0")+1:]:
|
||||
return int(list[i][0].replace("0x07 0x00",""),16)
|
||||
|
||||
def send_report(report):
|
||||
sockobj.send(report.encode())
|
||||
|
||||
sockobj = socket(AF_INET, SOCK_STREAM)
|
||||
sockobj.connect((serHost,serPort))
|
||||
|
||||
while True:
|
||||
for i in range(4,34):
|
||||
send_report(NULL_CHAR*2+chr(i)+NULL_CHAR*5)
|
||||
data = sockobj.recv(1024)
|
||||
print(data)
|
||||
i = i+1
|
||||
if i == 255:
|
||||
i = 4
|
||||
|
||||
device = evdev.InputDevice('/dev/input/event1')
|
||||
|
||||
print(device)
|
||||
tmp = 0
|
||||
tmp_code = 0
|
||||
hang = 0
|
||||
caps = 0
|
||||
for event in device.read_loop():
|
||||
if event.type == evdev.ecodes.EV_KEY :
|
||||
k = evdev.events.KeyEvent(event)
|
||||
|
||||
#print(k) #完整事件
|
||||
#print(event.code) ##键盘code --按键的hex code(如28---enter)
|
||||
hid_code = read_line(hex(event.code))
|
||||
#print("hid_code=",hid_code)##完成scan code到hid code的转换
|
||||
#print("hid_code_type=",type(hid_code))
|
||||
#print(event.value) ##键盘状态 0,1,2 --0为release, 1为down , 2hold
|
||||
|
||||
if event.value == 1:
|
||||
#print(NULL_CHAR*2+chr(event.code)+NULL_CHAR*5)
|
||||
if hid_code == 224 or hid_code == 225 or hid_code == 226 or hid_code == 227 or hid_code == 228 or hid_code == 229 or hid_code == 230 or hid_code == 231 or hid_code == 58:
|
||||
tmp_code = hid_code
|
||||
hang = 1
|
||||
match hid_code:
|
||||
case 224:
|
||||
tmp = 1
|
||||
case 225:
|
||||
tmp = 2
|
||||
case 226:
|
||||
tmp = 4
|
||||
case 227:
|
||||
tmp = 8
|
||||
case 228:
|
||||
tmp = 16
|
||||
case 229:
|
||||
tmp = 32
|
||||
case 230:
|
||||
tmp = 64
|
||||
case 231:
|
||||
tmp = 128
|
||||
case 58:
|
||||
if caps == 1:
|
||||
caps = 0
|
||||
else:
|
||||
caps = 1
|
||||
hang = 0
|
||||
tmp_code = 0
|
||||
else:
|
||||
if tmp != 0: ##按住ctrl等然后按字母等
|
||||
hang = 2 ##可以认定为没有单次敲击shift
|
||||
print("caps=",caps)
|
||||
if caps == 1 and (tmp_code == 225 or tmp_code == 229):
|
||||
send_report(NULL_CHAR*2+chr(hid_code)+NULL_CHAR*5)
|
||||
else:
|
||||
send_report(chr(tmp)+NULL_CHAR+chr(hid_code)+NULL_CHAR*5)
|
||||
else:
|
||||
if caps == 1 :
|
||||
send_report(chr(32)+NULL_CHAR+chr(hid_code)+NULL_CHAR*5)
|
||||
else:
|
||||
send_report(NULL_CHAR*2+chr(hid_code)+NULL_CHAR*5)
|
||||
data = sockobj.recv(1024)
|
||||
#print(data)
|
||||
|
||||
if event.value == 2:
|
||||
#print(NULL_CHAR*2+chr(event.code)+NULL_CHAR*5)
|
||||
if hid_code == 224 or hid_code == 225 or hid_code == 226 or hid_code == 227 or hid_code == 228 or hid_code == 229 or hid_code == 230 or hid_code == 231 :
|
||||
tmp_code = hid_code
|
||||
match hid_code:
|
||||
case 224:
|
||||
tmp = 1
|
||||
case 225:
|
||||
tmp = 2
|
||||
case 226:
|
||||
tmp = 4
|
||||
case 227:
|
||||
tmp = 8
|
||||
case 228:
|
||||
tmp = 16
|
||||
case 229:
|
||||
tmp = 32
|
||||
case 230:
|
||||
tmp = 64
|
||||
case 231:
|
||||
tmp = 128
|
||||
else:
|
||||
if tmp != 0:
|
||||
hang = 2
|
||||
if caps == 1 and (tmp_code == 225 or tmp_code == 229):
|
||||
send_report(NULL_CHAR*2+chr(hid_code)+NULL_CHAR*5)
|
||||
else:
|
||||
send_report(chr(tmp)+NULL_CHAR+chr(hid_code)+NULL_CHAR*5)
|
||||
else:
|
||||
if caps == 1 :
|
||||
send_report(chr(32)+NULL_CHAR+chr(hid_code)+NULL_CHAR*5)
|
||||
data = sockobj.recv(1024)
|
||||
#print(data)
|
||||
else:
|
||||
send_report(NULL_CHAR*2+chr(hid_code)+NULL_CHAR*5)
|
||||
data = sockobj.recv(1024)
|
||||
#print(data)
|
||||
|
||||
if event.value == 0:
|
||||
if hid_code == tmp_code and hang == 1:
|
||||
send_report(chr(tmp)+NULL_CHAR*7)
|
||||
send_report(NULL_CHAR*8)
|
||||
tmp = 0
|
||||
tmp_code = 0
|
||||
hang = 0
|
||||
elif hid_code == tmp_code:
|
||||
send_report(NULL_CHAR*8)
|
||||
tmp = 0
|
||||
tmp_code = 0
|
||||
hang = 0
|
||||
else:
|
||||
send_report(NULL_CHAR*8)
|
||||
data = sockobj.recv(1024)
|
||||
#print(data)
|
||||
'''
|
||||
This article provided the answer.
|
||||
|
||||
Input reports (sent from keyboard to computer) have the following structure for a total of 8 bytes:
|
||||
|
||||
1 byte: modifier keys (Control, Shift, Alt, etc.), where each bit corresponds to a key
|
||||
1 byte: unused/reserved for OEM
|
||||
6 bytes: pressed key codes
|
||||
Further into the article, there is a list of the modifiers, each represented by a bit:
|
||||
|
||||
Left Control: 224 (0x00e0)-------0x01
|
||||
Left Shift: 225 (0x00e1)-------0x02
|
||||
Left Alt: 226 (0x00e2)-------0x04
|
||||
Left Meta (Windows key): 227 (0x00e3)-------0x08
|
||||
Right Control: 228 (0x00e4)-------0x10
|
||||
Right Shift: 229 (0x00e5)-------0x20
|
||||
Right Alt: 230 (0x00e6)-------0x40
|
||||
Right Meta (Windows key): 231 (0x00e7)-------0x80
|
||||
|
||||
For firing my screenshot app, I need CMD-SHIFT-5, so I need to set the 2nd and 4th bits on.
|
||||
0b01010000
|
||||
'''
|
|
@ -0,0 +1,248 @@
|
|||
HID Usage,HID Usage Name,LKC,Linux Key Code Name,Version,AKC,Android Key Code Name,Notes
|
||||
0x07 0x0001,Keyboard Error Roll Over,,,,,,
|
||||
0x07 0x0002,Keyboard POST Fail,,,,,,
|
||||
0x07 0x0003,Keyboard Error Undefined,,,,,,
|
||||
0x07 0x0004,Keyboard a and A,0x001e,KEY_A,1.6,0x001d,KEYCODE_A,1
|
||||
0x07 0x0005,Keyboard b and B,0x0030,KEY_B,1.6,0x001e,KEYCODE_B,1
|
||||
0x07 0x0006,Keyboard c and C,0x002e,KEY_C,1.6,0x001f,KEYCODE_C,1
|
||||
0x07 0x0007,Keyboard d and D,0x0020,KEY_D,1.6,0x0020,KEYCODE_D,1
|
||||
0x07 0x0008,Keyboard e and E,0x0012,KEY_E,1.6,0x0021,KEYCODE_E,1
|
||||
0x07 0x0009,Keyboard f and F,0x0021,KEY_F,1.6,0x0022,KEYCODE_F,1
|
||||
0x07 0x000a,Keyboard g and G,0x0022,KEY_G,1.6,0x0023,KEYCODE_G,1
|
||||
0x07 0x000b,Keyboard h and H,0x0023,KEY_H,1.6,0x0024,KEYCODE_H,1
|
||||
0x07 0x000c,Keyboard i and I,0x0017,KEY_I,1.6,0x0025,KEYCODE_I,1
|
||||
0x07 0x000d,Keyboard j and J,0x0024,KEY_J,1.6,0x0026,KEYCODE_J,1
|
||||
0x07 0x000e,Keyboard k and K,0x0025,KEY_K,1.6,0x0027,KEYCODE_K,1
|
||||
0x07 0x000f,Keyboard l and L,0x0026,KEY_L,1.6,0x0028,KEYCODE_L,1
|
||||
0x07 0x0010,Keyboard m and M,0x0032,KEY_M,1.6,0x0029,KEYCODE_M,1
|
||||
0x07 0x0011,Keyboard n and N,0x0031,KEY_N,1.6,0x002a,KEYCODE_N,1
|
||||
0x07 0x0012,Keyboard o and O,0x0018,KEY_O,1.6,0x002b,KEYCODE_O,1
|
||||
0x07 0x0013,Keyboard p and P,0x0019,KEY_P,1.6,0x002c,KEYCODE_P,1
|
||||
0x07 0x0014,Keyboard q and Q,0x0010,KEY_Q,1.6,0x002d,KEYCODE_Q,1
|
||||
0x07 0x0015,Keyboard r and R,0x0013,KEY_R,1.6,0x002e,KEYCODE_R,1
|
||||
0x07 0x0016,Keyboard s and S,0x001f,KEY_S,1.6,0x002f,KEYCODE_S,1
|
||||
0x07 0x0017,Keyboard t and T,0x0014,KEY_T,1.6,0x0030,KEYCODE_T,1
|
||||
0x07 0x0018,Keyboard u and U,0x0016,KEY_U,1.6,0x0031,KEYCODE_U,1
|
||||
0x07 0x0019,Keyboard v and V,0x002f,KEY_V,1.6,0x0032,KEYCODE_V,1
|
||||
0x07 0x001a,Keyboard w and W,0x0011,KEY_W,1.6,0x0033,KEYCODE_W,1
|
||||
0x07 0x001b,Keyboard x and X,0x002d,KEY_X,1.6,0x0034,KEYCODE_X,1
|
||||
0x07 0x001c,Keyboard y and Y,0x0015,KEY_Y,1.6,0x0035,KEYCODE_Y,1
|
||||
0x07 0x001d,Keyboard z and Z,0x002c,KEY_Z,1.6,0x0036,KEYCODE_Z,1
|
||||
0x07 0x001e,Keyboard 1 and !,0x0002,KEY_1,1.6,0x0008,KEYCODE_1,1
|
||||
0x07 0x001f,Keyboard 2 and @,0x0003,KEY_2,1.6,0x0009,KEYCODE_2,1
|
||||
0x07 0x0020,Keyboard 3 and #,0x0004,KEY_3,1.6,0x000a,KEYCODE_3,1
|
||||
0x07 0x0021,Keyboard 4 and $,0x0005,KEY_4,1.6,0x000b,KEYCODE_4,1
|
||||
0x07 0x0022,Keyboard 5 and %,0x0006,KEY_5,1.6,0x000c,KEYCODE_5,1
|
||||
0x07 0x0023,Keyboard 6 and ^,0x0007,KEY_6,1.6,0x000d,KEYCODE_6,1
|
||||
0x07 0x0024,Keyboard 7 and &,0x0008,KEY_7,1.6,0x000e,KEYCODE_7,1
|
||||
0x07 0x0025,Keyboard 8 and *,0x0009,KEY_8,1.6,0x000f,KEYCODE_8,1
|
||||
0x07 0x0026,Keyboard 9 and (,0x000a,KEY_9,1.6,0x0010,KEYCODE_9,1
|
||||
0x07 0x0027,Keyboard 0 and ),0x000b,KEY_0,1.6,0x0007,KEYCODE_0,1
|
||||
0x07 0x0028,Keyboard Return (ENTER),0x001c,KEY_ENTER,1.6,0x0042,KEYCODE_ENTER,1
|
||||
0x07 0x0029,Keyboard ESCAPE,0x0001,KEY_ESC,3,0x006f,KEYCODE_ESCAPE,
|
||||
"""""","""""","""""","""""",2.3,0x0004,KEYCODE_BACK,
|
||||
0x07 0x002a,Keyboard DELETE (Backspace),0x000e,KEY_BACKSPACE,1.6,0x0043,KEYCODE_DEL,
|
||||
0x07 0x002b,Keyboard Tab,0x000f,KEY_TAB,1.6,0x003d,KEYCODE_TAB,
|
||||
0x07 0x002c,Keyboard Spacebar,0x0039,KEY_SPACE,1.6,0x003e,KEYCODE_SPACE,
|
||||
0x07 0x002d,Keyboard - and _,0x000c,KEY_MINUS,1.6,0x0045,KEYCODE_MINUS,1
|
||||
0x07 0x002e,Keyboard = and +,0x000d,KEY_EQUAL,1.6,0x0046,KEYCODE_EQUALS,1
|
||||
0x07 0x002f,Keyboard [ and {,0x001a,KEY_LEFTBRACE,1.6,0x0047,KEYCODE_LEFT_BRACKET,1
|
||||
0x07 0x0030,Keyboard ] and },0x001b,KEY_RIGHTBRACE,1.6,0x0048,KEYCODE_RIGHT_BRACKET,1
|
||||
0x07 0x0031,Keyboard \ and |,0x002b,KEY_BACKSLASH,1.6,0x0049,KEYCODE_BACKSLASH,1
|
||||
0x07 0x0032,Keyboard Non-US # and ~,0x002b,KEY_BACKSLASH,1.6,0x0049,KEYCODE_BACKSLASH,1
|
||||
0x07 0x0033,Keyboard ; and :,0x0027,KEY_SEMICOLON,1.6,0x004a,KEYCODE_SEMICOLON,1
|
||||
0x07 0x0034,Keyboard ' and ",0x0028,KEY_APOSTROPHE,1.6,0x004b,KEYCODE_APOSTROPHE,1
|
||||
0x07 0x0035,Keyboard ` and ~,0x0029,KEY_GRAVE,3,0x0044,KEYCODE_GRAVE,1
|
||||
0x07 0x0036,"Keyboard , and <",0x0033,KEY_COMMA,1.6,0x0037,KEYCODE_COMMA,1
|
||||
0x07 0x0037,Keyboard . and >,0x0034,KEY_DOT,1.6,0x0038,KEYCODE_PERIOD,1
|
||||
0x07 0x0038,Keyboard / and ?,0x0035,KEY_SLASH,1.6,0x004c,KEYCODE_SLASH,1
|
||||
0x07 0x0039,Keyboard Caps Lock,0x003a,KEY_CAPSLOCK,3,0x0073,KEYCODE_CAPS_LOCK,
|
||||
0x07 0x003a,Keyboard F1,0x003b,KEY_F1,3,0x0083,KEYCODE_F1,
|
||||
"""""","""""","""""","""""",1.6,0x0052,KEYCODE_MENU,
|
||||
0x07 0x003b,Keyboard F2,0x003c,KEY_F2,3,0x0084,KEYCODE_F2,
|
||||
"""""","""""","""""","""""",1.6,0x0002,KEYCODE_SOFT_RIGHT,
|
||||
0x07 0x003c,Keyboard F3,0x003d,KEY_F3,3,0x0085,KEYCODE_F3,
|
||||
"""""","""""","""""","""""",1.6,0x0005,KEYCODE_CALL,
|
||||
0x07 0x003d,Keyboard F4,0x003e,KEY_F4,3,0x0086,KEYCODE_F4,
|
||||
"""""","""""","""""","""""",1.6,0x0006,KEYCODE_ENDCALL,
|
||||
0x07 0x003e,Keyboard F5,0x003f,KEY_F5,3,0x0087,KEYCODE_F5,
|
||||
0x07 0x003f,Keyboard F6,0x0040,KEY_F6,3,0x0088,KEYCODE_F6,
|
||||
0x07 0x0040,Keyboard F7,0x0041,KEY_F7,3,0x0089,KEYCODE_F7,
|
||||
0x07 0x0041,Keyboard F8,0x0042,KEY_F8,3,0x008a,KEYCODE_F8,
|
||||
0x07 0x0042,Keyboard F9,0x0043,KEY_F9,3,0x008b,KEYCODE_F9,
|
||||
0x07 0x0043,Keyboard F10,0x0044,KEY_F10,3,0x008c,KEYCODE_F10,
|
||||
"""""","""""","""""","""""",2.3,0x0052,KEYCODE_MENU,
|
||||
0x07 0x0044,Keyboard F11,0x0057,KEY_F11,3,0x008d,KEYCODE_F11,
|
||||
0x07 0x0045,Keyboard F12,0x0058,KEY_F12,3,0x008e,KEYCODE_F12,
|
||||
0x07 0x0046,Keyboard Print Screen,0x0063,KEY_SYSRQ,3,0x0078,KEYCODE_SYSRQ,
|
||||
0x07 0x0047,Keyboard Scroll Lock,0x0046,KEY_SCROLLLOCK,3,0x0074,KEYCODE_SCROLL_LOCK,
|
||||
0x07 0x0048,Keyboard Pause,0x0077,KEY_PAUSE,3,0x0079,KEYCODE_BREAK,
|
||||
0x07 0x0049,Keyboard Insert,0x006e,KEY_INSERT,3,0x007c,KEYCODE_INSERT,
|
||||
0x07 0x004a,Keyboard Home,0x0066,KEY_HOME,3,0x007a,KEYCODE_MOVE_HOME,
|
||||
"""""","""""","""""","""""",1.6,0x0003,KEYCODE_HOME,
|
||||
0x07 0x004b,Keyboard Page Up,0x0068,KEY_PAGEUP,3,0x005c,KEYCODE_PAGE_UP,
|
||||
0x07 0x004c,Keyboard Delete Forward,0x006f,KEY_DELETE,3,0x0070,KEYCODE_FORWARD_DEL,
|
||||
0x07 0x004d,Keyboard End,0x006b,KEY_END,3,0x007b,KEYCODE_MOVE_END,
|
||||
"""""","""""","""""","""""",1.6,0x0006,KEYCODE_ENDCALL,
|
||||
0x07 0x004e,Keyboard Page Down,0x006d,KEY_PAGEDOWN,3,0x005d,KEYCODE_PAGE_DOWN,
|
||||
0x07 0x004f,Keyboard Right Arrow,0x006a,KEY_RIGHT,1.6,0x0016,KEYCODE_DPAD_RIGHT,
|
||||
0x07 0x0050,Keyboard Left Arrow,0x0069,KEY_LEFT,1.6,0x0015,KEYCODE_DPAD_LEFT,
|
||||
0x07 0x0051,Keyboard Down Arrow,0x006c,KEY_DOWN,1.6,0x0014,KEYCODE_DPAD_DOWN,
|
||||
0x07 0x0052,Keyboard Up Arrow,0x0067,KEY_UP,1.6,0x0013,KEYCODE_DPAD_UP,
|
||||
0x07 0x0053,Keyboard Num Lock and Clear,0x0045,KEY_NUMLOCK,3,0x008f,KEYCODE_NUM_LOCK,
|
||||
0x07 0x0054,Keypad /,0x0062,KEY_KPSLASH,3,0x009a,KEYCODE_NUMPAD_DIVIDE,
|
||||
0x07 0x0055,Keypad *,0x0037,KEY_KPASTERISK,3,0x009b,KEYCODE_NUMPAD_MULTIPLY,
|
||||
0x07 0x0056,Keypad -,0x004a,KEY_KPMINUS,3,0x009c,KEYCODE_NUMPAD_SUBTRACT,
|
||||
0x07 0x0057,Keypad +,0x004e,KEY_KPPLUS,3,0x009d,KEYCODE_NUMPAD_ADD,
|
||||
0x07 0x0058,Keypad ENTER,0x0060,KEY_KPENTER,3,0x00a0,KEYCODE_NUMPAD_ENTER,
|
||||
0x07 0x0059,Keypad 1 and End,0x004f,KEY_KP1,3,0x0091,KEYCODE_NUMPAD_1,
|
||||
0x07 0x005a,Keypad 2 and Down Arrow,0x0050,KEY_KP2,3,0x0092,KEYCODE_NUMPAD_2,
|
||||
0x07 0x005b,Keypad 3 and PageDn,0x0051,KEY_KP3,3,0x0093,KEYCODE_NUMPAD_3,
|
||||
0x07 0x005c,Keypad 4 and Left Arrow,0x004b,KEY_KP4,3,0x0094,KEYCODE_NUMPAD_4,
|
||||
0x07 0x005d,Keypad 5,0x004c,KEY_KP5,3,0x0095,KEYCODE_NUMPAD_5,
|
||||
0x07 0x005e,Keypad 6 and Right Arrow,0x004d,KEY_KP6,3,0x0096,KEYCODE_NUMPAD_6,
|
||||
0x07 0x005f,Keypad 7 and Home,0x0047,KEY_KP7,3,0x0097,KEYCODE_NUMPAD_7,
|
||||
0x07 0x0060,Keypad 8 and Up Arrow,0x0048,KEY_KP8,3,0x0098,KEYCODE_NUMPAD_8,
|
||||
0x07 0x0061,Keypad 9 and Page Up,0x0049,KEY_KP9,3,0x0099,KEYCODE_NUMPAD_9,
|
||||
0x07 0x0062,Keypad 0 and Insert,0x0052,KEY_KP0,3,0x0090,KEYCODE_NUMPAD_0,
|
||||
0x07 0x0063,Keypad . and Delete,0x0053,KEY_KPDOT,3,0x009e,KEYCODE_NUMPAD_DOT,
|
||||
0x07 0x0064,Keyboard Non-US \ and |,0x0056,KEY_102ND,4,0x0049,KEYCODE_BACKSLASH,1
|
||||
0x07 0x0065,Keyboard Application,0x007f,KEY_COMPOSE,3,0x0052,KEYCODE_MENU,
|
||||
"""""","""""","""""","""""",1.6,0x0054,KEYCODE_SEARCH,
|
||||
0x07 0x0066,Keyboard Power,0x0074,KEY_POWER,1.6,0x001a,KEYCODE_POWER,
|
||||
0x07 0x0067,Keypad =,0x0075,KEY_KPEQUAL,3,0x00a1,KEYCODE_NUMPAD_EQUALS,
|
||||
0x07 0x0068,Keyboard F13,0x00b7,KEY_F13,,,,
|
||||
0x07 0x0069,Keyboard F14,0x00b8,KEY_F14,,,,
|
||||
0x07 0x006a,Keyboard F15,0x00b9,KEY_F15,,,,
|
||||
0x07 0x006b,Keyboard F16,0x00ba,KEY_F16,,,,
|
||||
0x07 0x006c,Keyboard F17,0x00bb,KEY_F17,,,,
|
||||
0x07 0x006d,Keyboard F18,0x00bc,KEY_F18,,,,
|
||||
0x07 0x006e,Keyboard F19,0x00bd,KEY_F19,,,,
|
||||
0x07 0x006f,Keyboard F20,0x00be,KEY_F20,,,,
|
||||
0x07 0x0070,Keyboard F21,0x00bf,KEY_F21,,,,
|
||||
0x07 0x0071,Keyboard F22,0x00c0,KEY_F22,,,,
|
||||
0x07 0x0072,Keyboard F23,0x00c1,KEY_F23,,,,
|
||||
0x07 0x0073,Keyboard F24,0x00c2,KEY_F24,,,,
|
||||
0x07 0x0074,Keyboard Execute,0x0086,KEY_OPEN,,,,
|
||||
0x07 0x0075,Keyboard Help,0x008a,KEY_HELP,,,,
|
||||
0x07 0x0076,Keyboard Menu,0x0082,KEY_PROPS,,,,
|
||||
0x07 0x0077,Keyboard Select,0x0084,KEY_FRONT,,,,
|
||||
0x07 0x0078,Keyboard Stop,0x0080,KEY_STOP,3,0x0056,KEYCODE_MEDIA_STOP,
|
||||
0x07 0x0079,Keyboard Again,0x0081,KEY_AGAIN,,,,
|
||||
0x07 0x007a,Keyboard Undo,0x0083,KEY_UNDO,,,,
|
||||
0x07 0x007b,Keyboard Cut,0x0089,KEY_CUT,,,,
|
||||
0x07 0x007c,Keyboard Copy,0x0085,KEY_COPY,,,,
|
||||
0x07 0x007d,Keyboard Paste,0x0087,KEY_PASTE,,,,
|
||||
0x07 0x007e,Keyboard Find,0x0088,KEY_FIND,,,,
|
||||
0x07 0x007f,Keyboard Mute,0x0071,KEY_MUTE,3,0x00a4,KEYCODE_VOLUME_MUTE,
|
||||
0x07 0x0080,Keyboard Volume Up,0x0073,KEY_VOLUMEUP,1.6,0x0018,KEYCODE_VOLUME_UP,
|
||||
0x07 0x0081,Keyboard Volume Down,0x0072,KEY_VOLUMEDOWN,1.6,0x0019,KEYCODE_VOLUME_DOWN,
|
||||
0x07 0x0082,Keyboard Locking Caps Lock,,,,,,
|
||||
0x07 0x0083,Keyboard Locking Num Lock,,,,,,
|
||||
0x07 0x0084,Keyboard Locking Scroll Lock,,,,,,
|
||||
0x07 0x0085,Keypad Comma,0x0079,KEY_KPCOMMA,3,0x009f,KEYCODE_NUMPAD_COMMA,
|
||||
0x07 0x0086,Keypad Equal Sign,,,,,,
|
||||
0x07 0x0087,Keyboard International1,0x0059,KEY_RO,,,,
|
||||
0x07 0x0088,Keyboard International2,0x005d,KEY_KATAKANAHIRAGANA,,,,
|
||||
0x07 0x0089,Keyboard International3,0x007c,KEY_YEN,,,,
|
||||
0x07 0x008a,Keyboard International4,0x005c,KEY_HENKAN,,,,
|
||||
0x07 0x008b,Keyboard International5,0x005e,KEY_MUHENKAN,,,,
|
||||
0x07 0x008c,Keyboard International6,0x005f,KEY_KPJPCOMMA,,,,
|
||||
0x07 0x008d,Keyboard International7,,,,,,
|
||||
0x07 0x008e,Keyboard International8,,,,,,
|
||||
0x07 0x008f,Keyboard International9,,,,,,
|
||||
0x07 0x0090,Keyboard LANG1,0x007a,KEY_HANGEUL,,,,
|
||||
0x07 0x0091,Keyboard LANG2,0x007b,KEY_HANJA,,,,
|
||||
0x07 0x0092,Keyboard LANG3,0x005a,KEY_KATAKANA,,,,
|
||||
0x07 0x0093,Keyboard LANG4,0x005b,KEY_HIRAGANA,,,,
|
||||
0x07 0x0094,Keyboard LANG5,0x0055,KEY_ZENKAKUHANKAKU,,,,
|
||||
0x07 0x0095,Keyboard LANG6,,,,,,
|
||||
0x07 0x0096,Keyboard LANG7,,,,,,
|
||||
0x07 0x0097,Keyboard LANG8,,,,,,
|
||||
0x07 0x0098,Keyboard LANG9,,,,,,
|
||||
0x07 0x0099,Keyboard Alternate Erase,,,,,,
|
||||
0x07 0x009a,Keyboard SysReq/Attention,,,,,,
|
||||
0x07 0x009b,Keyboard Cancel,,,,,,
|
||||
0x07 0x009c,Keyboard Clear,,,,,,
|
||||
0x07 0x009d,Keyboard Prior,,,,,,
|
||||
0x07 0x009e,Keyboard Return,,,,,,
|
||||
0x07 0x009f,Keyboard Separator,,,,,,
|
||||
0x07 0x00a0,Keyboard Out,,,,,,
|
||||
0x07 0x00a1,Keyboard Oper,,,,,,
|
||||
0x07 0x00a2,Keyboard Clear/Again,,,,,,
|
||||
0x07 0x00a3,Keyboard CrSel/Props,,,,,,
|
||||
0x07 0x00a4,Keyboard ExSel,,,,,,
|
||||
0x07 0x00b0,Keypad 00,,,,,,
|
||||
0x07 0x00b1,Keypad 000,,,,,,
|
||||
0x07 0x00b2,Thousands Separator,,,,,,
|
||||
0x07 0x00b3,Decimal Separator,,,,,,
|
||||
0x07 0x00b4,Currency Unit,,,,,,
|
||||
0x07 0x00b5,Currency Sub-unit,,,,,,
|
||||
0x07 0x00b6,Keypad (,0x00b3,KEY_KPLEFTPAREN,3,0x00a2,KEYCODE_NUMPAD_LEFT_PAREN,
|
||||
0x07 0x00b7,Keypad ),0x00b4,KEY_KPRIGHTPAREN,3,0x00a3,KEYCODE_NUMPAD_RIGHT_PAREN,
|
||||
0x07 0x00b8,Keypad {,,,,,,
|
||||
0x07 0x00b9,Keypad },,,,,,
|
||||
0x07 0x00ba,Keypad Tab,,,,,,
|
||||
0x07 0x00bb,Keypad Backspace,,,,,,
|
||||
0x07 0x00bc,Keypad A,,,,,,
|
||||
0x07 0x00bd,Keypad B,,,,,,
|
||||
0x07 0x00be,Keypad C,,,,,,
|
||||
0x07 0x00bf,Keypad D,,,,,,
|
||||
0x07 0x00c0,Keypad E,,,,,,
|
||||
0x07 0x00c1,Keypad F,,,,,,
|
||||
0x07 0x00c2,Keypad XOR,,,,,,
|
||||
0x07 0x00c3,Keypad ^,,,,,,
|
||||
0x07 0x00c4,Keypad %,,,,,,
|
||||
0x07 0x00c5,Keypad <,,,,,,
|
||||
0x07 0x00c6,Keypad >,,,,,,
|
||||
0x07 0x00c7,Keypad &,,,,,,
|
||||
0x07 0x00c8,Keypad &&,,,,,,
|
||||
0x07 0x00c9,Keypad |,,,,,,
|
||||
0x07 0x00ca,Keypad ||,,,,,,
|
||||
0x07 0x00cb,Keypad :,,,,,,
|
||||
0x07 0x00cc,Keypad #,,,,,,
|
||||
0x07 0x00cd,Keypad Space,,,,,,
|
||||
0x07 0x00ce,Keypad @,,,,,,
|
||||
0x07 0x00cf,Keypad !,,,,,,
|
||||
0x07 0x00d0,Keypad Memory Store,,,,,,
|
||||
0x07 0x00d1,Keypad Memory Recall,,,,,,
|
||||
0x07 0x00d2,Keypad Memory Clear,,,,,,
|
||||
0x07 0x00d3,Keypad Memory Add,,,,,,
|
||||
0x07 0x00d4,Keypad Memory Subtract,,,,,,
|
||||
0x07 0x00d5,Keypad Memory Multiply,,,,,,
|
||||
0x07 0x00d6,Keypad Memory Divide,,,,,,
|
||||
0x07 0x00d7,Keypad +/-,,,,,,
|
||||
0x07 0x00d8,Keypad Clear,,,,,,
|
||||
0x07 0x00d9,Keypad Clear Entry,,,,,,
|
||||
0x07 0x00da,Keypad Binary,,,,,,
|
||||
0x07 0x00db,Keypad Octal,,,,,,
|
||||
0x07 0x00dc,Keypad Decimal,,,,,,
|
||||
0x07 0x00dd,Keypad Hexadecimal,,,,,,
|
||||
0x07 0x00e0,Keyboard Left Control,0x001d,KEY_LEFTCTRL,3,0x0071,KEYCODE_CTRL_LEFT,
|
||||
0x07 0x00e1,Keyboard Left Shift,0x002a,KEY_LEFTSHIFT,1.6,0x003b,KEYCODE_SHIFT_LEFT,
|
||||
0x07 0x00e2,Keyboard Left Alt,0x0038,KEY_LEFTALT,1.6,0x0039,KEYCODE_ALT_LEFT,
|
||||
0x07 0x00e3,Keyboard Left GUI,0x007d,KEY_LEFTMETA,3,0x0075,KEYCODE_META_LEFT,
|
||||
0x07 0x00e4,Keyboard Right Control,0x0061,KEY_RIGHTCTRL,3,0x0072,KEYCODE_CTRL_RIGHT,
|
||||
0x07 0x00e5,Keyboard Right Shift,0x0036,KEY_RIGHTSHIFT,1.6,0x003c,KEYCODE_SHIFT_RIGHT,
|
||||
0x07 0x00e6,Keyboard Right Alt,0x0064,KEY_RIGHTALT,1.6,0x003a,KEYCODE_ALT_RIGHT,
|
||||
0x07 0x00e7,Keyboard Right GUI,0x007e,KEY_RIGHTMETA,3,0x0076,KEYCODE_META_RIGHT,
|
||||
0x07 0x00e8,,0x00a4,KEY_PLAYPAUSE,3,0x0055,KEYCODE_MEDIA_PLAY_PAUSE,
|
||||
0x07 0x00e9,,0x00a6,KEY_STOPCD,3,0x0056,KEYCODE_MEDIA_STOP,
|
||||
0x07 0x00ea,,0x00a5,KEY_PREVIOUSSONG,3,0x0058,KEYCODE_MEDIA_PREVIOUS,
|
||||
0x07 0x00eb,,0x00a3,KEY_NEXTSONG,3,0x0057,KEYCODE_MEDIA_NEXT,
|
||||
0x07 0x00ec,,0x00a1,KEY_EJECTCD,3,0x0081,KEYCODE_MEDIA_EJECT,
|
||||
0x07 0x00ed,,0x0073,KEY_VOLUMEUP,1.6,0x0018,KEYCODE_VOLUME_UP,
|
||||
0x07 0x00ee,,0x0072,KEY_VOLUMEDOWN,1.6,0x0019,KEYCODE_VOLUME_DOWN,
|
||||
0x07 0x00ef,,0x0071,KEY_MUTE,3,0x00a4,KEYCODE_VOLUME_MUTE,
|
||||
0x07 0x00f0,,0x0096,KEY_WWW,1.6,0x0040,KEYCODE_EXPLORER,
|
||||
0x07 0x00f1,,0x009e,KEY_BACK,1.6,0x0004,KEYCODE_BACK,
|
||||
0x07 0x00f2,,0x009f,KEY_FORWARD,3,0x007d,KEYCODE_FORWARD,
|
||||
0x07 0x00f3,,0x0080,KEY_STOP,3,0x0056,KEYCODE_MEDIA_STOP,
|
||||
0x07 0x00f4,,0x0088,KEY_FIND,,,,
|
||||
0x07 0x00f5,,0x00b1,KEY_SCROLLUP,3,0x005c,KEYCODE_PAGE_UP,
|
||||
0x07 0x00f6,,0x00b2,KEY_SCROLLDOWN,3,0x005d,KEYCODE_PAGE_DOWN,
|
||||
0x07 0x00f7,,0x00b0,KEY_EDIT,,,,
|
||||
0x07 0x00f8,,0x008e,KEY_SLEEP,,,,
|
||||
0x07 0x00f9,,0x0098,KEY_COFFEE,4,0x001a,KEYCODE_POWER,
|
||||
0x07 0x00fa,,0x00ad,KEY_REFRESH,,,,
|
||||
0x07 0x00fb,,0x008c,KEY_CALC,4.0.3,0x00d2,KEYCODE_CALCULATOR,
|
Can't render this file because it contains an unexpected character in line 54 and column 28.
|
|
@ -0,0 +1,126 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import logging
|
||||
import os
|
||||
from socket import *
|
||||
import fcntl
|
||||
import time
|
||||
from multiprocessing import Process
|
||||
|
||||
fifo = '/tmp/process_fifo.txt'
|
||||
# Setup simple logging
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
||||
# Process1 logic
|
||||
def process1():
|
||||
process1_logger = logging.getLogger('process1')
|
||||
process1_logger.info(f"Pid:{os.getpid()}")
|
||||
|
||||
|
||||
#''代表服务器为 localhost
|
||||
myHost = ''
|
||||
#在一个非保留端口号上进行监听
|
||||
myPort = 50009
|
||||
#设置一个TCP socket对象
|
||||
sockobj = socket(AF_INET, SOCK_STREAM)
|
||||
#绑定端口号
|
||||
sockobj.bind((myHost, myPort))
|
||||
#监听,允许5个连结
|
||||
sockobj.listen(5)
|
||||
#直到进程结束时才结束循环
|
||||
while True:
|
||||
try:
|
||||
#等待客户端连接
|
||||
connection, address = sockobj.accept()
|
||||
#连接是一个新的socket
|
||||
print ('Server connected by', address)
|
||||
while True:
|
||||
#读取客户端套接字的下一行
|
||||
data = connection.recv(1024)
|
||||
#如果没有数量的话,那么跳出循环
|
||||
if not data: break
|
||||
|
||||
if data == "hid open":
|
||||
os.popen('ls /sys/class/udc | xargs echo > /sys/kernel/config/usb_gadget/g1/UDC')
|
||||
print("hid open")
|
||||
elif data == "hid close":
|
||||
os.popen('echo > /sys/kernel/config/usb_gadget/g1/UDC')
|
||||
print("hid close")
|
||||
else:
|
||||
print(data)
|
||||
file = os.open(fifo, os.O_WRONLY)
|
||||
#data = 'hello'
|
||||
os.write(file,data)
|
||||
process1_logger.info(f"Writing: {data}")
|
||||
os.close(file)
|
||||
#发送一个回复至客户端
|
||||
connection.send(b'server => ' + data)
|
||||
#当socket关闭时eof
|
||||
connection.close()
|
||||
except:
|
||||
# Log completion
|
||||
process1_logger.info("Finished process 1")
|
||||
|
||||
# Process2 logic
|
||||
def process2():
|
||||
process2_logger = logging.getLogger('process2')
|
||||
process2_logger.info(f"Pid:{os.getpid()}")
|
||||
|
||||
# Keep attempting to open the fifo, ignore race condition failures
|
||||
while True:
|
||||
try:
|
||||
file = os.open(fifo, os.O_RDONLY | os.O_NONBLOCK)
|
||||
fcntl.fcntl(file, fcntl.F_SETFL , os.O_NONBLOCK)
|
||||
break
|
||||
except:
|
||||
pass
|
||||
|
||||
while True:
|
||||
try:
|
||||
report = os.read(file,1024)
|
||||
if report != b'':
|
||||
fd = open('/home/qiurui/Documents/project/keyboard-hook/usr/bin/test.txt','rb+')
|
||||
process2_logger.info(f"Writing {report}")
|
||||
fd.write(report)
|
||||
fd.flush()
|
||||
fd.close()
|
||||
except:
|
||||
pass
|
||||
os.close(file)
|
||||
# Log completion
|
||||
process2_logger.info("Finished process 2")
|
||||
|
||||
|
||||
# Main
|
||||
def main():
|
||||
if not os.path.exists(fifo):
|
||||
# Create a fifo, os.mkfifo will block until there is a reader (process2)
|
||||
os.mkfifo(fifo)
|
||||
|
||||
# Setup parent logger and log pid
|
||||
parent_logger = logging.getLogger('parent')
|
||||
parent_logger.info(f"Pid:{os.getpid()}")
|
||||
|
||||
# Setup processes
|
||||
procs = [Process(target=process1), Process(target=process2)]
|
||||
|
||||
# Start processes
|
||||
for proc in procs:
|
||||
proc.start()
|
||||
|
||||
# Run to completion
|
||||
#for proc in procs:
|
||||
# proc.join()
|
||||
|
||||
timeout = 100
|
||||
time.sleep(100)
|
||||
|
||||
# Run to completion
|
||||
for proc in procs:
|
||||
proc.kill()
|
||||
|
||||
os.unlink(fifo)
|
||||
|
||||
# Execute main
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
Reference in New Issue