实现键盘动作
This commit is contained in:
@@ -1 +1 @@
|
||||
ac6c4f81e7cb42b3e7774330b11a3e4f D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/my_usb_project.bin
|
||||
70645470755440fd6ae78c81beea77a9 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/my_usb_project.bin
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -1 +1 @@
|
||||
708a7c8bf0dca8daf952a8943c85d5d1e5319e35
|
||||
b69e7f6b153cff3c1f6aad0cae7efe2bdb1139ef
|
||||
|
||||
@@ -118,3 +118,61 @@
|
||||
10570 10751 7973431402851307 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
28 254 7973988033708213 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
28 254 7973988033708213 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
12 76 7973996737498280 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
12 76 7973996737498280 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
12 79 7974001867544917 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
12 79 7974001867544917 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
10 70 7974003513511657 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
10 70 7974003513511657 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
13 82 7974016319736828 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
13 82 7974016319736828 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
13 82 7974018121033601 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
13 82 7974018121033601 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
12 90 7974023189221902 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
12 90 7974023189221902 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
34 204 7974039229823010 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
34 204 7974039229823010 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
23 118 7974040993249886 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
23 118 7974040993249886 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
11 69 7974044999538966 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
11 69 7974044999538966 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
24 152 7974046565208720 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
24 152 7974046565208720 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
10 73 7974059640883965 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
10 73 7974059640883965 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
10 98 7974060035915483 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
10 98 7974060035915483 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
14 94 7974080945077153 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
14 94 7974080945077153 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
14 86 7974081344490856 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
14 86 7974081344490856 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
12 171 7974086255712488 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
12 171 7974086255712488 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
31 117 7974087271807394 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
31 117 7974087271807394 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
50 360 7974092642414257 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
50 360 7974092642414257 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
14 105 7974110211908537 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
14 105 7974110211908537 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
24 135 7974110631094295 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
24 135 7974110631094295 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
12 73 7974114461438477 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
12 73 7974114461438477 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
24 124 7974115243068263 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
24 124 7974115243068263 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
19 160 7974117314985364 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
19 160 7974117314985364 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
20 167 7974119659123756 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
20 167 7974119659123756 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
26 151 7974120714982095 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
26 151 7974120714982095 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
15 109 7974121550145057 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
15 109 7974121550145057 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
13 77 7974122619730602 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
13 77 7974122619730602 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
10 72 7974123750823476 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
10 72 7974123750823476 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
23 91 7974139704553387 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
23 91 7974139704553387 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
17 116 7974140497374632 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
17 116 7974140497374632 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"version": "1.2",
|
||||
"project_name": "my_usb_project",
|
||||
"project_version": "708a7c8-dirty",
|
||||
"project_version": "b69e7f6-dirty",
|
||||
"project_path": "D:/Projects/trunk/JoyD/ESP32/my_usb_project",
|
||||
"idf_path": "D:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6",
|
||||
"build_dir": "D:/Projects/trunk/JoyD/ESP32/my_usb_project/build",
|
||||
|
||||
@@ -17,6 +17,12 @@ static const char *TAG = "USB";
|
||||
#define USB_PID 0x50A6
|
||||
#define USB_BCD 0x0200
|
||||
|
||||
enum {
|
||||
ITF_NUM_KEYBOARD, // 0
|
||||
ITF_NUM_MOUSE, // 1
|
||||
ITF_NUM_TOTAL
|
||||
};
|
||||
|
||||
static tusb_desc_device_t const desc_device =
|
||||
{
|
||||
.bLength = sizeof(tusb_desc_device_t),
|
||||
@@ -35,40 +41,67 @@ static tusb_desc_device_t const desc_device =
|
||||
.bNumConfigurations = 0x01
|
||||
};
|
||||
|
||||
uint8_t const desc_hid_report[] =
|
||||
{
|
||||
TUD_HID_REPORT_DESC_KEYBOARD(HID_REPORT_ID(REPORT_ID_KEYBOARD)),
|
||||
// 独立键盘描述符
|
||||
uint8_t const desc_hid_report_kb[] = {
|
||||
TUD_HID_REPORT_DESC_KEYBOARD(HID_REPORT_ID(REPORT_ID_KEYBOARD))
|
||||
};
|
||||
|
||||
// 独立鼠标描述符
|
||||
uint8_t const desc_hid_report_mouse[] = {
|
||||
TUD_HID_REPORT_DESC_MOUSE(HID_REPORT_ID(REPORT_ID_MOUSE))
|
||||
};
|
||||
|
||||
// 按接口返回正确描述符
|
||||
uint8_t const * tud_hid_descriptor_report_cb(uint8_t instance)
|
||||
{
|
||||
(void) instance;
|
||||
return desc_hid_report;
|
||||
if (instance == ITF_NUM_KEYBOARD) {
|
||||
return desc_hid_report_kb;
|
||||
}
|
||||
if (instance == ITF_NUM_MOUSE) {
|
||||
return desc_hid_report_mouse;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static char const *hid_string_descriptor[] = {
|
||||
(char[]){0x09, 0x04},
|
||||
"久鼎智控",
|
||||
"智控键鼠套装",
|
||||
"1",
|
||||
"HID 智控键盘",
|
||||
"HID 智控鼠标",
|
||||
};
|
||||
|
||||
enum {
|
||||
ITF_NUM_KEYBOARD,
|
||||
ITF_NUM_MOUSE,
|
||||
ITF_NUM_TOTAL
|
||||
(char[]){0x09, 0x04}, // 0: 语言ID
|
||||
"久鼎智控", // 1: 厂商
|
||||
"智控键鼠套装", // 2: 产品
|
||||
"1", // 3: 序列号
|
||||
"HID 智控键盘", // 4: 键盘接口
|
||||
"HID 智控鼠标", // 5: 鼠标接口
|
||||
};
|
||||
|
||||
#define EPNUM_KEYBOARD 0x81
|
||||
#define EPNUM_MOUSE 0x82
|
||||
|
||||
// ==============================
|
||||
// 🔥 这里是修复重点!!!
|
||||
// ==============================
|
||||
static uint8_t const hid_configuration_descriptor[] = {
|
||||
TUD_CONFIG_DESCRIPTOR(1, ITF_NUM_TOTAL, 0, TUSB_DESC_TOTAL_LEN, TUSB_DESC_CONFIG_ATT_REMOTE_WAKEUP, 100),
|
||||
TUD_HID_DESCRIPTOR(ITF_NUM_KEYBOARD, 4, HID_ITF_PROTOCOL_KEYBOARD, sizeof(desc_hid_report), EPNUM_KEYBOARD, CFG_TUD_HID_EP_BUFSIZE, 10),
|
||||
TUD_HID_DESCRIPTOR(ITF_NUM_MOUSE, 5, HID_ITF_PROTOCOL_MOUSE, sizeof(desc_hid_report), EPNUM_MOUSE, CFG_TUD_HID_EP_BUFSIZE, 10)
|
||||
|
||||
// 键盘 HID 接口
|
||||
TUD_HID_DESCRIPTOR(
|
||||
ITF_NUM_KEYBOARD, // 接口号
|
||||
4, // 字符串索引
|
||||
0, // 协议 = 0(必须!)
|
||||
sizeof(desc_hid_report_kb),
|
||||
EPNUM_KEYBOARD,
|
||||
CFG_TUD_HID_EP_BUFSIZE,
|
||||
10
|
||||
),
|
||||
|
||||
// 鼠标 HID 接口
|
||||
TUD_HID_DESCRIPTOR(
|
||||
ITF_NUM_MOUSE, // 接口号
|
||||
5, // 字符串索引
|
||||
0, // 协议 = 0(必须!不能用 MOUSE 协议)
|
||||
sizeof(desc_hid_report_mouse),
|
||||
EPNUM_MOUSE,
|
||||
CFG_TUD_HID_EP_BUFSIZE,
|
||||
10
|
||||
)
|
||||
};
|
||||
|
||||
uint16_t tud_hid_get_report_cb(uint8_t instance, uint8_t report_id, hid_report_type_t report_type, uint8_t* buffer, uint16_t reqlen)
|
||||
@@ -97,11 +130,16 @@ bool rust_is_usb_mounted() {
|
||||
return mounted;
|
||||
}
|
||||
|
||||
//====================================================================
|
||||
// 键盘函数(不动)
|
||||
//====================================================================
|
||||
void rust_send_keyboard_report(uint8_t report_id, uint8_t modifier, uint8_t const* keycode) {
|
||||
tud_hid_keyboard_report(report_id, modifier, keycode);
|
||||
}
|
||||
|
||||
// 暴露鼠标报告函数给 Rust
|
||||
//====================================================================
|
||||
// 鼠标函数(正确 6 参数版)
|
||||
//====================================================================
|
||||
void rust_send_mouse_report(uint8_t report_id, uint8_t buttons, int8_t x, int8_t y, int8_t wheel, int8_t pan) {
|
||||
tud_hid_mouse_report(report_id, buttons, x, y, wheel, pan);
|
||||
}
|
||||
@@ -136,7 +174,7 @@ void app_main(void)
|
||||
.device = &desc_device,
|
||||
.qualifier = NULL,
|
||||
.string = hid_string_descriptor,
|
||||
.string_count = sizeof(hid_string_descriptor) / sizeof(hid_string_descriptor[0]),
|
||||
.string_count = sizeof(hid_string_descriptor)/sizeof(hid_string_descriptor[0]),
|
||||
.full_speed_config = hid_configuration_descriptor,
|
||||
.high_speed_config = NULL,
|
||||
},
|
||||
@@ -149,8 +187,7 @@ void app_main(void)
|
||||
ESP_LOGI(TAG, "✅ USB HID 设备启动成功");
|
||||
ESP_LOGI(TAG, "请连接 USB OTG 线到电脑");
|
||||
|
||||
// 暂时禁用 Rust 应用,先测试 USB 稳定性
|
||||
// rust_app_wrapper_init();
|
||||
rust_app_wrapper_init();
|
||||
|
||||
int count = 0;
|
||||
bool last_mounted = false;
|
||||
@@ -172,4 +209,4 @@ void app_main(void)
|
||||
}
|
||||
count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -32,28 +32,22 @@ extern "C" {
|
||||
|
||||
/// 日志函数
|
||||
fn log_info(message: &'static str) {
|
||||
// 转换 Rust 静态字符串为 C 字符串
|
||||
let tag = b"RustApp\0";
|
||||
|
||||
// 直接使用静态字符串的指针,确保它在整个程序生命周期内有效
|
||||
// 注意:Rust 的字符串字面量已经以 null 结尾
|
||||
let msg_ptr = message.as_ptr();
|
||||
|
||||
let tag = b"RustApp\0";
|
||||
unsafe {
|
||||
rust_esp_log_i(tag.as_ptr(), msg_ptr);
|
||||
rust_esp_log_i(tag.as_ptr(), message.as_ptr());
|
||||
}
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
extern "C" fn rust_app_main() {
|
||||
extern "C" fn rust_app_main() -> !{
|
||||
// 初始化代码 - 添加延迟确保系统稳定
|
||||
unsafe {
|
||||
rust_vTaskDelay(100); // 等待 1 秒让系统稳定
|
||||
}
|
||||
|
||||
log_info("========================");
|
||||
log_info("Rust app started");
|
||||
log_info("========================");
|
||||
log_info("========================\0");
|
||||
log_info("Rust app started\0");
|
||||
log_info("========================\0");
|
||||
|
||||
// 等待 USB 挂载成功
|
||||
wait_usb_mounted();
|
||||
@@ -62,13 +56,13 @@ extern "C" fn rust_app_main() {
|
||||
loop {
|
||||
// 每 5 秒 (500 ticks @ 10ms/tick) 按下一个随机键
|
||||
if tick_count % 500 == 0 {
|
||||
log_info("Sending random key...");
|
||||
log_info("Sending random key...\0");
|
||||
send_random_key();
|
||||
}
|
||||
|
||||
// 每 6 秒 (600 ticks @ 10ms/tick) 随机移动一下鼠标
|
||||
if tick_count % 600 == 0 {
|
||||
log_info("Sending random mouse move...");
|
||||
log_info("Sending random mouse move...\0");
|
||||
send_random_mouse_move();
|
||||
}
|
||||
|
||||
@@ -87,8 +81,8 @@ extern "C" fn rust_app_main() {
|
||||
|
||||
/// 等待 USB 挂载成功
|
||||
fn wait_usb_mounted() {
|
||||
log_info("Waiting for USB to mount...");
|
||||
log_info("Please connect USB OTG cable to host");
|
||||
log_info("Waiting for USB to mount...\0");
|
||||
log_info("Please connect USB OTG cable to host\0");
|
||||
|
||||
let mut retry_count = 0;
|
||||
loop {
|
||||
@@ -97,13 +91,13 @@ fn wait_usb_mounted() {
|
||||
};
|
||||
|
||||
if mounted {
|
||||
log_info("USB mounted successfully!");
|
||||
log_info("USB mounted successfully!\0");
|
||||
break;
|
||||
}
|
||||
|
||||
retry_count += 1;
|
||||
if retry_count % 50 == 0 { // 每 5 秒输出一次
|
||||
log_info("Still waiting for USB connection...");
|
||||
log_info("Still waiting for USB connection...\0");
|
||||
}
|
||||
|
||||
// 喂看门狗,防止复位
|
||||
@@ -126,7 +120,7 @@ fn send_random_key() {
|
||||
};
|
||||
|
||||
if !mounted {
|
||||
log_info("USB not mounted, skipping key press");
|
||||
log_info("USB not mounted, skipping key press\0");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -136,13 +130,13 @@ fn send_random_key() {
|
||||
|
||||
// 发送随机键按下事件
|
||||
let keycode = [random_key, 0, 0, 0, 0, 0];
|
||||
log_info("Sending key press event");
|
||||
log_info("Sending key press event\0");
|
||||
unsafe {
|
||||
rust_send_keyboard_report(REPORT_ID_KEYBOARD, 0, keycode.as_ptr());
|
||||
}
|
||||
|
||||
// 等待 50ms (5 ticks @ 10ms/tick)
|
||||
log_info("Waiting 50ms...");
|
||||
log_info("Waiting 50ms...\0");
|
||||
unsafe {
|
||||
rust_vTaskDelay(5);
|
||||
}
|
||||
@@ -153,13 +147,13 @@ fn send_random_key() {
|
||||
};
|
||||
|
||||
if !mounted {
|
||||
log_info("USB not mounted, skipping key release");
|
||||
log_info("USB not mounted, skipping key release\0");
|
||||
return;
|
||||
}
|
||||
|
||||
// 发送随机键释放事件
|
||||
let keycode = [0, 0, 0, 0, 0, 0];
|
||||
log_info("Sending key release event");
|
||||
log_info("Sending key release event\0");
|
||||
unsafe {
|
||||
rust_send_keyboard_report(REPORT_ID_KEYBOARD, 0, keycode.as_ptr());
|
||||
}
|
||||
@@ -167,22 +161,12 @@ fn send_random_key() {
|
||||
|
||||
/// 发送随机鼠标移动事件
|
||||
fn send_random_mouse_move() {
|
||||
// 检查 USB 是否仍然挂载
|
||||
let mounted = unsafe {
|
||||
rust_is_usb_mounted()
|
||||
};
|
||||
|
||||
if !mounted {
|
||||
log_info("USB not mounted, skipping mouse move");
|
||||
return;
|
||||
}
|
||||
|
||||
// 生成随机的鼠标移动距离 (-10 到 10 之间)
|
||||
let random_x = (get_random_u32() % 21) as i8 - 10;
|
||||
let random_y = (get_random_u32() % 21) as i8 - 10;
|
||||
|
||||
// 发送鼠标移动事件
|
||||
log_info("Sending mouse move event");
|
||||
log_info("Sending mouse move event\0");
|
||||
unsafe {
|
||||
rust_send_mouse_report(REPORT_ID_MOUSE, 0, random_x, random_y, 0, 0);
|
||||
}
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user