Files
tactility/Tactility/Source/lvgl/Keyboard.cpp
T
Shadowtrance 5c78d55b04 Bluetooth (#518)
* 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
2026-05-22 22:49:37 +02:00

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);
}
}
}