alpha
Login
or
Join now
jmrp.io
/
kleidos
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
[READ-ONLY] Mirror of https://github.com/jmrplens/kleidos. Kleidos — Hardware BLE password manager for ESP32-S3 (M5StickC Plus2, StickS3, M5Stack Gray, T-Deck, Cardputer)
jmrplens.github.io/kleidos/
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
Overview
Issues
Pulls
Pipelines
kleidos
/
src
/
drivers
/
keyboard
/
at
main
10 files
José M. Requena Plens
refactor(keyboard): resolve the controller via the factory and consume it through IKeyboardController
8d ago
fd2377da
i_keyboard_controller.h
refactor(keyboard): resolve the controller via the factory and consume it through IKeyboardController Wire the new chip abstraction into the runtime, mirroring BoardDef::imu: - Tca8418 and LilygoKeyboard now implement IKeyboardController (init/isAvailable/ name) and add a comms + register read/write selfTest. The TCA8418 self-test does a functional CFG read, a write-readback-with-restore on the unused COL8-9 debounce register, and a FIFO sanity read; the register-less LilyGo proves an address ACK + benign read and notes it has no write path. - BoardDef gains a mutable keyboardController slot, populated at HAL bootstrap by createKeyboardController (local + T-Deck backends), exactly like imu. - The CardputerKeyboard / TDeckKeyboard wrappers no longer own a concrete driver instance: they consume board::get().keyboardController via IKeyboardController*. The app-facing BoardDef::keyboard (KeyboardInput*) contract is unchanged, so the Cardputer Fn layer + Backspace-as-BtnB and the T-Deck keymap behave identically. Claude-Session: https://claude.ai/code/session_01SV58JXhfxhhc9DC6vdjBo4
1 week ago
keyboard_factory.cpp
feat(keyboard): add IKeyboardController interface, probe factory, and self-test helpers Introduce a chip-level keyboard-controller abstraction that brings the keyboard drivers up to the PMIC/RTC/IMU bar, mirroring the IMU factory work: - IKeyboardController: a minimal common core (init/isAvailable/name/selfTest) plus capability-style optional accessors, since the two chips do not share an event model (TCA8418 raw matrix FIFO vs LilyGo decoded keycode + backlight). - NullKeyboardController: the never-nullptr no-op returned on no-keyboard boards. - keyboard_factory: createKeyboardController(address, intPin) probes the internal I2C bus and returns the matching driver. Detection is honest: the TCA8418 has no chip-id register (NXP datasheet), so identity is a KEYBOARD_TYPE_TCA8418-gated address-ACK + functional CFG read; the register-less LilyGo C3 is a KEYBOARD_TYPE_LILYGO-gated address ACK + benign read. classifyKeyboard is a pure, natively testable decision seam; an un-probed family can never false-match. - keyboard_selftest: pure write-verified + FIFO-plausible helpers. - KEYBOARD_TYPE_TCA8418 / KEYBOARD_TYPE_LILYGO gating flags mirror IMU_TYPE_*. Claude-Session: https://claude.ai/code/session_01SV58JXhfxhhc9DC6vdjBo4
1 week ago
keyboard_factory.h
feat(keyboard): add IKeyboardController interface, probe factory, and self-test helpers Introduce a chip-level keyboard-controller abstraction that brings the keyboard drivers up to the PMIC/RTC/IMU bar, mirroring the IMU factory work: - IKeyboardController: a minimal common core (init/isAvailable/name/selfTest) plus capability-style optional accessors, since the two chips do not share an event model (TCA8418 raw matrix FIFO vs LilyGo decoded keycode + backlight). - NullKeyboardController: the never-nullptr no-op returned on no-keyboard boards. - keyboard_factory: createKeyboardController(address, intPin) probes the internal I2C bus and returns the matching driver. Detection is honest: the TCA8418 has no chip-id register (NXP datasheet), so identity is a KEYBOARD_TYPE_TCA8418-gated address-ACK + functional CFG read; the register-less LilyGo C3 is a KEYBOARD_TYPE_LILYGO-gated address ACK + benign read. classifyKeyboard is a pure, natively testable decision seam; an un-probed family can never false-match. - keyboard_selftest: pure write-verified + FIFO-plausible helpers. - KEYBOARD_TYPE_TCA8418 / KEYBOARD_TYPE_LILYGO gating flags mirror IMU_TYPE_*. Claude-Session: https://claude.ai/code/session_01SV58JXhfxhhc9DC6vdjBo4
1 week ago
keyboard_selftest.h
feat(keyboard): add IKeyboardController interface, probe factory, and self-test helpers Introduce a chip-level keyboard-controller abstraction that brings the keyboard drivers up to the PMIC/RTC/IMU bar, mirroring the IMU factory work: - IKeyboardController: a minimal common core (init/isAvailable/name/selfTest) plus capability-style optional accessors, since the two chips do not share an event model (TCA8418 raw matrix FIFO vs LilyGo decoded keycode + backlight). - NullKeyboardController: the never-nullptr no-op returned on no-keyboard boards. - keyboard_factory: createKeyboardController(address, intPin) probes the internal I2C bus and returns the matching driver. Detection is honest: the TCA8418 has no chip-id register (NXP datasheet), so identity is a KEYBOARD_TYPE_TCA8418-gated address-ACK + functional CFG read; the register-less LilyGo C3 is a KEYBOARD_TYPE_LILYGO-gated address ACK + benign read. classifyKeyboard is a pure, natively testable decision seam; an un-probed family can never false-match. - keyboard_selftest: pure write-verified + FIFO-plausible helpers. - KEYBOARD_TYPE_TCA8418 / KEYBOARD_TYPE_LILYGO gating flags mirror IMU_TYPE_*. Claude-Session: https://claude.ai/code/session_01SV58JXhfxhhc9DC6vdjBo4
1 week ago
lilygo_keyboard.cpp
refactor(keyboard): resolve the controller via the factory and consume it through IKeyboardController Wire the new chip abstraction into the runtime, mirroring BoardDef::imu: - Tca8418 and LilygoKeyboard now implement IKeyboardController (init/isAvailable/ name) and add a comms + register read/write selfTest. The TCA8418 self-test does a functional CFG read, a write-readback-with-restore on the unused COL8-9 debounce register, and a FIFO sanity read; the register-less LilyGo proves an address ACK + benign read and notes it has no write path. - BoardDef gains a mutable keyboardController slot, populated at HAL bootstrap by createKeyboardController (local + T-Deck backends), exactly like imu. - The CardputerKeyboard / TDeckKeyboard wrappers no longer own a concrete driver instance: they consume board::get().keyboardController via IKeyboardController*. The app-facing BoardDef::keyboard (KeyboardInput*) contract is unchanged, so the Cardputer Fn layer + Backspace-as-BtnB and the T-Deck keymap behave identically. Claude-Session: https://claude.ai/code/session_01SV58JXhfxhhc9DC6vdjBo4
1 week ago
lilygo_keyboard.h
refactor(keyboard): resolve the controller via the factory and consume it through IKeyboardController Wire the new chip abstraction into the runtime, mirroring BoardDef::imu: - Tca8418 and LilygoKeyboard now implement IKeyboardController (init/isAvailable/ name) and add a comms + register read/write selfTest. The TCA8418 self-test does a functional CFG read, a write-readback-with-restore on the unused COL8-9 debounce register, and a FIFO sanity read; the register-less LilyGo proves an address ACK + benign read and notes it has no write path. - BoardDef gains a mutable keyboardController slot, populated at HAL bootstrap by createKeyboardController (local + T-Deck backends), exactly like imu. - The CardputerKeyboard / TDeckKeyboard wrappers no longer own a concrete driver instance: they consume board::get().keyboardController via IKeyboardController*. The app-facing BoardDef::keyboard (KeyboardInput*) contract is unchanged, so the Cardputer Fn layer + Backspace-as-BtnB and the T-Deck keymap behave identically. Claude-Session: https://claude.ai/code/session_01SV58JXhfxhhc9DC6vdjBo4
1 week ago
null_keyboard_controller.h
feat(keyboard): add IKeyboardController interface, probe factory, and self-test helpers Introduce a chip-level keyboard-controller abstraction that brings the keyboard drivers up to the PMIC/RTC/IMU bar, mirroring the IMU factory work: - IKeyboardController: a minimal common core (init/isAvailable/name/selfTest) plus capability-style optional accessors, since the two chips do not share an event model (TCA8418 raw matrix FIFO vs LilyGo decoded keycode + backlight). - NullKeyboardController: the never-nullptr no-op returned on no-keyboard boards. - keyboard_factory: createKeyboardController(address, intPin) probes the internal I2C bus and returns the matching driver. Detection is honest: the TCA8418 has no chip-id register (NXP datasheet), so identity is a KEYBOARD_TYPE_TCA8418-gated address-ACK + functional CFG read; the register-less LilyGo C3 is a KEYBOARD_TYPE_LILYGO-gated address ACK + benign read. classifyKeyboard is a pure, natively testable decision seam; an un-probed family can never false-match. - keyboard_selftest: pure write-verified + FIFO-plausible helpers. - KEYBOARD_TYPE_TCA8418 / KEYBOARD_TYPE_LILYGO gating flags mirror IMU_TYPE_*. Claude-Session: https://claude.ai/code/session_01SV58JXhfxhhc9DC6vdjBo4
1 week ago
tca8418.cpp
refactor(keyboard): resolve the controller via the factory and consume it through IKeyboardController Wire the new chip abstraction into the runtime, mirroring BoardDef::imu: - Tca8418 and LilygoKeyboard now implement IKeyboardController (init/isAvailable/ name) and add a comms + register read/write selfTest. The TCA8418 self-test does a functional CFG read, a write-readback-with-restore on the unused COL8-9 debounce register, and a FIFO sanity read; the register-less LilyGo proves an address ACK + benign read and notes it has no write path. - BoardDef gains a mutable keyboardController slot, populated at HAL bootstrap by createKeyboardController (local + T-Deck backends), exactly like imu. - The CardputerKeyboard / TDeckKeyboard wrappers no longer own a concrete driver instance: they consume board::get().keyboardController via IKeyboardController*. The app-facing BoardDef::keyboard (KeyboardInput*) contract is unchanged, so the Cardputer Fn layer + Backspace-as-BtnB and the T-Deck keymap behave identically. Claude-Session: https://claude.ai/code/session_01SV58JXhfxhhc9DC6vdjBo4
1 week ago
tca8418.h
refactor(keyboard): resolve the controller via the factory and consume it through IKeyboardController Wire the new chip abstraction into the runtime, mirroring BoardDef::imu: - Tca8418 and LilygoKeyboard now implement IKeyboardController (init/isAvailable/ name) and add a comms + register read/write selfTest. The TCA8418 self-test does a functional CFG read, a write-readback-with-restore on the unused COL8-9 debounce register, and a FIFO sanity read; the register-less LilyGo proves an address ACK + benign read and notes it has no write path. - BoardDef gains a mutable keyboardController slot, populated at HAL bootstrap by createKeyboardController (local + T-Deck backends), exactly like imu. - The CardputerKeyboard / TDeckKeyboard wrappers no longer own a concrete driver instance: they consume board::get().keyboardController via IKeyboardController*. The app-facing BoardDef::keyboard (KeyboardInput*) contract is unchanged, so the Cardputer Fn layer + Backspace-as-BtnB and the T-Deck keymap behave identically. Claude-Session: https://claude.ai/code/session_01SV58JXhfxhhc9DC6vdjBo4
1 week ago
tca8418_regs.h
feat(keyboard): add IKeyboardController interface, probe factory, and self-test helpers Introduce a chip-level keyboard-controller abstraction that brings the keyboard drivers up to the PMIC/RTC/IMU bar, mirroring the IMU factory work: - IKeyboardController: a minimal common core (init/isAvailable/name/selfTest) plus capability-style optional accessors, since the two chips do not share an event model (TCA8418 raw matrix FIFO vs LilyGo decoded keycode + backlight). - NullKeyboardController: the never-nullptr no-op returned on no-keyboard boards. - keyboard_factory: createKeyboardController(address, intPin) probes the internal I2C bus and returns the matching driver. Detection is honest: the TCA8418 has no chip-id register (NXP datasheet), so identity is a KEYBOARD_TYPE_TCA8418-gated address-ACK + functional CFG read; the register-less LilyGo C3 is a KEYBOARD_TYPE_LILYGO-gated address ACK + benign read. classifyKeyboard is a pure, natively testable decision seam; an un-probed family can never false-match. - keyboard_selftest: pure write-verified + FIFO-plausible helpers. - KEYBOARD_TYPE_TCA8418 / KEYBOARD_TYPE_LILYGO gating flags mirror IMU_TYPE_*. Claude-Session: https://claude.ai/code/session_01SV58JXhfxhhc9DC6vdjBo4
1 week ago