#include "layouts.h" /** * English (US) **/ #define NAME_US "English (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 KEYS_SPECIAL_US { NULL } #define ATTRIBUTES_SPECIAL_US { 0 } /** * French **/ #define NAME_FR "French" /* 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 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 "Spanish" /* 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 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 "German" /* 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 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 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 **/ char *get_layout_names(void) { return names; } void apply_layout(lv_obj_t *keyboard, layout_t layout) { if (layout < 0 || layout >= NUM_LAYOUTS) { return; } if (keys_lower[layout][0] != NULL) { lv_keyboard_set_map(keyboard, LV_KEYBOARD_MODE_TEXT_LOWER, keys_lower[layout], attributes_lower[layout]); } if (keys_upper[layout][0] != NULL) { lv_keyboard_set_map(keyboard, LV_KEYBOARD_MODE_TEXT_UPPER, keys_upper[layout], attributes_upper[layout]); } if (keys_numbers[layout][0] != NULL) { lv_keyboard_set_map(keyboard, LV_KEYBOARD_MODE_SPECIAL, keys_numbers[layout], attributes_numbers[layout]); } if (keys_special[layout][0] != NULL) { lv_keyboard_set_map(keyboard, LV_KEYBOARD_MODE_NUMBER, keys_special[layout], attributes_special[layout]); } }