[Core] Quantum Painter - LVGL Integration
Description
This PR aims to integrate LVGL (Light and Versatile Embedded Graphics Library) into QMK by utilizing Quantum Painter's APIs and drivers.
This PR includes the following:
- Addition of LVGL v8.2 as a submodule.
- Hooking LVGL internal ticks into quantum's main loop by using deferred executions.
- Public API to attach/detach a QP display.
- Enable the use of a
lv_conf.huser defined file to enable/disable features, much like the rest of the ChibiOS configs. (Courtesy of @tzarc, thanks Tzarc!) - Documentation of the feature
- Onekey keymap of the feature.
Worth mentioning that English isn't my first language, so I expect to bounce with maintainers the wording of the documentation....
Types of Changes
- [x] Core
- [ ] Bugfix
- [x] New feature
- [ ] Enhancement/optimization
- [ ] Keyboard (addition or update)
- [x] Keymap/layout/userspace (addition or update)
- [x] Documentation
Issues Fixed or Closed by This PR
Checklist
- [x] My code follows the code style of this project: C, Python
- [x] I have read the PR Checklist document and have made the appropriate changes.
- [x] My change requires a change to the documentation.
- [x] I have updated the documentation accordingly.
- [x] I have read the CONTRIBUTING document.
- [x] I have added tests to cover my changes.
- [x] I have tested the changes and verified that they work and don't break anything (as well as I can manage).
We'll need changes to the root Makefile too, specifically for handling submodules.
I think that may need to go to master in order to deal with swapping branches and the like, people are likely going to end up with an lvgl directory otherwise, and end up adding it to their master-based branches.
And, of course, we'll need a qmk/lvgl mirror.
Would also be good if you could incorporate your jpe230/lvgl_makefile_changes modifications too. We can backport the appropriate lines to master afterwards.