pinephone-keyboard/TODO
Ondrej Jirman 6a5fe581b9 Implement flashing over I2C and user/stock firmware support
I2C register layout changed a bit to make various operations easier
to implement in FW and for the user.

Flashing/debugging tools now share more code. Firmware is now more
configurable (it's now possible to compile-out various features).

Self-testing for column-shorts is implemented.

Firmware is optimized for low power consumption.
2021-06-28 15:09:47 +02:00

55 lines
1.8 KiB
Text

Firmware
--------
- implement I2C configuration options
- disable keyboard matrix scanning
- only enable USB in stock FW upon request over I2C (idling USB stack takes
about 0.6mA on top of 1.8mA baseline)
- first I2C TX after switch to USER firmware after flasging over I2C fails,
subsequent ones work
- also power consumption indicates power consumption of the sotck firmware
so maybe we just sleep in stock instead of switching after flashing?
- power measurement / optimization
- currently with no USB stack and in constant PD mode: 1.8mA
- theoretical lower limit 0.5mA (no idea how they achieve it)
Charger behavior
----------------
- does the charger turn off VOUT after some period of low load?
- does it enable it again to see if there's a need for it?
- this auto-off behavior will kill the power to the keyboard
controller, so we need a way to detect it and power the controller
from the pinephone side by enabling VBUS.
- tricky!
- or make the user keep pressing the kb power button to use the
keyboard for a while, like in a train conductor has to in a train :)
- not good!
Userspace input device daemon
-----------------------------
- allow to read keymap config from a file instead of compiling it in
- improve combo key handling
- sticky keys entry mode?
- add various modal modes:
- show modal hints on the display
- write to linux console framebuffer directly
- run a generic process/script (eg. to show mode in i3 status bar)
Modes:
- navigation mode arrows work as arrows without holding Fn key, holding
Fn key inverts the meaning to primary (so Fn+Up types a 'dot')
- sticky Fn mode (all keys act as if Fn is being held)
- sticky keys mode (build a multi-key shortcut gradually, without having to
hold multiple keys at once)
- ???