mirror of
https://github.com/meshtastic/firmware.git
synced 2025-04-29 11:01:15 +00:00

Implements an input driver utilising the MPR121 Touch IC and is compatible with common MPR121 keypad PCB's. - Implements a "candybar" phone style 12-key keypad - multiple taps to rotate through the character set - longpress for navigation keys - keymap to allow arbitrary routing of MPR121 pin to button configuration - extendable to other key functions - Integrates with the existing kbI2cBase implementation - Works with CannedMessageModule Freetext mode - Can be used with common MPR121 boards, such as https://www.amazon.com/MPR121-Capacitive-Keyboard-Buttons-Sensitive/dp/B083R89CHB/ref=sr_1_6 - Of use for PCB based radios, where some form of low surface area low component freetext input is required, but also without consuming too many IO pins. - Tested on a T3S3 connected to Wire1 (Second) interface. - Demonstration of functionality: https://youtu.be/UI6QP6nGvhY
25 lines
499 B
C++
25 lines
499 B
C++
#pragma once
|
|
|
|
#include "BBQ10Keyboard.h"
|
|
#include "InputBroker.h"
|
|
#include "MPR121Keyboard.h"
|
|
#include "Wire.h"
|
|
#include "concurrency/OSThread.h"
|
|
|
|
class KbI2cBase : public Observable<const InputEvent *>, public concurrency::OSThread
|
|
{
|
|
public:
|
|
explicit KbI2cBase(const char *name);
|
|
|
|
protected:
|
|
virtual int32_t runOnce() override;
|
|
|
|
private:
|
|
const char *_originName;
|
|
|
|
TwoWire *i2cBus = 0;
|
|
|
|
BBQ10Keyboard Q10keyboard;
|
|
MPR121Keyboard MPRkeyboard;
|
|
bool is_sym = false;
|
|
}; |