ESP32鼠标驱动(blehiddevice_demo)【ESP32指向鼠标】
- 其他
- 2025-09-09 02:12:02

ESP32鼠标驱动(ble hid device_demo)【ESP32指向鼠标】
我使用的vscode开发esp32,用的是ESP-IDF v5.12固件,其提供了很多例程,在搜索里面输入“ESP-IDF: Show Examples Projects”,便可看到例程,如下图所示,我选择的是ble hid device_demo,其中包含鼠标的例程,我可以直接使用
例程的效果在main/ble_hidd_demo_main.c中,我们可看到例程的主要函数,如下
void hid_demo_task(void *pvParameters) { vTaskDelay(1000 / portTICK_PERIOD_MS); while(1) { vTaskDelay(2000 / portTICK_PERIOD_MS); if (sec_conn) { ESP_LOGI(HID_DEMO_TAG, "Send the volume"); send_volum_up = true; //uint8_t key_vaule = {HID_KEY_A}; //esp_hidd_send_keyboard_value(hid_conn_id, 0, &key_vaule, 1); esp_hidd_send_consumer_value(hid_conn_id, HID_CONSUMER_VOLUME_UP, true); vTaskDelay(3000 / portTICK_PERIOD_MS); if (send_volum_up) { send_volum_up = false; esp_hidd_send_consumer_value(hid_conn_id, HID_CONSUMER_VOLUME_UP, false); esp_hidd_send_consumer_value(hid_conn_id, HID_CONSUMER_VOLUME_DOWN, true); vTaskDelay(3000 / portTICK_PERIOD_MS); esp_hidd_send_consumer_value(hid_conn_id, HID_CONSUMER_VOLUME_DOWN, false); } } } }主要就是控制电脑的音量,在编译并烧录程序后,连接esp32的蓝牙,变可看到音量的增长与降低。
控制鼠标的函数在main/esp_hidd_prf_api.c中,具体如下,
void esp_hidd_send_mouse_value(uint16_t conn_id, uint8_t mouse_button, int8_t mickeys_x, int8_t mickeys_y) { uint8_t buffer[HID_MOUSE_IN_RPT_LEN]; buffer[0] = mouse_button; // Buttons buffer[1] = mickeys_x; // X buffer[2] = mickeys_y; // Y buffer[3] = 0; // Wheel buffer[4] = 0; // AC Pan hid_dev_send_report(hidd_le_env.gatt_if, conn_id, HID_RPT_ID_MOUSE_IN, HID_REPORT_TYPE_INPUT, HID_MOUSE_IN_RPT_LEN, buffer); return; }buffer[0] = mouse_button;: 将鼠标按钮状态,左右键
buffer[1] = mickeys_x;: 将鼠标在X轴上的移动速度
buffer[2] = mickeys_y;: 将鼠标在Y轴上的移动速度
buffer[3] = 0;: 将鼠标滚轮的移动量
buffer[4] = 0;: 将AC Pan(通常用于水平滚动)的值
鼠标功能的实验在void hid_demo_task(void *pvParameters){}函数中,把音量函数,改为鼠标控制函数便可
ESP32鼠标驱动(blehiddevice_demo)【ESP32指向鼠标】由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“ESP32鼠标驱动(blehiddevice_demo)【ESP32指向鼠标】”