随机按键

This commit is contained in:
zqm
2026-04-08 10:02:53 +08:00
parent a69243c2ac
commit 35ba667583
16 changed files with 422 additions and 374 deletions

View File

@@ -1 +1 @@
35af5b6a4bbd88a56ee30606a679d127 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/my_usb_project.bin
9b4946c83183965c8ab46347e0ecc8c8 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/my_usb_project.bin

File diff suppressed because it is too large Load Diff

View File

@@ -1 +1 @@
380d7e9130133af64c969aa2dae836ffda8794ce
a69243c2acd34a48bbd8f90d2d729eb641ffe99e

View File

@@ -244,3 +244,11 @@
47 352 7972558478401734 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
11 79 7972560142496579 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
11 79 7972560142496579 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
31 199 7973144869121109 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
31 199 7973144869121109 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
19 127 7973157305218469 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
19 127 7973157305218469 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
24 699 7973167525274860 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
24 699 7973167525274860 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
28 310 7973168080001169 esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4
28 310 7973168080001169 D:/Projects/trunk/JoyD/ESP32/my_usb_project/build/bootloader/esp-idf/esptool_py/CMakeFiles/bootloader_check_size 3e73059819fce7a4

View File

@@ -3825,7 +3825,7 @@ build esp-idf/esp_bootloader_format/install/strip: phony esp-idf/esp_bootloader_
build cmake_object_order_depends_target___idf_esp_app_format: phony || cmake_object_order_depends_target___idf_bootloader_support
build esp-idf/esp_app_format/CMakeFiles/__idf_esp_app_format.dir/esp_app_desc.c.obj: C_COMPILER____idf_esp_app_format_unscanned_ D$:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/esp_app_format/esp_app_desc.c || cmake_object_order_depends_target___idf_esp_app_format
DEFINES = -DESP_PLATFORM -DIDF_VER=\"v5.2.6-dirty\" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -D_GLIBCXX_HAVE_POSIX_SEMAPHORE -D_GLIBCXX_USE_POSIX_SEMAPHORE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -D PROJECT_NAME=\"my_usb_project\" -DPROJECT_VER=\"380d7e9-dirty\"
DEFINES = -DESP_PLATFORM -DIDF_VER=\"v5.2.6-dirty\" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -D_GLIBCXX_HAVE_POSIX_SEMAPHORE -D_GLIBCXX_USE_POSIX_SEMAPHORE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -D PROJECT_NAME=\"my_usb_project\" -DPROJECT_VER=\"a69243c-dirty\"
DEP_FILE = esp-idf\esp_app_format\CMakeFiles\__idf_esp_app_format.dir\esp_app_desc.c.obj.d
FLAGS = -mlongcalls -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-bzero -fno-builtin-stpcpy -fno-builtin-strncpy -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -Og -fno-shrink-wrap -fmacro-prefix-map=D:/Projects/trunk/JoyD/ESP32/my_usb_project=. -fmacro-prefix-map=D:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu17 -Wno-old-style-declaration
INCLUDES = -ID:/Projects/trunk/JoyD/ESP32/my_usb_project/build/config -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/esp_app_format/include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/newlib/platform_include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/freertos/config/include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/freertos/config/include/freertos -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/freertos/config/xtensa/include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/freertos/FreeRTOS-Kernel/include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/freertos/esp_additions/include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/esp_hw_support/include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/esp_hw_support/include/soc -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/esp_hw_support/include/soc/esp32s3 -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/esp_hw_support/port/esp32s3/. -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/heap/include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/log/include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/soc/include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/soc/esp32s3 -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/soc/esp32s3/include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/hal/platform_port/include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/hal/esp32s3/include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/hal/include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/esp_rom/include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/esp_rom/include/esp32s3 -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/esp_rom/esp32s3 -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/esp_common/include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/esp_system/include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/esp_system/port/soc -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/esp_system/port/include/private -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/xtensa/esp32s3/include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/xtensa/include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/xtensa/deprecated_include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/lwip/include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/lwip/include/apps -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/lwip/include/apps/sntp -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/lwip/lwip/src/include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/lwip/port/include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/lwip/port/freertos/include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/lwip/port/esp32xx/include -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/lwip/port/esp32xx/include/arch -ID:/DiskC/ProgramFiles/Espressif/frameworks/esp-idf-v5.2.6/components/lwip/port/esp32xx/include/sys

File diff suppressed because one or more lines are too long

View File

@@ -571,6 +571,7 @@ SECTIONS
} >default_rodata_seg
. = ALIGN(0x10000);
. = ALIGN(0x10000);
. = ALIGN(0x10000);
.flash.rodata : ALIGN(0x10)
{
_flash_rodata_start = ABSOLUTE(.);

View File

@@ -26397,6 +26397,7 @@ LOAD D:/DiskC/ProgramFiles/Espressif/tools/xtensa-esp-elf/esp-13.2.0_20250707/xt
*(.rodata_custom_desc .rodata_custom_desc.*)
0x3c020120 . = ALIGN (ALIGNOF (.flash.rodata))
0x3c030000 . = ALIGN (0x10000)
0x3c030000 . = ALIGN (0x10000)
.flash.rodata 0x3c020120 0xb7a8
0x3c020120 _flash_rodata_start = ABSOLUTE (.)

View File

@@ -1,7 +1,7 @@
{
"version": "1.2",
"project_name": "my_usb_project",
"project_version": "380d7e9-dirty",
"project_version": "a69243c-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",

View File

@@ -29,16 +29,21 @@ extern "C" {
#[no_mangle]
extern "C" fn rust_app_main() {
// 初始化代码
send_a_key();
return;
loop {
send_random_key();
// 等待 5 秒
unsafe {
rust_vTaskDelay(5000 * PD_MS_TO_TICKS);
}
}
}
#[export_name = "rust_usb_callback"]
pub unsafe extern "C" fn usb_callback(_event: u32) {
}
/// 发送 A 键的按键事件
fn send_a_key() {
/// 发送 A-Z 随机键的按键事件
fn send_random_key() {
// 等待 USB 设备挂载
let mut mounted = false;
for _ in 0..10 {
@@ -55,8 +60,12 @@ fn send_a_key() {
}
if mounted {
// 发送 A 键按下事件
let keycode = [HID_KEY_A, 0, 0, 0, 0, 0];
// 生成随机的 A-Z 键码
let random_value = get_random_u32() % 26;
let random_key = HID_KEY_A + (random_value as u8);
// 发送随机键按下事件
let keycode = [random_key, 0, 0, 0, 0, 0];
unsafe {
rust_send_keyboard_report(REPORT_ID_KEYBOARD, 0, keycode.as_ptr());
}
@@ -66,10 +75,20 @@ fn send_a_key() {
rust_vTaskDelay(50 * PD_MS_TO_TICKS);
}
// 发送 A 键释放事件
// 发送随机键释放事件
let keycode = [0, 0, 0, 0, 0, 0];
unsafe {
rust_send_keyboard_report(REPORT_ID_KEYBOARD, 0, keycode.as_ptr());
}
}
}
/// 获取随机数
fn get_random_u32() -> u32 {
// 使用简单的线性同余生成器
static mut SEED: u32 = 42;
unsafe {
SEED = SEED.wrapping_mul(1103515245).wrapping_add(12345);
SEED
}
}