实现键盘动作
This commit is contained in:
@@ -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