152 lines
6.4 KiB
C
152 lines
6.4 KiB
C
#include "layouts.h"
|
|
|
|
/**
|
|
* English (US)
|
|
**/
|
|
|
|
#define NAME_ENGLISH_US "English (US)"
|
|
|
|
/* Lowercase layer */
|
|
#define KEYS_LOWER_ENGLISH_US { \
|
|
"1#", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", LV_SYMBOL_BACKSPACE, "\n", \
|
|
"ABC", "a", "s", "d", "f", "g", "h", "j", "k", "l", LV_SYMBOL_NEW_LINE, "\n", \
|
|
"_", "-", "z", "x", "c", "v", "b", "n", "m", ".", ",", ":", "\n", \
|
|
LV_SYMBOL_KEYBOARD, LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, LV_SYMBOL_OK, "" \
|
|
}
|
|
#define ATTRIBUTES_LOWER_ENGLISH_US { \
|
|
LV_KEYBOARD_CTRL_BTN_FLAGS | 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, LV_BTNMATRIX_CTRL_CHECKED | 7, \
|
|
LV_KEYBOARD_CTRL_BTN_FLAGS | 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, LV_BTNMATRIX_CTRL_CHECKED | 7, \
|
|
LV_BTNMATRIX_CTRL_CHECKED | 1, LV_BTNMATRIX_CTRL_CHECKED | 1, 1, 1, 1, 1, 1, 1, 1, LV_BTNMATRIX_CTRL_CHECKED | 1, LV_BTNMATRIX_CTRL_CHECKED | 1, LV_BTNMATRIX_CTRL_CHECKED | 1, \
|
|
LV_KEYBOARD_CTRL_BTN_FLAGS | 2, LV_BTNMATRIX_CTRL_CHECKED | 2, 6, LV_BTNMATRIX_CTRL_CHECKED | 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 2 \
|
|
}
|
|
|
|
/* Uppercase layer */
|
|
#define KEYS_UPPER_ENGLISH_US { \
|
|
"1#", "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", LV_SYMBOL_BACKSPACE, "\n", \
|
|
"abc", "A", "S", "D", "F", "G", "H", "J", "K", "L", LV_SYMBOL_NEW_LINE, "\n", \
|
|
"_", "-", "Z", "X", "C", "V", "B", "N", "M", ".", ",", ":", "\n", \
|
|
LV_SYMBOL_KEYBOARD, LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, LV_SYMBOL_OK, "" \
|
|
}
|
|
#define ATTRIBUTES_UPPER_ENGLISH_US { \
|
|
LV_KEYBOARD_CTRL_BTN_FLAGS | 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, LV_BTNMATRIX_CTRL_CHECKED | 7, \
|
|
LV_KEYBOARD_CTRL_BTN_FLAGS | 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, LV_BTNMATRIX_CTRL_CHECKED | 7, \
|
|
LV_BTNMATRIX_CTRL_CHECKED | 1, LV_BTNMATRIX_CTRL_CHECKED | 1, 1, 1, 1, 1, 1, 1, 1, LV_BTNMATRIX_CTRL_CHECKED | 1, LV_BTNMATRIX_CTRL_CHECKED | 1, LV_BTNMATRIX_CTRL_CHECKED | 1, \
|
|
LV_KEYBOARD_CTRL_BTN_FLAGS | 2, LV_BTNMATRIX_CTRL_CHECKED | 2, 6, LV_BTNMATRIX_CTRL_CHECKED | 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 2 \
|
|
}
|
|
|
|
/* Symbol layer */
|
|
#define KEYS_SYMBOL_ENGLISH_US { \
|
|
"1", "2", "3", "4", "5", "6", "7", "8", "9", "0", LV_SYMBOL_BACKSPACE, "\n", \
|
|
"abc", "+", "-", "/", "*", "=", "%", "!", "?", "#", "<", ">", "\n", \
|
|
"\\", "@", "$", "(", ")", "{", "}", "[", "]", ";", "\"", "'", "\n", \
|
|
LV_SYMBOL_KEYBOARD, LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, LV_SYMBOL_OK, "" \
|
|
}
|
|
#define ATTRIBUTES_SYMBOL_ENGLISH_US { \
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, LV_BTNMATRIX_CTRL_CHECKED | 2, \
|
|
LV_KEYBOARD_CTRL_BTN_FLAGS | 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
|
|
LV_KEYBOARD_CTRL_BTN_FLAGS | 2, LV_BTNMATRIX_CTRL_CHECKED | 2, 6, LV_BTNMATRIX_CTRL_CHECKED | 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 2 \
|
|
}
|
|
|
|
/**
|
|
* German
|
|
**/
|
|
|
|
#define NAME_GERMAN "German"
|
|
|
|
/* Lowercase layer */
|
|
#define KEYS_LOWER_GERMAN { \
|
|
"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_GERMAN { \
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
|
|
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_BTNMATRIX_CTRL_HIDDEN | 1, 2, 2, 2, 2, 2, 2, 2, LV_BTNMATRIX_CTRL_HIDDEN | 1, LV_BTNMATRIX_CTRL_CHECKED | 3, \
|
|
LV_KEYBOARD_CTRL_BTN_FLAGS | 2, LV_BTNMATRIX_CTRL_CHECKED | 2, 7, LV_BTNMATRIX_CTRL_CHECKED | 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 2 \
|
|
}
|
|
|
|
/* Uppercase layer */
|
|
#define KEYS_UPPER_GERMAN { \
|
|
"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_GERMAN { \
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
|
|
LV_KEYBOARD_CTRL_BTN_FLAGS | 3, LV_BTNMATRIX_CTRL_HIDDEN | 1, 2, 2, 2, 2, 2, 2, 2, LV_BTNMATRIX_CTRL_HIDDEN | 1, LV_BTNMATRIX_CTRL_CHECKED | 3, \
|
|
LV_KEYBOARD_CTRL_BTN_FLAGS | 2, LV_BTNMATRIX_CTRL_CHECKED | 2, 7, LV_BTNMATRIX_CTRL_CHECKED | 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 2 \
|
|
}
|
|
|
|
/* Symbol layer */
|
|
#define KEYS_SYMBOL_GERMAN { \
|
|
"1", "2", "3", "4", "5", "6", "7", "8", "9", "0", LV_SYMBOL_BACKSPACE, "\n", \
|
|
"abc", "+", "-", "/", "*", "=", "%", "!", "?", "#", "<", ">", "\n", \
|
|
"\\", "@", "$", "(", ")", "{", "}", "[", "]", ";", "\"", "'", "\n", \
|
|
LV_SYMBOL_KEYBOARD, LV_SYMBOL_LEFT, " ", LV_SYMBOL_RIGHT, LV_SYMBOL_OK, "" \
|
|
}
|
|
#define ATTRIBUTES_SYMBOL_GERMAN { \
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, LV_BTNMATRIX_CTRL_CHECKED | 2, \
|
|
LV_KEYBOARD_CTRL_BTN_FLAGS | 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
|
|
LV_KEYBOARD_CTRL_BTN_FLAGS | 2, LV_BTNMATRIX_CTRL_CHECKED | 2, 6, LV_BTNMATRIX_CTRL_CHECKED | 2, LV_KEYBOARD_CTRL_BTN_FLAGS | 2 \
|
|
}
|
|
|
|
/**
|
|
* All layouts
|
|
**/
|
|
|
|
static const char * const names =
|
|
LV_SYMBOL_KEYBOARD " " NAME_ENGLISH_US "\n"
|
|
LV_SYMBOL_KEYBOARD " " NAME_GERMAN;
|
|
|
|
static const char ** const keys_lower[] = {
|
|
(const char * const [])KEYS_LOWER_ENGLISH_US,
|
|
(const char * const [])KEYS_LOWER_GERMAN
|
|
};
|
|
|
|
static const lv_btnmatrix_ctrl_t * const attributes_lower[] = {
|
|
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_LOWER_ENGLISH_US,
|
|
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_LOWER_GERMAN
|
|
};
|
|
|
|
static const char ** const keys_upper[] = {
|
|
(const char * const [])KEYS_UPPER_ENGLISH_US,
|
|
(const char * const [])KEYS_UPPER_GERMAN
|
|
};
|
|
|
|
static const lv_btnmatrix_ctrl_t *attributes_upper[] = {
|
|
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_UPPER_ENGLISH_US,
|
|
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_UPPER_GERMAN
|
|
};
|
|
|
|
static const char ** const keys_symbol[] = {
|
|
(const char * const [])KEYS_SYMBOL_ENGLISH_US,
|
|
(const char * const [])KEYS_SYMBOL_GERMAN
|
|
};
|
|
|
|
static const lv_btnmatrix_ctrl_t *attributes_symbol[] = {
|
|
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_SYMBOL_ENGLISH_US,
|
|
(lv_btnmatrix_ctrl_t[])ATTRIBUTES_SYMBOL_GERMAN
|
|
};
|
|
|
|
/**
|
|
* 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;
|
|
}
|
|
lv_keyboard_set_map(keyboard, LV_KEYBOARD_MODE_TEXT_LOWER, keys_lower[layout], attributes_lower[layout]);
|
|
lv_keyboard_set_map(keyboard, LV_KEYBOARD_MODE_TEXT_UPPER, keys_upper[layout], attributes_upper[layout]);
|
|
lv_keyboard_set_map(keyboard, LV_KEYBOARD_MODE_SPECIAL, keys_symbol[layout], attributes_symbol[layout]);
|
|
}
|