5c78d55b04
* Bluetooth LE addition * fixes * use the psram! helps a little on S3 (t-deck) * custom device name * Update symbols.c * Feedback + fixes Fixes external app start/stop server (child devices) Fixes BtManage causing a full system hang upon disabling bt when a device is connected to the host. * updoot * more updoot * move back! * Revert "move back!" This reverts commit d3694365c634acc5db62ac59771c496cb971a727. * fix some of the things * Addressing feedback? hmm * Fixes Bug 1 — Reconnect loop / Reconnect not working fixed Bug 2 — Name-only advertising overwrites HID advertising Bug 3 — BleHidDeviceCtx leak on re-enable Enhancement — HID device auto-start on radio re-enable * stuff... * update for consistency with others * fix crashes and some bonus symbols * a few symbols, i2c speed, cdn message 100kHz i2c speed seems to be more compatible with m5stack modules...and probably in general. cdn message no longer applies * Hide BT Settings when bt not enabled * Addressing things and device fixes * Missed one! * stuff
62 lines
1.6 KiB
C++
62 lines
1.6 KiB
C++
#include "Tactility/lvgl/Keyboard.h"
|
|
#include "Tactility/service/gui/GuiService.h"
|
|
|
|
#include <Tactility/service/espnow/EspNowService.h>
|
|
|
|
namespace tt::lvgl {
|
|
|
|
static lv_indev_t* keyboard_device = nullptr;
|
|
static lv_group_t* pending_keyboard_group = nullptr;
|
|
|
|
void software_keyboard_show(lv_obj_t* textarea) {
|
|
auto gui_service = service::gui::findService();
|
|
if (gui_service != nullptr) {
|
|
gui_service->softwareKeyboardShow(textarea);
|
|
}
|
|
}
|
|
|
|
void software_keyboard_hide() {
|
|
auto gui_service = service::gui::findService();
|
|
if (gui_service != nullptr) {
|
|
gui_service->softwareKeyboardHide();
|
|
}
|
|
}
|
|
|
|
bool software_keyboard_is_enabled() {
|
|
auto gui_service = service::gui::findService();
|
|
if (gui_service != nullptr) {
|
|
return gui_service->softwareKeyboardIsEnabled();
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
void software_keyboard_activate(lv_group_t* group) {
|
|
pending_keyboard_group = group;
|
|
if (keyboard_device != nullptr) {
|
|
lv_indev_set_group(keyboard_device, group);
|
|
}
|
|
}
|
|
|
|
void software_keyboard_deactivate() {
|
|
pending_keyboard_group = nullptr;
|
|
if (keyboard_device != nullptr) {
|
|
lv_indev_set_group(keyboard_device, nullptr);
|
|
}
|
|
}
|
|
|
|
bool hardware_keyboard_is_available() {
|
|
return keyboard_device != nullptr;
|
|
}
|
|
|
|
void hardware_keyboard_set_indev(lv_indev_t* device) {
|
|
keyboard_device = device;
|
|
// If an app already activated a keyboard group while no hardware keyboard was
|
|
// connected, apply the pending group now that the device is available.
|
|
if (device != nullptr && pending_keyboard_group != nullptr) {
|
|
lv_indev_set_group(device, pending_keyboard_group);
|
|
}
|
|
}
|
|
|
|
}
|