No description
Find a file
2021-09-19 13:44:24 +02:00
examples Consider view unlocked unless lock_view matches current view ID 2021-09-19 13:44:24 +02:00
COPYING Initial import 2021-09-12 14:51:07 +02:00
Pipfile Initial import 2021-09-12 14:51:07 +02:00
Pipfile.lock Initial import 2021-09-12 14:51:07 +02:00
README.md Add minimalist C API and notes on integrating 2021-09-18 22:00:03 +02:00
regenerate-examples.sh Add us+de example 2021-09-19 12:58:45 +02:00
sq2lv.c Add minimalist C API and notes on integrating 2021-09-18 22:00:03 +02:00
sq2lv.h Add minimalist C API and notes on integrating 2021-09-18 22:00:03 +02:00
squeek2lvgl.py Consider view unlocked unless lock_view matches current view ID 2021-09-19 13:44:24 +02:00

squeek2lvgl

squeek2lvgl is a Python script and an accompanying C library that make it possible to use squeekboard keyboard layouts with LVGL's keyboard widget. To achieve this, squeekboard's YAML syntax for layout definitions is converted into C files that, together with the library C files, can then be added to an LVGL project.

To access squeekboard's layout files, squeek2lvgl shallowly clones the squeekboard git repository into a temporary directory and purges it before exiting.

Usage

First, set up the virtual Python environment and install the dependencies with

$ pipenv install

Afterwards you can execute the script with pipenv run. Use the -h / --help flag to print detailed usage instructions.

$ pipenv run python squeek2lvgl.py --help
usage: squeek2lvgl.py [-h] --input INPUT [--surround-space-with-arrows] [--generate-scancodes] --output OUTPUT

Convert squeekboard layouts to LVGL-compatible C code.

optional arguments:
  -h, --help            show this help message and exit
  --input INPUT         squeekboard layout to use as input for generation. Has to be a YAML file path relative to data/keyboards. Can be specified
                        multiple times.
  --surround-space-with-arrows
                        insert left / right arrow before / after space key
  --generate-scancodes  also generate scancode tables (only works for US layout currently)
  --output OUTPUT       output directory for generated files

As an example, the following command converts squeekboard's US layout to C

$ pipenv run python squeek2lvgl.py --input us.yaml --output .

When the process has finished, sq2lv_layouts.h and sq2lv_layouts.c will have been written into the current directory. Check the examples folder for further details about the generated files.

To facilitate usage, a minimalist C API is available in sq2lv.h and sq2lv.c.

Integrating into a project

Similar to LVGL squeek2lvgl should be added into a project as a git submodule. The generated C files assume that you have integrated LVGL as a submodule in the ./lvgl folder. The C library files in turn assume that you have imported squeek2lvgl as a submodule one folder above the location of the generated files.

The following is an example directory hierarchy:

$ tree .
.
├── lvgl             # LVGL submodule
│   ├── ...
├── main.c           # Project's own source files
├── ...
├── sq2lv_layouts.c  # Layouts generated with squeek2lvgl
├── sq2lv_layouts.h
├── ...
├── squeek2lvgl      # squeek2lvgl submodule
│   ├── sq2lv.c      # squeek2lvgl library code
│   ├── sq2lv.h
│   ├── ...
├── ...

Using the directory structure above, you can then add sq2lv_layouts.c and squeek2lvgl/sq2lv.c into your build process just like the rest of your project's sources.

License

squeek2lvgl is licensed under the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

squeekboard and its keyboard layouts are licensed under the GNU General Public License version 3.0.