Customise Shift key

This commit is contained in:
Johannes Marbach 2021-09-20 13:05:12 +02:00
parent 2484871b77
commit ae84dbbbc6
5 changed files with 105 additions and 28 deletions

View file

@ -79,15 +79,7 @@ $ sudo ./unl0kr
## Changing fonts
Fonts need to be converted to C arrays before they can be used with [lvgl]. This is most conveniently done using the official [online font converter]. Useful unicode ranges for the conversion are 0x0020-0x007F (basic Latin), 0x00A0-0x00FF (Latin-1 supplement), 0x0100-0x017F (Latin extended A), 0x2000-0x206F (general punctuation) and 0x20A0-0x20CF (currency symbols). For the various `LV_SYMBOL_...` glyphs, make sure to also add [Font Awesome] with the following code points:
```
0xF001, 0xF008, 0xF00B, 0xF00C, 0xF00D, 0xF011, 0xF013, 0xF015, 0xF019, 0xF01C, 0xF021, 0xF026, 0xF027, 0xF028, 0xF03E, 0xF0E0, 0xF304, 0xF043, 0xF048, 0xF04B, 0xF04C, 0xF04D, 0xF051, 0xF052, 0xF053, 0xF054, 0xF067, 0xF068, 0xF06E, 0xF070, 0xF071, 0xF074, 0xF077, 0xF078, 0xF079, 0xF07B, 0xF093, 0xF095, 0xF0C4, 0xF0C5, 0xF0C7, 0xF0C9, 0xF0E7, 0xF0EA, 0xF0F3, 0xF11C, 0xF124, 0xF158, 0xF1EB, 0xF240, 0xF241, 0xF242, 0xF243, 0xF244, 0xF287, 0xF293, 0xF2ED, 0xF55A, 0xF7C2, 0xF8A2
```
as well as `0xF042` for the [adjust] icon.
It's also possible to do the conversion on the commandline, e.g.
In order to work with [lvgl], fonts need to be converted to C arrays. Buffyboard currently uses a combination of the [Montserrat] font for text and the [FontAwesome] font for pictograms. For both fonts only limited character ranges are included. To (re)generate the C file containing the combined font, run the following command
```
$ npx lv_font_conv --bpp 4 --size 32 --no-compress -o montserrat_extended_32.c --format lvgl \
@ -99,9 +91,23 @@ $ npx lv_font_conv --bpp 4 --size 32 --no-compress -o montserrat_extended_32.c -
--range '0x20A0-0x20CF' \
--font FontAwesome5-Solid+Brands+Regular.woff \
--range '0xF001,0xF008,0xF00B,0xF00C,0xF00D,0xF011,0xF013,0xF015,0xF019,0xF01C,0xF021,0xF026,0xF027,0xF028,0xF03E,0xF0E0,0xF304,0xF043,0xF048,0xF04B,0xF04C,0xF04D,0xF051,0xF052,0xF053,0xF054,0xF067,0xF068,0xF06E,0xF070,0xF071,0xF074,0xF077,0xF078,0xF079,0xF07B,0xF093,0xF095,0xF0C4,0xF0C5,0xF0C7,0xF0C9,0xF0E7,0xF0EA,0xF0F3,0xF11C,0xF124,0xF158,0xF1EB,0xF240,0xF241,0xF242,0xF243,0xF244,0xF287,0xF293,0xF2ED,0xF55A,0xF7C2,0xF8A2' \
--range '0xF042'
--range '0xF042' \
--range '0xF35B'
```
The following is a summary of the meaning of the different unicode ranges used above
- [Montserrat]
- Basic Latin (`0x0020-0x007F`)
- Latin-1 supplement (`0x00A0-0x00FF`)
- Latin extended A (`0x0100-0x017F`)
- General punctuation (`0x2000-0x206F`)
- Currency symbols (`0x20A0-0x20CF`)
- [FontAwesome]
- Standard `LV_SYMBOL_*` glyphs (`0xF001,0xF008,0xF00B,0xF00C,0xF00D,0xF011,0xF013,0xF015,0xF019,0xF01C,0xF021,0xF026,0xF027,0xF028,0xF03E,0xF0E0,0xF304,0xF043,0xF048,0xF04B,0xF04C,0xF04D,0xF051,0xF052,0xF053,0xF054,0xF067,0xF068,0xF06E,0xF070,0xF071,0xF074,0xF077,0xF078,0xF079,0xF07B,0xF093,0xF095,0xF0C4,0xF0C5,0xF0C7,0xF0C9,0xF0E7,0xF0EA,0xF0F3,0xF11C,0xF124,0xF158,0xF1EB,0xF240,0xF241,0xF242,0xF243,0xF244,0xF287,0xF293,0xF2ED,0xF55A,0xF7C2,0xF8A2`)
- [adjust] (`0xF042`)
- [arrow-alt-circle-up] (`0xF35B`)
## Changing layouts
Unl0kr uses [squeekboard layouts] converted to C via [squeek2lvgl]. To regenerate the layouts, run
@ -141,6 +147,7 @@ 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
[arrow-alt-circle-up]: https://fontawesome.com/v5.15/icons/arrow-alt-circle-up?style=solid
[squeekboard layouts]: https://gitlab.gnome.org/World/Phosh/squeekboard/-/tree/master/data/keyboards
[squeek2lvgl]: https://gitlab.com/cherrypicker/squeek2lvgl
[fix(examples) don't compile assets unless needed]: https://github.com/lvgl/lvgl/pull/2523

View file

@ -1,7 +1,7 @@
/*******************************************************************************
* Size: 32 px
* Bpp: 4
* Opts: --bpp 4 --size 32 --no-compress -o montserrat_extended_32.c --format lvgl --font Montserrat-Regular.ttf --range 0x0020-0x007F --range 0x00A0-0x00FF --range 0x0100-0x017F --range 0x2000-0x206F --range 0x20A0-0x20CF --font FontAwesome5-Solid+Brands+Regular.woff --range 0xF001,0xF008,0xF00B,0xF00C,0xF00D,0xF011,0xF013,0xF015,0xF019,0xF01C,0xF021,0xF026,0xF027,0xF028,0xF03E,0xF0E0,0xF304,0xF043,0xF048,0xF04B,0xF04C,0xF04D,0xF051,0xF052,0xF053,0xF054,0xF067,0xF068,0xF06E,0xF070,0xF071,0xF074,0xF077,0xF078,0xF079,0xF07B,0xF093,0xF095,0xF0C4,0xF0C5,0xF0C7,0xF0C9,0xF0E7,0xF0EA,0xF0F3,0xF11C,0xF124,0xF158,0xF1EB,0xF240,0xF241,0xF242,0xF243,0xF244,0xF287,0xF293,0xF2ED,0xF55A,0xF7C2,0xF8A2 --range 0xF042
* Opts: --bpp 4 --size 32 --no-compress -o montserrat_extended_32.c --format lvgl --font Montserrat-Regular.ttf --range 0x0020-0x007F --range 0x00A0-0x00FF --range 0x0100-0x017F --range 0x2000-0x206F --range 0x20A0-0x20CF --font FontAwesome5-Solid+Brands+Regular.woff --range 0xF001,0xF008,0xF00B,0xF00C,0xF00D,0xF011,0xF013,0xF015,0xF019,0xF01C,0xF021,0xF026,0xF027,0xF028,0xF03E,0xF0E0,0xF304,0xF043,0xF048,0xF04B,0xF04C,0xF04D,0xF051,0xF052,0xF053,0xF054,0xF067,0xF068,0xF06E,0xF070,0xF071,0xF074,0xF077,0xF078,0xF079,0xF07B,0xF093,0xF095,0xF0C4,0xF0C5,0xF0C7,0xF0C9,0xF0E7,0xF0EA,0xF0F3,0xF11C,0xF124,0xF158,0xF1EB,0xF240,0xF241,0xF242,0xF243,0xF244,0xF287,0xF293,0xF2ED,0xF55A,0xF7C2,0xF8A2 --range 0xF042 --range 0xF35B
******************************************************************************/
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
@ -12920,6 +12920,72 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0,
/* U+F35B "" */
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x25, 0x77,
0x76, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x3, 0x9e, 0xff, 0xff,
0xff, 0xff, 0xc6, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x2, 0xbf, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe6, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x6f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xb1, 0x0, 0x0, 0x0,
0x0, 0x0, 0x9, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xfe, 0x20, 0x0, 0x0,
0x0, 0x0, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xe2, 0x0, 0x0,
0x0, 0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x0, 0x0,
0x0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7,
0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x90, 0x0,
0x0, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x50,
0x1c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x0,
0x4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0x0,
0x1, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x0,
0xb, 0xff, 0xff, 0xff, 0xff, 0xff, 0x50, 0x0,
0x0, 0x1d, 0xff, 0xff, 0xff, 0xff, 0xff, 0x20,
0xf, 0xff, 0xff, 0xff, 0xff, 0xf5, 0x0, 0x0,
0x0, 0x1, 0xdf, 0xff, 0xff, 0xff, 0xff, 0x70,
0x4f, 0xff, 0xff, 0xff, 0xff, 0x50, 0x0, 0x0,
0x0, 0x0, 0x1d, 0xff, 0xff, 0xff, 0xff, 0xb0,
0x7f, 0xff, 0xff, 0xff, 0xf6, 0x0, 0x0, 0x0,
0x0, 0x0, 0x1, 0xdf, 0xff, 0xff, 0xff, 0xe0,
0x9f, 0xff, 0xff, 0xff, 0x60, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x1d, 0xff, 0xff, 0xff, 0xf0,
0xaf, 0xff, 0xff, 0xff, 0x10, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x9, 0xff, 0xff, 0xff, 0xf1,
0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x0,
0x0, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1,
0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x0,
0x0, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x0,
0x0, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0,
0x4f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x0,
0x0, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb0,
0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x0,
0x0, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x70,
0xb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x0,
0x0, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x20,
0x4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x0,
0x0, 0xaf, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x0,
0x0, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x0,
0x0, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x0,
0x0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x90, 0x0,
0x0, 0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x0, 0x0,
0x0, 0x0, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xe2, 0x0, 0x0,
0x0, 0x0, 0x9, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xfe, 0x20, 0x0, 0x0,
0x0, 0x0, 0x0, 0x6f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xb1, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x2, 0xbf, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xe6, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x3, 0x9e, 0xff, 0xff,
0xff, 0xff, 0xc6, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x25, 0x77,
0x76, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
/* U+F55A "" */
0x0, 0x0, 0x0, 0x0, 0x0, 0x3c, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
@ -13509,9 +13575,10 @@ static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
{.bitmap_index = 93869, .adv_w = 448, .box_w = 24, .box_h = 32, .ofs_x = 2, .ofs_y = -4},
{.bitmap_index = 94253, .adv_w = 448, .box_w = 28, .box_h = 32, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 94701, .adv_w = 512, .box_w = 33, .box_h = 33, .ofs_x = -1, .ofs_y = -5},
{.bitmap_index = 95246, .adv_w = 640, .box_w = 40, .box_h = 24, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 95726, .adv_w = 384, .box_w = 24, .box_h = 32, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 96110, .adv_w = 515, .box_w = 33, .box_h = 21, .ofs_x = 0, .ofs_y = 2}
{.bitmap_index = 95246, .adv_w = 512, .box_w = 32, .box_h = 32, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 95758, .adv_w = 640, .box_w = 40, .box_h = 24, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 96238, .adv_w = 384, .box_w = 24, .box_h = 32, .ofs_x = 0, .ofs_y = -4},
{.bitmap_index = 96622, .adv_w = 515, .box_w = 33, .box_h = 21, .ofs_x = 0, .ofs_y = 2}
};
/*---------------------
@ -13532,7 +13599,7 @@ static const uint16_t unicode_list_2[] = {
0xd074, 0xd08c, 0xd08e, 0xd0bd, 0xd0be, 0xd0c0, 0xd0c2, 0xd0d9,
0xd0e0, 0xd0e3, 0xd0ec, 0xd115, 0xd11d, 0xd151, 0xd1e4, 0xd239,
0xd23a, 0xd23b, 0xd23c, 0xd23d, 0xd280, 0xd28c, 0xd2e6, 0xd2fd,
0xd553, 0xd7bb, 0xd89b
0xd354, 0xd553, 0xd7bb, 0xd89b
};
/*Collect the unicode lists and glyph_id offsets*/
@ -13548,7 +13615,7 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
},
{
.range_start = 8199, .range_length = 55452, .glyph_id_start = 320,
.unicode_list = unicode_list_2, .glyph_id_ofs_list = NULL, .list_length = 107, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
.unicode_list = unicode_list_2, .glyph_id_ofs_list = NULL, .list_length = 108, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
}
};
@ -13613,7 +13680,7 @@ static const uint8_t kern_left_class_mapping[] =
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0
0, 0, 0, 0
};
/*Map glyph_ids to kern right classes*/
@ -13672,7 +13739,7 @@ static const uint8_t kern_right_class_mapping[] =
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0
0, 0, 0, 0
};
/*Kern values between classes*/

