8254bc7d50
- 在 CMakeLists.txt 中添加 ui_Screen3.c 源文件以支持新屏幕 - 新增 ui_events.c 和 ui_events.h,定义音量控制按钮的点击事件处理函数 - 实现 ui_Screen3.c,构建第三屏幕的 UI 组件和事件回调 - 更新 ui.c 以初始化和加载第三屏幕 - 修改 ble_hid.c 和 ble_hid.h,添加消费者控制功能以支持音量调节 - 更新相关头文件,确保新屏幕与现有结构兼容
98 lines
1.7 KiB
C
98 lines
1.7 KiB
C
#include "ui_handlers.h"
|
|
|
|
#include <stdbool.h>
|
|
|
|
#include "ble_hid.h"
|
|
#include "boot_button.h"
|
|
#include "esp_log.h"
|
|
#include "ui_events.h"
|
|
|
|
static const char *TAG = "ui_handlers";
|
|
|
|
static void send_hid_combo_or_warn(uint8_t modifier, uint8_t keycode)
|
|
{
|
|
if (ble_hid_ready()) {
|
|
ble_hid_send_combo(modifier, keycode);
|
|
} else {
|
|
ESP_LOGW(TAG, "HID not ready");
|
|
}
|
|
}
|
|
|
|
static void send_consumer_or_warn(uint16_t usage)
|
|
{
|
|
if (ble_hid_ready()) {
|
|
ble_hid_send_consumer(usage);
|
|
} else {
|
|
ESP_LOGW(TAG, "HID not ready");
|
|
}
|
|
}
|
|
|
|
static void on_boot_press(void)
|
|
{
|
|
send_hid_combo_or_warn(0, HID_KEY_C);
|
|
}
|
|
|
|
void ui_handlers_init(void)
|
|
{
|
|
boot_button_init(on_boot_press);
|
|
}
|
|
|
|
void update_year_action(lv_event_t * e)
|
|
{
|
|
(void)e;
|
|
}
|
|
|
|
void click_button_two(lv_event_t * e)
|
|
{
|
|
(void)e;
|
|
send_hid_combo_or_warn(HID_MOD_LCTRL, HID_KEY_C);
|
|
}
|
|
|
|
void click_button_three(lv_event_t * e)
|
|
{
|
|
(void)e;
|
|
send_hid_combo_or_warn(HID_MOD_LCTRL, HID_KEY_V);
|
|
}
|
|
|
|
void click_button_one(lv_event_t * e)
|
|
{
|
|
(void)e;
|
|
send_hid_combo_or_warn(HID_MOD_LCTRL, HID_KEY_X);
|
|
}
|
|
|
|
void click_consumer_vol_up(lv_event_t * e)
|
|
{
|
|
(void)e;
|
|
send_consumer_or_warn(HID_CONSUMER_VOLUME_UP);
|
|
}
|
|
|
|
void click_consumer_vol_down(lv_event_t * e)
|
|
{
|
|
(void)e;
|
|
send_consumer_or_warn(HID_CONSUMER_VOLUME_DOWN);
|
|
}
|
|
|
|
void click_consumer_mute(lv_event_t * e)
|
|
{
|
|
(void)e;
|
|
send_consumer_or_warn(HID_CONSUMER_MUTE);
|
|
}
|
|
|
|
void click_consumer_play_pause(lv_event_t * e)
|
|
{
|
|
(void)e;
|
|
send_consumer_or_warn(HID_CONSUMER_PLAY_PAUSE);
|
|
}
|
|
|
|
void click_consumer_prev(lv_event_t * e)
|
|
{
|
|
(void)e;
|
|
send_consumer_or_warn(HID_CONSUMER_SCAN_PREVIOUS);
|
|
}
|
|
|
|
void click_consumer_next(lv_event_t * e)
|
|
{
|
|
(void)e;
|
|
send_consumer_or_warn(HID_CONSUMER_SCAN_NEXT);
|
|
}
|