mirror of
https://xff.cz/git/pinephone-keyboard
synced 2024-12-22 12:58:48 -05:00
6a5fe581b9
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.
56 lines
1.8 KiB
Plaintext
56 lines
1.8 KiB
Plaintext
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)
|
|
- ???
|
|
|