Split auto-generated layouts into dedicated file
This commit is contained in:
parent
809c8af73b
commit
8b1c76d920
8 changed files with 489 additions and 369 deletions
2
Makefile
2
Makefile
|
|
@ -10,7 +10,7 @@ BIN = unl0kr
|
|||
|
||||
|
||||
#Collect the files to compile
|
||||
MAINSRC = ./main.c ./libinput_device_discovery.c ./libinput_multi.c ./libinput_xkb.c ./layouts.c ./montserrat_extended_32.c
|
||||
MAINSRC = ./main.c ./libinput_device_discovery.c ./libinput_multi.c ./libinput_xkb.c ./layouts.c ./montserrat_extended_32.c ./uskr_layouts.c
|
||||
|
||||
include $(LVGL_DIR)/lvgl/lvgl.mk
|
||||
include $(LVGL_DIR)/lv_drivers/lv_drivers.mk
|
||||
|
|
|
|||
11
README.md
11
README.md
|
|
@ -97,16 +97,12 @@ $ npx lv_font_conv --bpp 4 --size 32 --no-compress -o montserrat_extended_32.c -
|
|||
|
||||
## Changing layouts
|
||||
|
||||
The layouts in [layouts.c] are generated from [squeekboard layouts] using the [unsqu33kr/unsqu33kr.py] script. To run the script use the following commands
|
||||
The layouts in [uskr_layouts.h] and [uskr_layouts.c] are generated from [squeekboard layouts] using the [unsqu33kr/unsqu33kr.py] script. To regenerate the files, run
|
||||
|
||||
```
|
||||
$ cd unsqu33kr
|
||||
$ pipenv install
|
||||
$ pipenv run python unsqu33kr.py
|
||||
$ ./generate-keymaps.sh
|
||||
```
|
||||
|
||||
Then copy the output into [layouts.c].
|
||||
|
||||
## Screen recording
|
||||
|
||||
For demonstration purposes you can record the framebuffer device, e.g. with ffmpeg:
|
||||
|
|
@ -136,7 +132,8 @@ The Font Awesome font is licensed under the Open Font License version 1.1.
|
|||
[online font converter]: https://lvgl.io/tools/fontconverter
|
||||
[Font Awesome]: https://lvgl.io/assets/others/FontAwesome5-Solid+Brands+Regular.woff
|
||||
[adjust]: https://fontawesome.com/v5.15/icons/adjust?style=solid
|
||||
[layouts.c]: layouts.c
|
||||
[uskr_layouts.h]: uskr_layouts.h
|
||||
[uskr_layouts.c]: uskr_layouts.c
|
||||
[unsqu33kr/unsqu33kr.py]: unsqu33kr/unsqu33kr.py
|
||||
[squeekboard layouts]: https://gitlab.gnome.org/World/Phosh/squeekboard/-/tree/master/data/keyboards
|
||||
[fix(examples) don't compile assets unless needed]: https://github.com/lvgl/lvgl/pull/2523
|
||||
|
|
|
|||
5
generate-keymaps.sh
Executable file
5
generate-keymaps.sh
Executable file
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
cd unsqu33kr
|
||||
pipenv install
|
||||
pipenv run python unsqu33kr.py --output ..
|
||||
327
layouts.c
327
layouts.c
|
|
@ -1,336 +1,19 @@
|
|||
#include "layouts.h"
|
||||
|
||||
/**
|
||||
* English (US)
|
||||
**/
|
||||
|
||||
#define NAME_US "us"
|
||||
|
||||
/* Lowercase layer */
|
||||
#define KEYS_LOWER_US { \
|
||||
"q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "\n", \
|
||||
"a", "s", "d", "f", "g", "h", "j", "k", "l", "\n", \
|
||||
"ABC", "z", "x", "c", "v", "b", "n", "m", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"1#", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, ".", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_LOWER_US { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/* Uppercase layer */
|
||||
#define KEYS_UPPER_US { \
|
||||
"Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "\n", \
|
||||
"A", "S", "D", "F", "G", "H", "J", "K", "L", "\n", \
|
||||
"abc", "Z", "X", "C", "V", "B", "N", "M", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"1#", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, ".", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_UPPER_US { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/* Number / symbol layer */
|
||||
#define KEYS_NUMBERS_US { \
|
||||
"1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "\n", \
|
||||
"@", "#", "$", "%", "&", "-", "_", "+", "(", ")", "\n", \
|
||||
",", "\"", "'", ":", ";", "!", "?", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"abc", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, ".", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_NUMBERS_US { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/* Special characters */
|
||||
#define TRIGGER_SPECIAL_US ""
|
||||
#define KEYS_SPECIAL_US { NULL }
|
||||
#define ATTRIBUTES_SPECIAL_US { 0 }
|
||||
|
||||
/**
|
||||
* French
|
||||
**/
|
||||
|
||||
#define NAME_FR "fr"
|
||||
|
||||
/* Lowercase layer */
|
||||
#define KEYS_LOWER_FR { \
|
||||
"a", "z", "e", "r", "t", "y", "u", "i", "o", "p", "\n", \
|
||||
"q", "s", "d", "f", "g", "h", "j", "k", "l", "m", "\n", \
|
||||
"ABC", "w", "x", "c", "v", "b", "n", ".", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"1#", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, "àéô", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_LOWER_FR { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/* Uppercase layer */
|
||||
#define KEYS_UPPER_FR { \
|
||||
"A", "Z", "E", "R", "T", "Y", "U", "I", "O", "P", "\n", \
|
||||
"Q", "S", "D", "F", "G", "H", "J", "K", "L", "M", "\n", \
|
||||
"abc", "W", "X", "C", "V", "B", "N", ",", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"1#", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, "àéô", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_UPPER_FR { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/* Number / symbol layer */
|
||||
#define KEYS_NUMBERS_FR { \
|
||||
"1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "\n", \
|
||||
"@", "#", "€", "%", "&", "-", "_", "+", "(", ")", "\n", \
|
||||
",", "\"", "'", ":", ";", "!", "?", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"abc", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, "àéô", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_NUMBERS_FR { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/* Special characters */
|
||||
#define TRIGGER_SPECIAL_FR "àéô"
|
||||
#define KEYS_SPECIAL_FR { \
|
||||
"à", "â", "ç", "é", "è", "ê", "î", "ô", "ù", "û", "\n", \
|
||||
"À", "Â", "Ç", "É", "È", "Ê", "Î", "Ô", "Ù", "Û", "\n", \
|
||||
"1#", "æ", "œ", "ä", "ë", "ï", "ö", "ü", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"abc", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, "àéô", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_SPECIAL_FR { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/**
|
||||
* Spanish
|
||||
**/
|
||||
|
||||
#define NAME_ES "es"
|
||||
|
||||
/* Lowercase layer */
|
||||
#define KEYS_LOWER_ES { \
|
||||
"q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "\n", \
|
||||
"a", "s", "d", "f", "g", "h", "j", "k", "l", "ñ", "\n", \
|
||||
"ABC", "z", "x", "c", "v", "b", "n", "m", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"1#", "áéí", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, "?", ".", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_LOWER_ES { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/* Uppercase layer */
|
||||
#define KEYS_UPPER_ES { \
|
||||
"Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "\n", \
|
||||
"A", "S", "D", "F", "G", "H", "J", "K", "L", "Ñ", "\n", \
|
||||
"abc", "Z", "X", "C", "V", "B", "N", "M", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"1#", "áéí", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, "¿", ".", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_UPPER_ES { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/* Number / symbol layer */
|
||||
#define KEYS_NUMBERS_ES { \
|
||||
"1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "\n", \
|
||||
"@", "#", "€", "%", "&", "-", "_", "+", "(", ")", "\n", \
|
||||
",", "\"", "'", ":", ";", "!", "=", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"abc", "áéí", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, "?", ".", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_NUMBERS_ES { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/* Special characters */
|
||||
#define TRIGGER_SPECIAL_ES "áéí"
|
||||
#define KEYS_SPECIAL_ES { \
|
||||
"á", "é", "í", "ó", "ú", "Á", "É", "Í", "Ó", "Ú", "\n", \
|
||||
"à", "è", "ì", "ò", "ù", "À", "È", "Ì", "Ò", "Ù", "\n", \
|
||||
"1#", "ü", "ç", "ï", "Ü", "Ç", "Ï", "¡", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"abc", "áéí", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, "«", "»", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_SPECIAL_ES { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/**
|
||||
* German
|
||||
**/
|
||||
|
||||
#define NAME_DE "de"
|
||||
|
||||
/* Lowercase layer */
|
||||
#define KEYS_LOWER_DE { \
|
||||
"q", "w", "e", "r", "t", "z", "u", "i", "o", "p", "\n", \
|
||||
"a", "s", "d", "f", "g", "h", "j", "k", "l", "\n", \
|
||||
"ABC", "y", "x", "c", "v", "b", "n", "m", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"1#", "äöü", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, ",", ".", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_LOWER_DE { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/* Uppercase layer */
|
||||
#define KEYS_UPPER_DE { \
|
||||
"Q", "W", "E", "R", "T", "Z", "U", "I", "O", "P", "\n", \
|
||||
"A", "S", "D", "F", "G", "H", "J", "K", "L", "\n", \
|
||||
"abc", "Y", "X", "C", "V", "B", "N", "M", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"1#", "äöü", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, "!", "?", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_UPPER_DE { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/* Number / symbol layer */
|
||||
#define KEYS_NUMBERS_DE { \
|
||||
"1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "\n", \
|
||||
"@", "#", "€", "%", "&", "-", "_", "+", "(", ")", "\n", \
|
||||
";", "\"", "'", ":", "=", "<", ">", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"abc", "äöü", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, ",", ".", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_NUMBERS_DE { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/* Special characters */
|
||||
#define TRIGGER_SPECIAL_DE "äöü"
|
||||
#define KEYS_SPECIAL_DE { \
|
||||
"ä", "è", "é", "ö", "ü", "Ä", "È", "É", "Ö", "Ü", "\n", \
|
||||
"à", "â", "ê", "î", "ô", "À", "Â", "È", "Î", "Ô", "\n", \
|
||||
"1#", "«", "»", "ç", "Ç", "æ", "œ", "ß", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"abc", "äöü", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, "„", "“", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_SPECIAL_DE { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/**
|
||||
* All layouts
|
||||
**/
|
||||
|
||||
static const char * const names =
|
||||
LV_SYMBOL_KEYBOARD " " NAME_US "\n"
|
||||
LV_SYMBOL_KEYBOARD " " NAME_FR "\n"
|
||||
LV_SYMBOL_KEYBOARD " " NAME_ES "\n"
|
||||
LV_SYMBOL_KEYBOARD " " NAME_DE;
|
||||
|
||||
static const char ** const keys_lower[] = {
|
||||
(const char * const [])KEYS_LOWER_US,
|
||||
(const char * const [])KEYS_LOWER_FR,
|
||||
(const char * const [])KEYS_LOWER_ES,
|
||||
(const char * const [])KEYS_LOWER_DE
|
||||
};
|
||||
|
||||
static const lv_btnmatrix_ctrl_t * const attributes_lower[] = {
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_LOWER_US,
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_LOWER_FR,
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_LOWER_ES,
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_LOWER_DE
|
||||
};
|
||||
|
||||
static const char ** const keys_upper[] = {
|
||||
(const char * const [])KEYS_UPPER_US,
|
||||
(const char * const [])KEYS_UPPER_FR,
|
||||
(const char * const [])KEYS_UPPER_ES,
|
||||
(const char * const [])KEYS_UPPER_DE
|
||||
};
|
||||
|
||||
static const lv_btnmatrix_ctrl_t * const attributes_upper[] = {
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_UPPER_US,
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_UPPER_FR,
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_UPPER_ES,
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_UPPER_DE
|
||||
};
|
||||
|
||||
static const char ** const keys_numbers[] = {
|
||||
(const char * const [])KEYS_NUMBERS_US,
|
||||
(const char * const [])KEYS_NUMBERS_FR,
|
||||
(const char * const [])KEYS_NUMBERS_ES,
|
||||
(const char * const [])KEYS_NUMBERS_DE
|
||||
};
|
||||
|
||||
static const lv_btnmatrix_ctrl_t * const attributes_numbers[] = {
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_NUMBERS_US,
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_NUMBERS_FR,
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_NUMBERS_ES,
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_NUMBERS_DE
|
||||
};
|
||||
|
||||
static const char * const triggers_special[] = {
|
||||
(const char * const)TRIGGER_SPECIAL_US,
|
||||
(const char * const)TRIGGER_SPECIAL_FR,
|
||||
(const char * const)TRIGGER_SPECIAL_ES,
|
||||
(const char * const)TRIGGER_SPECIAL_DE
|
||||
};
|
||||
static const char ** const keys_special[] = {
|
||||
(const char * const [])KEYS_SPECIAL_US,
|
||||
(const char * const [])KEYS_SPECIAL_FR,
|
||||
(const char * const [])KEYS_SPECIAL_ES,
|
||||
(const char * const [])KEYS_SPECIAL_DE
|
||||
};
|
||||
|
||||
static const lv_btnmatrix_ctrl_t * const attributes_special[] = {
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_SPECIAL_US,
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_SPECIAL_FR,
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_SPECIAL_ES,
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_SPECIAL_DE
|
||||
};
|
||||
|
||||
/**
|
||||
* Functions
|
||||
**/
|
||||
#include "uskr_layouts.h"
|
||||
|
||||
char *get_layout_names(void) {
|
||||
return names;
|
||||
}
|
||||
|
||||
char *get_special_layer_trigger(layout_t layout) {
|
||||
if (layout < 0 || layout >= NUM_LAYOUTS) {
|
||||
char *get_special_layer_trigger(uskr_layout_t layout) {
|
||||
if (layout < 0 || layout >= USKR_NUM_LAYOUTS) {
|
||||
return NULL;
|
||||
}
|
||||
return triggers_special[layout];
|
||||
}
|
||||
|
||||
void apply_layout(lv_obj_t *keyboard, layout_t layout) {
|
||||
if (layout < 0 || layout >= NUM_LAYOUTS) {
|
||||
void apply_layout(lv_obj_t *keyboard, uskr_layout_t layout) {
|
||||
if (layout < 0 || layout >= USKR_NUM_LAYOUTS) {
|
||||
return;
|
||||
}
|
||||
if (keys_lower[layout][0] != NULL) {
|
||||
|
|
|
|||
15
layouts.h
15
layouts.h
|
|
@ -1,19 +1,10 @@
|
|||
#ifndef LAYOUTS_H
|
||||
#define LAYOUTS_H
|
||||
|
||||
#include "lvgl/lvgl.h"
|
||||
|
||||
typedef enum {
|
||||
LAYOUT_ENGLISH_US = 0,
|
||||
LAYOUT_FRENCH = 1,
|
||||
LAYOUT_SPANISH = 2,
|
||||
LAYOUT_GERMAN = 3
|
||||
} layout_t;
|
||||
|
||||
#define NUM_LAYOUTS 4
|
||||
#include "uskr_layouts.h"
|
||||
|
||||
char *get_layout_names(void);
|
||||
char *get_special_layer_trigger(layout_t layout);
|
||||
void apply_layout(lv_obj_t *keyboard, layout_t layout);
|
||||
char *get_special_layer_trigger(uskr_layout_t layout);
|
||||
void apply_layout(lv_obj_t *keyboard, uskr_layout_t layout);
|
||||
|
||||
#endif /* LAYOUTS_H */
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import argparse
|
||||
import git
|
||||
import os
|
||||
import sys
|
||||
|
|
@ -7,6 +8,9 @@ import tempfile
|
|||
import yaml
|
||||
|
||||
|
||||
outfile_c = 'uskr_layouts.c'
|
||||
outfile_h = 'uskr_layouts.h'
|
||||
|
||||
repository_url = 'https://gitlab.gnome.org/World/Phosh/squeekboard.git'
|
||||
rel_layouts_dir = 'data/keyboards'
|
||||
layout_whitelist = ['de', 'es', 'fr', 'us']
|
||||
|
|
@ -56,6 +60,18 @@ name_map = {
|
|||
}
|
||||
|
||||
|
||||
def parse_arguments():
|
||||
parser = argparse.ArgumentParser(description='Convert squeekboard layouts to LVGL-compatible C code.')
|
||||
parser.add_argument('--output', dest='output', type=str, help='output directory for generated files')
|
||||
args = parser.parse_args()
|
||||
|
||||
if not args.output or not os.path.isdir(args.output):
|
||||
sys.stderr.write('Error: no valid output directory specified')
|
||||
sys.exit(1)
|
||||
|
||||
return args
|
||||
|
||||
|
||||
def clone_squeekboard_repo(destination):
|
||||
git.Repo.clone_from(repository_url, destination, depth=1)
|
||||
|
||||
|
|
@ -88,7 +104,65 @@ def map_layer(layer):
|
|||
return layer_map[layer] if layer in layer_map else layer
|
||||
|
||||
|
||||
def add_header(lines):
|
||||
"""Add header comment to a list of lines.
|
||||
|
||||
lines -- list of lines to append to
|
||||
"""
|
||||
lines += ['/**', ' * Auto-generated with unsqu33kr', ' **/', '']
|
||||
|
||||
|
||||
def add_uskr_include(lines):
|
||||
"""Add an include statement for the generated header to a list of lines.
|
||||
|
||||
lines -- list of lines to append to
|
||||
"""
|
||||
lines += [f'#include "{outfile_h}"', '']
|
||||
|
||||
|
||||
def add_lvgl_include(lines):
|
||||
"""Add an LVGL include statement to a list of lines.
|
||||
|
||||
lines -- list of lines to append to
|
||||
"""
|
||||
lines += ['#include "lvgl/lvgl.h"', '']
|
||||
|
||||
|
||||
def wrap_header(lines):
|
||||
"""Wrap header lines to prevent recursive inclusion.
|
||||
|
||||
lines -- list of lines to wrap
|
||||
"""
|
||||
|
||||
lines.insert(0, '#ifndef USKR_LAYOUTS_H')
|
||||
lines.insert(1, '#define USKR_LAYOUTS_H')
|
||||
lines.insert(2, '')
|
||||
lines += ['#endif /* USKR_LAYOUTS_H */', '']
|
||||
|
||||
|
||||
def write_files(lines_c, lines_h):
|
||||
"""Write accumulated output to C and header file, respectively.
|
||||
|
||||
lines_c -- sequence of lines to write to C file
|
||||
lines_h -- sequence of lines to write to header
|
||||
"""
|
||||
with open(os.path.join(args.output, outfile_c), 'w') as fp:
|
||||
fp.write('\n'.join(lines_c))
|
||||
with open(os.path.join(args.output, outfile_h), 'w') as fp:
|
||||
fp.write('\n'.join(lines_h))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
args = parse_arguments()
|
||||
|
||||
lines_c = []
|
||||
lines_h = []
|
||||
|
||||
add_header(lines_c)
|
||||
add_uskr_include(lines_c)
|
||||
add_header(lines_h)
|
||||
add_lvgl_include(lines_h)
|
||||
|
||||
layouts = []
|
||||
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
|
|
@ -115,20 +189,20 @@ if __name__ == '__main__':
|
|||
|
||||
buttons = data['buttons'] if 'buttons' in data else {}
|
||||
|
||||
print(f'/**\n * {name_map[name]}\n **/\n')
|
||||
print(f'#define NAME_{name.upper()} "{name}"\n')
|
||||
lines_c.append(f'/**\n * {name_map[name]}\n **/\n')
|
||||
lines_c.append(f'#define NAME_{name.upper()} "{name}"\n')
|
||||
|
||||
for layer in layer_whitelist:
|
||||
print(f'/* {layer_to_description[layer]} */')
|
||||
lines_c.append(f'/* {layer_to_description[layer]} */')
|
||||
if layer not in data['views']:
|
||||
print(f'#define TRIGGER_{map_layer(layer).upper()}_{name.upper()} ""')
|
||||
print(f'#define KEYS_{map_layer(layer).upper()}_{name.upper()} ' + '{ NULL }')
|
||||
print(f'#define ATTRIBUTES_{map_layer(layer).upper()}_{name.upper()} ' + '{ 0 }\n')
|
||||
lines_c.append(f'#define TRIGGER_{map_layer(layer).upper()}_{name.upper()} ""')
|
||||
lines_c.append(f'#define KEYS_{map_layer(layer).upper()}_{name.upper()} ' + '{ NULL }')
|
||||
lines_c.append(f'#define ATTRIBUTES_{map_layer(layer).upper()}_{name.upper()} ' + '{ 0 }\n')
|
||||
continue
|
||||
|
||||
if layer == 'eschars':
|
||||
key = map_key('show_eschars', layer, name)[0]
|
||||
print(f'#define TRIGGER_{map_layer(layer).upper()}_{name.upper()} "{key}"')
|
||||
lines_c.append(f'#define TRIGGER_{map_layer(layer).upper()}_{name.upper()} "{key}"')
|
||||
|
||||
rows = data['views'][layer]
|
||||
keys_by_row = []
|
||||
|
|
@ -147,45 +221,63 @@ if __name__ == '__main__':
|
|||
keys_by_row.append(keys)
|
||||
attrs_by_row.append(attrs)
|
||||
|
||||
print(f'#define KEYS_{map_layer(layer).upper()}_{name.upper()} ' + '{ \\')
|
||||
lines_c.append(f'#define KEYS_{map_layer(layer).upper()}_{name.upper()} ' + '{ \\')
|
||||
for i, keys in enumerate(keys_by_row):
|
||||
joined = ', '.join(keys)
|
||||
suffix = '"\\n", \\' if i < len(rows) - 1 else '"" \\'
|
||||
print(f' {joined}, {suffix}')
|
||||
print('}')
|
||||
print(f'#define ATTRIBUTES_{map_layer(layer).upper()}_{name.upper()} ' + '{ \\')
|
||||
lines_c.append(f' {joined}, {suffix}')
|
||||
lines_c.append('}')
|
||||
lines_c.append(f'#define ATTRIBUTES_{map_layer(layer).upper()}_{name.upper()} ' + '{ \\')
|
||||
for i, attrs in enumerate(attrs_by_row):
|
||||
joined = ', '.join(attrs)
|
||||
suffix = ', \\' if i < len(rows) - 1 else ' \\'
|
||||
print(f' {joined}{suffix}')
|
||||
print('}\n')
|
||||
lines_c.append(f' {joined}{suffix}')
|
||||
lines_c.append('}\n')
|
||||
|
||||
layouts.append(name)
|
||||
|
||||
print('/**\n * All layouts\n **/\n')
|
||||
lines_c.append('/**\n * All layouts\n **/\n')
|
||||
|
||||
print('static const char * const names =')
|
||||
lines_h.append('typedef enum {')
|
||||
for i, name in enumerate(layouts):
|
||||
suffix = ',' if i < len(layouts) - 1 else ''
|
||||
lines_h.append(f' USKR_LAYOUT_{name.upper()} = {i}{suffix}')
|
||||
lines_h.append('} uskr_layout_t;')
|
||||
lines_h.append ('')
|
||||
lines_h.append(f'#define USKR_NUM_LAYOUTS {len(layouts)}')
|
||||
lines_h.append ('')
|
||||
|
||||
lines_h.append('extern const char * const names;')
|
||||
lines_c.append('const char * const names =')
|
||||
for i, name in enumerate(layouts):
|
||||
suffix = ' "\\n"' if i < len(layouts) - 1 else ';\n'
|
||||
print(f' LV_SYMBOL_KEYBOARD " " NAME_{name.upper()}{suffix}')
|
||||
lines_c.append(f' LV_SYMBOL_KEYBOARD " " NAME_{name.upper()}{suffix}')
|
||||
|
||||
for layer in layer_whitelist:
|
||||
if layer == 'eschars':
|
||||
print(f'static const char * const triggers_{map_layer(layer)}[] = ' + '{')
|
||||
lines_h.append(f'extern const char * const triggers_{map_layer(layer)}[];')
|
||||
lines_c.append(f'const char * const triggers_{map_layer(layer)}[] = ' + '{')
|
||||
for i, name in enumerate(layouts):
|
||||
suffix = ',' if i < len(layouts) - 1 else ''
|
||||
print(f' (const char * const)TRIGGER_{map_layer(layer).upper()}_{name.upper()}{suffix}')
|
||||
print('};')
|
||||
lines_c.append(f' (const char * const)TRIGGER_{map_layer(layer).upper()}_{name.upper()}{suffix}')
|
||||
lines_c.append('};')
|
||||
|
||||
print(f'static const char ** const keys_{map_layer(layer)}[] = ' + '{')
|
||||
lines_h.append(f'extern const char ** const keys_{map_layer(layer)}[];')
|
||||
lines_c.append(f'const char ** const keys_{map_layer(layer)}[] = ' + '{')
|
||||
for i, name in enumerate(layouts):
|
||||
suffix = ',' if i < len(layouts) - 1 else ''
|
||||
print(f' (const char * const [])KEYS_{map_layer(layer).upper()}_{name.upper()}{suffix}')
|
||||
print('};')
|
||||
print()
|
||||
print(f'static const lv_btnmatrix_ctrl_t * const attributes_{map_layer(layer)}[] = ' + '{')
|
||||
lines_c.append(f' (const char * const [])KEYS_{map_layer(layer).upper()}_{name.upper()}{suffix}')
|
||||
lines_c.append('};')
|
||||
lines_c.append('')
|
||||
lines_h.append(f'extern const lv_btnmatrix_ctrl_t * const attributes_{map_layer(layer)}[];')
|
||||
lines_c.append(f'const lv_btnmatrix_ctrl_t * const attributes_{map_layer(layer)}[] = ' + '{')
|
||||
for i, name in enumerate(layouts):
|
||||
suffix = ',' if i < len(layouts) - 1 else ''
|
||||
print(f' (lv_btnmatrix_ctrl_t[])ATTRIBUTES_{map_layer(layer).upper()}_{name.upper()}{suffix}')
|
||||
print('};')
|
||||
print()
|
||||
lines_c.append(f' (lv_btnmatrix_ctrl_t[])ATTRIBUTES_{map_layer(layer).upper()}_{name.upper()}{suffix}')
|
||||
lines_c.append('};')
|
||||
|
||||
lines_h.append('')
|
||||
lines_c.append('')
|
||||
|
||||
wrap_header(lines_h)
|
||||
write_files(lines_c, lines_h)
|
||||
319
uskr_layouts.c
Normal file
319
uskr_layouts.c
Normal file
|
|
@ -0,0 +1,319 @@
|
|||
/**
|
||||
* Auto-generated with unsqu33kr
|
||||
**/
|
||||
|
||||
#include "uskr_layouts.h"
|
||||
|
||||
/**
|
||||
* English (US)
|
||||
**/
|
||||
|
||||
#define NAME_US "us"
|
||||
|
||||
/* Lowercase layer */
|
||||
#define KEYS_LOWER_US { \
|
||||
"q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "\n", \
|
||||
"a", "s", "d", "f", "g", "h", "j", "k", "l", "\n", \
|
||||
"ABC", "z", "x", "c", "v", "b", "n", "m", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"1#", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, ".", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_LOWER_US { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/* Uppercase layer */
|
||||
#define KEYS_UPPER_US { \
|
||||
"Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "\n", \
|
||||
"A", "S", "D", "F", "G", "H", "J", "K", "L", "\n", \
|
||||
"abc", "Z", "X", "C", "V", "B", "N", "M", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"1#", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, ".", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_UPPER_US { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/* Number / symbol layer */
|
||||
#define KEYS_NUMBERS_US { \
|
||||
"1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "\n", \
|
||||
"@", "#", "$", "%", "&", "-", "_", "+", "(", ")", "\n", \
|
||||
",", "\"", "'", ":", ";", "!", "?", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"abc", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, ".", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_NUMBERS_US { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/* Special characters */
|
||||
#define TRIGGER_SPECIAL_US ""
|
||||
#define KEYS_SPECIAL_US { NULL }
|
||||
#define ATTRIBUTES_SPECIAL_US { 0 }
|
||||
|
||||
/**
|
||||
* French
|
||||
**/
|
||||
|
||||
#define NAME_FR "fr"
|
||||
|
||||
/* Lowercase layer */
|
||||
#define KEYS_LOWER_FR { \
|
||||
"a", "z", "e", "r", "t", "y", "u", "i", "o", "p", "\n", \
|
||||
"q", "s", "d", "f", "g", "h", "j", "k", "l", "m", "\n", \
|
||||
"ABC", "w", "x", "c", "v", "b", "n", ".", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"1#", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, "àéô", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_LOWER_FR { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/* Uppercase layer */
|
||||
#define KEYS_UPPER_FR { \
|
||||
"A", "Z", "E", "R", "T", "Y", "U", "I", "O", "P", "\n", \
|
||||
"Q", "S", "D", "F", "G", "H", "J", "K", "L", "M", "\n", \
|
||||
"abc", "W", "X", "C", "V", "B", "N", ",", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"1#", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, "àéô", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_UPPER_FR { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/* Number / symbol layer */
|
||||
#define KEYS_NUMBERS_FR { \
|
||||
"1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "\n", \
|
||||
"@", "#", "€", "%", "&", "-", "_", "+", "(", ")", "\n", \
|
||||
",", "\"", "'", ":", ";", "!", "?", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"abc", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, "àéô", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_NUMBERS_FR { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/* Special characters */
|
||||
#define TRIGGER_SPECIAL_FR "àéô"
|
||||
#define KEYS_SPECIAL_FR { \
|
||||
"à", "â", "ç", "é", "è", "ê", "î", "ô", "ù", "û", "\n", \
|
||||
"À", "Â", "Ç", "É", "È", "Ê", "Î", "Ô", "Ù", "Û", "\n", \
|
||||
"1#", "æ", "œ", "ä", "ë", "ï", "ö", "ü", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"abc", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, "àéô", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_SPECIAL_FR { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/**
|
||||
* Spanish
|
||||
**/
|
||||
|
||||
#define NAME_ES "es"
|
||||
|
||||
/* Lowercase layer */
|
||||
#define KEYS_LOWER_ES { \
|
||||
"q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "\n", \
|
||||
"a", "s", "d", "f", "g", "h", "j", "k", "l", "ñ", "\n", \
|
||||
"ABC", "z", "x", "c", "v", "b", "n", "m", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"1#", "áéí", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, "?", ".", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_LOWER_ES { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/* Uppercase layer */
|
||||
#define KEYS_UPPER_ES { \
|
||||
"Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "\n", \
|
||||
"A", "S", "D", "F", "G", "H", "J", "K", "L", "Ñ", "\n", \
|
||||
"abc", "Z", "X", "C", "V", "B", "N", "M", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"1#", "áéí", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, "¿", ".", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_UPPER_ES { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/* Number / symbol layer */
|
||||
#define KEYS_NUMBERS_ES { \
|
||||
"1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "\n", \
|
||||
"@", "#", "€", "%", "&", "-", "_", "+", "(", ")", "\n", \
|
||||
",", "\"", "'", ":", ";", "!", "=", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"abc", "áéí", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, "?", ".", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_NUMBERS_ES { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/* Special characters */
|
||||
#define TRIGGER_SPECIAL_ES "áéí"
|
||||
#define KEYS_SPECIAL_ES { \
|
||||
"á", "é", "í", "ó", "ú", "Á", "É", "Í", "Ó", "Ú", "\n", \
|
||||
"à", "è", "ì", "ò", "ù", "À", "È", "Ì", "Ò", "Ù", "\n", \
|
||||
"1#", "ü", "ç", "ï", "Ü", "Ç", "Ï", "¡", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"abc", "áéí", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, "«", "»", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_SPECIAL_ES { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/**
|
||||
* German
|
||||
**/
|
||||
|
||||
#define NAME_DE "de"
|
||||
|
||||
/* Lowercase layer */
|
||||
#define KEYS_LOWER_DE { \
|
||||
"q", "w", "e", "r", "t", "z", "u", "i", "o", "p", "\n", \
|
||||
"a", "s", "d", "f", "g", "h", "j", "k", "l", "\n", \
|
||||
"ABC", "y", "x", "c", "v", "b", "n", "m", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"1#", "äöü", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, ",", ".", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_LOWER_DE { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/* Uppercase layer */
|
||||
#define KEYS_UPPER_DE { \
|
||||
"Q", "W", "E", "R", "T", "Z", "U", "I", "O", "P", "\n", \
|
||||
"A", "S", "D", "F", "G", "H", "J", "K", "L", "\n", \
|
||||
"abc", "Y", "X", "C", "V", "B", "N", "M", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"1#", "äöü", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, "!", "?", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_UPPER_DE { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/* Number / symbol layer */
|
||||
#define KEYS_NUMBERS_DE { \
|
||||
"1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "\n", \
|
||||
"@", "#", "€", "%", "&", "-", "_", "+", "(", ")", "\n", \
|
||||
";", "\"", "'", ":", "=", "<", ">", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"abc", "äöü", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, ",", ".", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_NUMBERS_DE { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/* Special characters */
|
||||
#define TRIGGER_SPECIAL_DE "äöü"
|
||||
#define KEYS_SPECIAL_DE { \
|
||||
"ä", "è", "é", "ö", "ü", "Ä", "È", "É", "Ö", "Ü", "\n", \
|
||||
"à", "â", "ê", "î", "ô", "À", "Â", "È", "Î", "Ô", "\n", \
|
||||
"1#", "«", "»", "ç", "Ç", "æ", "œ", "ß", LV_SYMBOL_BACKSPACE, "\n", \
|
||||
"abc", "äöü", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, "„", "“", LV_SYMBOL_OK, "" \
|
||||
}
|
||||
#define ATTRIBUTES_SPECIAL_DE { \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, 2, 2, 2, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, \
|
||||
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_KEYBOARD_CTRL_BTN_FLAGS | 7, LV_KEYBOARD_CTRL_BTN_FLAGS | 3, 2, 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 3 \
|
||||
}
|
||||
|
||||
/**
|
||||
* All layouts
|
||||
**/
|
||||
|
||||
const char * const names =
|
||||
LV_SYMBOL_KEYBOARD " " NAME_US "\n"
|
||||
LV_SYMBOL_KEYBOARD " " NAME_FR "\n"
|
||||
LV_SYMBOL_KEYBOARD " " NAME_ES "\n"
|
||||
LV_SYMBOL_KEYBOARD " " NAME_DE;
|
||||
|
||||
const char ** const keys_lower[] = {
|
||||
(const char * const [])KEYS_LOWER_US,
|
||||
(const char * const [])KEYS_LOWER_FR,
|
||||
(const char * const [])KEYS_LOWER_ES,
|
||||
(const char * const [])KEYS_LOWER_DE
|
||||
};
|
||||
|
||||
const lv_btnmatrix_ctrl_t * const attributes_lower[] = {
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_LOWER_US,
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_LOWER_FR,
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_LOWER_ES,
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_LOWER_DE
|
||||
};
|
||||
|
||||
const char ** const keys_upper[] = {
|
||||
(const char * const [])KEYS_UPPER_US,
|
||||
(const char * const [])KEYS_UPPER_FR,
|
||||
(const char * const [])KEYS_UPPER_ES,
|
||||
(const char * const [])KEYS_UPPER_DE
|
||||
};
|
||||
|
||||
const lv_btnmatrix_ctrl_t * const attributes_upper[] = {
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_UPPER_US,
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_UPPER_FR,
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_UPPER_ES,
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_UPPER_DE
|
||||
};
|
||||
|
||||
const char ** const keys_numbers[] = {
|
||||
(const char * const [])KEYS_NUMBERS_US,
|
||||
(const char * const [])KEYS_NUMBERS_FR,
|
||||
(const char * const [])KEYS_NUMBERS_ES,
|
||||
(const char * const [])KEYS_NUMBERS_DE
|
||||
};
|
||||
|
||||
const lv_btnmatrix_ctrl_t * const attributes_numbers[] = {
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_NUMBERS_US,
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_NUMBERS_FR,
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_NUMBERS_ES,
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_NUMBERS_DE
|
||||
};
|
||||
|
||||
const char * const triggers_special[] = {
|
||||
(const char * const)TRIGGER_SPECIAL_US,
|
||||
(const char * const)TRIGGER_SPECIAL_FR,
|
||||
(const char * const)TRIGGER_SPECIAL_ES,
|
||||
(const char * const)TRIGGER_SPECIAL_DE
|
||||
};
|
||||
const char ** const keys_special[] = {
|
||||
(const char * const [])KEYS_SPECIAL_US,
|
||||
(const char * const [])KEYS_SPECIAL_FR,
|
||||
(const char * const [])KEYS_SPECIAL_ES,
|
||||
(const char * const [])KEYS_SPECIAL_DE
|
||||
};
|
||||
|
||||
const lv_btnmatrix_ctrl_t * const attributes_special[] = {
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_SPECIAL_US,
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_SPECIAL_FR,
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_SPECIAL_ES,
|
||||
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_SPECIAL_DE
|
||||
};
|
||||
33
uskr_layouts.h
Normal file
33
uskr_layouts.h
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
#ifndef USKR_LAYOUTS_H
|
||||
#define USKR_LAYOUTS_H
|
||||
|
||||
/**
|
||||
* Auto-generated with unsqu33kr
|
||||
**/
|
||||
|
||||
#include "lvgl/lvgl.h"
|
||||
|
||||
typedef enum {
|
||||
USKR_LAYOUT_US = 0,
|
||||
USKR_LAYOUT_FR = 1,
|
||||
USKR_LAYOUT_ES = 2,
|
||||
USKR_LAYOUT_DE = 3
|
||||
} uskr_layout_t;
|
||||
|
||||
#define USKR_NUM_LAYOUTS 4
|
||||
|
||||
extern const char * const names;
|
||||
extern const char ** const keys_lower[];
|
||||
extern const lv_btnmatrix_ctrl_t * const attributes_lower[];
|
||||
|
||||
extern const char ** const keys_upper[];
|
||||
extern const lv_btnmatrix_ctrl_t * const attributes_upper[];
|
||||
|
||||
extern const char ** const keys_numbers[];
|
||||
extern const lv_btnmatrix_ctrl_t * const attributes_numbers[];
|
||||
|
||||
extern const char * const triggers_special[];
|
||||
extern const char ** const keys_special[];
|
||||
extern const lv_btnmatrix_ctrl_t * const attributes_special[];
|
||||
|
||||
#endif /* USKR_LAYOUTS_H */
|
||||
Loading…
Add table
Add a link
Reference in a new issue