View file

@ -25,5 +25,6 @@ pipenv run python squeek2lvgl.py \
--input de.yaml \
--input es.yaml \
--input fr.yaml \
--output .. \
--surround-space-with-arrows \
--output ..
--shift-keycap '\xef\x8d\x9b'

View file

@ -4,6 +4,8 @@
#include "sq2lv_layouts.h"
#define SQ2LV_SYMBOL_SHIFT "\xef\x8d\x9b"
/**
* Layout: US English - generated from us
**/
@ -18,7 +20,7 @@ static const int num_keys_lower_us = 34;
static const char * const keycaps_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", \
SQ2LV_SYMBOL_SHIFT, "z", "x", "c", "v", "b", "n", "m", LV_SYMBOL_BACKSPACE, "\n", \
"123", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, ".", LV_SYMBOL_OK, "" \
};
@ -52,7 +54,7 @@ static const int num_keys_upper_us = 34;
static const char * const keycaps_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", \
SQ2LV_SYMBOL_SHIFT, "Z", "X", "C", "V", "B", "N", "M", LV_SYMBOL_BACKSPACE, "\n", \
"123", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, ".", LV_SYMBOL_OK, "" \
};
@ -164,7 +166,7 @@ static const int num_keys_lower_de = 36;
static const char * const keycaps_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", \
SQ2LV_SYMBOL_SHIFT, "y", "x", "c", "v", "b", "n", "m", LV_SYMBOL_BACKSPACE, "\n", \
"123", "äÄ", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, ",", ".", LV_SYMBOL_OK, "" \
};
@ -198,7 +200,7 @@ static const int num_keys_upper_de = 36;
static const char * const keycaps_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", \
SQ2LV_SYMBOL_SHIFT, "Y", "X", "C", "V", "B", "N", "M", LV_SYMBOL_BACKSPACE, "\n", \
"123", "äÄ", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, "!", "?", LV_SYMBOL_OK, "" \
};
@ -354,7 +356,7 @@ static const int num_keys_lower_es = 37;
static const char * const keycaps_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", \
SQ2LV_SYMBOL_SHIFT, "z", "x", "c", "v", "b", "n", "m", LV_SYMBOL_BACKSPACE, "\n", \
"123", "áÁ", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, "?", ".", LV_SYMBOL_OK, "" \
};
@ -388,7 +390,7 @@ static const int num_keys_upper_es = 37;
static const char * const keycaps_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", \
SQ2LV_SYMBOL_SHIFT, "Z", "X", "C", "V", "B", "N", "M", LV_SYMBOL_BACKSPACE, "\n", \
"123", "áÁ", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, "¿", ".", LV_SYMBOL_OK, "" \
};
@ -544,7 +546,7 @@ static const int num_keys_lower_fr = 35;
static const char * const keycaps_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", \
SQ2LV_SYMBOL_SHIFT, "w", "x", "c", "v", "b", "n", ".", LV_SYMBOL_BACKSPACE, "\n", \
"123", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, "âÂ", LV_SYMBOL_OK, "" \
};
@ -578,7 +580,7 @@ static const int num_keys_upper_fr = 35;
static const char * const keycaps_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", \
SQ2LV_SYMBOL_SHIFT, "W", "X", "C", "V", "B", "N", ",", LV_SYMBOL_BACKSPACE, "\n", \
"123", LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, "âÂ", LV_SYMBOL_OK, "" \
};

@ -1 +1 @@
Subproject commit e93d853f3d0413ca5e1a9fc5796c571a5778a3d2
Subproject commit 94e5cfa841b7e7dd3dcb2dc011329e59c978b00b