add test code

This commit is contained in:
qiurui 2024-04-10 17:39:13 +08:00
parent f7d0bcd4ff
commit 2660d7bad9
4 changed files with 551 additions and 0 deletions

177
test/client.py Normal file
View File

@ -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) ##键盘状态 01,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
'''

248
test/scan-code.csv Normal file
View File

@ -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.

126
test/test.py Normal file
View File

@ -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()

0
test/test.txt Normal file
View File