namespace Core::Skin::KeyboardLayout
namespace KeyboardLayout {
// enums
enum Mode;
enum SpecialKeys;
// global variables
static const int kRowCount = 4;
static const int keysPerRow[kRowCount] = { 11, 10, 11, 4 };
static const char layoutLetters[] = { 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', kBackspace, 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L', kEnter, kShift, 'Z', 'X', 'C', 'V', 'B', 'N', 'M', ',', '.', kShift, kMode, kSpace, kMode, kCancel };
static const char layoutNumbers[] = { '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', kBackspace, '-', '/', ':', ';', '(', ')', '$', '&', '@', kEnter, kShift, '.', ',', '?', '!', '\'', '\"', kUnused, kUnused, kUnused, kShift, kMode, kSpace, kMode, kCancel };
static const char layoutSymbols[] = { '[', ']', '{', '}', '#', '%', '^', '*', '+', '=', kBackspace, '_', '\\', '|', '~', '<', '>', '$', '&', '@', kEnter, kShift, '.', ',', '?', '!', '\'', '\"', kUnused, kUnused, kUnused, kShift, kMode, kSpace, kMode, kCancel };
char keyCode;
float weight;
static const struct Core::Skin::KeyboardLayout keyWeights[] = { {kEnter, 1.5f}, {kMode, 1.5f}, {kCancel, 1.5f}, {kSpace, 6.5f} };
// global functions
static bool isSpecialKey(char keyCode);
static const char* getLayout(Mode mode);
static float getKeyWeight(char keyCode);
static void getKeyLabel(CString32& label, char keyCode, Mode mode);
static char getCharacter(char keyCode, bool shiftEnabled);
} // namespace KeyboardLayout