Browse Source

add: 发送原始键盘数据

chenxuuu 4 years ago
parent
commit
ce512b3da9

+ 24 - 0
application/src/luat_lib_usbapp.c

@@ -111,6 +111,29 @@ static int l_usb_vhid_upload(lua_State* L) {
     return 1;
 }
 
+/*
+USB HID设备上传数据
+@api usbapp.rawKey(id, data)
+@int 设备id,默认为0
+@string 数据,需为定长的8字节
+@return bool 成功返回true,否则返回false
+@usage
+-- HID上传数据
+usbapp.rawKey(0, string.char(0x08,0,0x15,0,0,0,0,0)) -- usb hid会模拟敲出win+r
+*/
+static int l_usb_vhid_upload_raw(lua_State* L) {
+    size_t len;
+    const char* data = luaL_checklstring(L, 2, &len);
+    if (len > 8) {
+        luat_usb_app_vhid_upload_raw(USB_ID0, data);
+        lua_pushboolean(L, 1);
+    }
+    else {
+        lua_pushboolean(L, 0);
+    }
+    return 1;
+}
+
 /*
 USB HID设备取消上传数据
 @api usbapp.vhid_cancel_upload(id)
@@ -156,6 +179,7 @@ static const rotable_Reg reg_usbapp[] =
     { "start",              l_usb_start,                0},
     { "stop",               l_usb_stop,                 0},
     { "vhid_upload",        l_usb_vhid_upload,          0},
+    { "rawKey",        l_usb_vhid_upload_raw,          0},
     { "vhid_cancel_upload", l_usb_vhid_cancel_upload,   0},
 	{ "udisk_attach_sdhc", l_usb_udisk_attach_sdhc,   0},
 	{ "udisk_detach_sdhc", l_usb_udisk_detach_sdhc,   0},

+ 5 - 0
application/src/luat_usb_app_air105.c

@@ -48,6 +48,11 @@ void luat_usb_app_vhid_upload(uint8_t usb_id, uint8_t *key_data, uint16_t len)
 	Core_VHIDUploadData(usb_id, key_data, len);
 }
 
+void luat_usb_app_vhid_upload_raw(uint8_t usb_id, uint8_t *key_data)
+{
+	Core_VHIDSendRawData(usb_id, key_data,8);
+}
+
 void luat_usb_app_vhid_cancel_upload(uint8_t usb_id)
 {
 	Core_VHIDUploadStop(usb_id);

+ 1 - 0
bsp/common/include/core_service.h

@@ -73,6 +73,7 @@ void Core_VUartBufferTxStop(uint8_t UartID);
 
 void Core_VHIDInit(uint8_t USB_ID, CBFuncEx_t CB);
 void Core_VHIDUploadData(uint8_t USB_ID, uint8_t *Data, uint16_t Len);
+void Core_VHIDSendRawData(uint8_t USB_ID, uint8_t *Data, uint16_t Len);
 void Core_VHIDUploadStop(uint8_t USB_ID);
 
 void Core_UDiskAttachSDHC(uint8_t USB_ID, void *pCtrl);