Refactor modifier keys and add basic Japanese keyboard layout (#2930)

* Add a basic Japanese keyboard layout

Allow for entring Japanese text into text boxes.  Only supports kana
and latin letters due to limitations of current VirtualKeyboard
implementation (complex text input with conversion is not possible).

* Allow keyboard layouts to declare custom modifiers

Refactor modifier key setup code and existing keyboard layouts so
that each layout can declare custom modifier key labels.  This
allows for greater extensibility and for future keyboard layouts.
pull/832/merge
alexandrahurst 7 years ago committed by Frans de Jonge
parent fef18ec73a
commit 71d38ac647

@ -1,66 +1,71 @@
return {
-- first row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ "Q", "q", "1", "!", ":", ";", "1", "!", "Ä", "ä", "1", "ª", },
{ "W", "w", "2", "?", "|", "ς", "2", "?", "Ö", "ö", "2", "º", },
{ "E", "e", "3", "|", "Ε", "ε", "Έ", "έ", "Ü", "ü", "3", "¡", },
{ "R", "r", "4", "#", "Ρ", "ρ", "4", ";", "ß", "ß", "4", "¿", },
{ "T", "t", "5", "@", "Τ", "τ", "5", ":", "À", "à", "5", "¼", },
{ "Y", "y", "6", "", "Υ", "υ", "Ύ", "ύ", "Â", "â", "6", "½", },
{ "U", "u", "7", "'", "Θ", "θ", "7", "(", "Æ", "æ", "7", "¾", },
{ "I", "i", "8", "`", "Ι", "ι", "Ί", "ί", "Ç", "ç", "8", "©", },
{ "O", "o", "9", ":", "Ο", "ο", "9", "ό", "È", "è", "9", "®", },
{ "P", "p", "0", ";", "Π", "π", "Ό", ")", "É", "é", "0", "", },
},
-- second row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ "A", "a", "+", "", "Α", "α", "Ά", "ά", "Ê", "ê", "Ş", "ş", },
{ "S", "s", "-", "_", "Σ", "σ", "Ѕ", "ѕ", "Ë", "ë", "İ", "ı", },
{ "D", "d", "*", "=", "Δ", "δ", "Э", "«", "Î", "î", "Ğ", "ğ", },
{ "F", "f", "/", "\\", "Φ", "φ", "Ю", "»", "Ï", "ï", "Ć", "ć", },
{ "G", "g", "%", "", "Γ", "γ", "Ґ", "ґ", "Ô", "ô", "Č", "č", },
{ "H", "h", "^", "", "Η", "η", "Ή", "ή", "Œ", "œ", "Đ", "đ", },
{ "J", "j", "<", "", "Ξ", "ξ", "Ί", "ί", "Ù", "ù", "Š", "š", },
{ "K", "k", "=", "\"", "Κ", "κ", "Ќ", "ќ", "Û", "û", "Ž", "ž", },
{ "L", "l", ">", "~", "Λ", "λ", "Љ", "љ", "Ÿ", "ÿ", "Ő", "ő", },
},
-- third row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ label = "Shift",
icon = "resources/icons/appbar.arrow.shift.png",
width = 1.5
shiftmode_keys = {["Shift"] = true},
symbolmode_keys = {["Sym"] = true, ["ABC"] = true},
utf8mode_keys = {["IM"] = true},
umlautmode_keys = {["Äéß"] = true},
keys = {
-- first row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ "Q", "q", "1", "!", ":", ";", "1", "!", "Ä", "ä", "1", "ª", },
{ "W", "w", "2", "?", "|", "ς", "2", "?", "Ö", "ö", "2", "º", },
{ "E", "e", "3", "|", "Ε", "ε", "Έ", "έ", "Ü", "ü", "3", "¡", },
{ "R", "r", "4", "#", "Ρ", "ρ", "4", ";", "ß", "ß", "4", "¿", },
{ "T", "t", "5", "@", "Τ", "τ", "5", ":", "À", "à", "5", "¼", },
{ "Y", "y", "6", "", "Υ", "υ", "Ύ", "ύ", "Â", "â", "6", "½", },
{ "U", "u", "7", "'", "Θ", "θ", "7", "(", "Æ", "æ", "7", "¾", },
{ "I", "i", "8", "`", "Ι", "ι", "Ί", "ί", "Ç", "ç", "8", "©", },
{ "O", "o", "9", ":", "Ο", "ο", "9", "ό", "È", "è", "9", "®", },
{ "P", "p", "0", ";", "Π", "π", "Ό", ")", "É", "é", "0", "", },
},
{ "Z", "z", "(", "$", "Ζ", "ζ", "Щ", "щ", "Á", "á", "Ű", "ű", },
{ "X", "x", ")", "", "Χ", "χ", "", "@", "É", "é", "Ø", "ø", },
{ "C", "c", "&", "¥", "Ψ", "ψ", "Џ", "џ", "Í", "í", "Þ", "þ", },
{ "V", "v", ":", "£", "Ω", "ω", "Ώ", "ώ", "Ñ", "ñ", "Ý", "ý", },
{ "B", "b", "π", "", "Β", "β", "Ћ", "ћ", "Ó", "ó", "", "", },
{ "N", "n", "е", "", "Ν", "ν", "Њ", "њ", "Ú", "ú", "", "", },
{ "M", "m", "~", "", "Μ", "μ", "Ї", "ї", "Ç", "ç", "", "¨", },
{ label = "Backspace",
icon = "resources/icons/appbar.clear.reflect.horizontal.png",
width = 1.5
-- second row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ "A", "a", "+", "", "Α", "α", "Ά", "ά", "Ê", "ê", "Ş", "ş", },
{ "S", "s", "-", "_", "Σ", "σ", "Ѕ", "ѕ", "Ë", "ë", "İ", "ı", },
{ "D", "d", "*", "=", "Δ", "δ", "Э", "«", "Î", "î", "Ğ", "ğ", },
{ "F", "f", "/", "\\", "Φ", "φ", "Ю", "»", "Ï", "ï", "Ć", "ć", },
{ "G", "g", "%", "", "Γ", "γ", "Ґ", "ґ", "Ô", "ô", "Č", "č", },
{ "H", "h", "^", "", "Η", "η", "Ή", "ή", "Œ", "œ", "Đ", "đ", },
{ "J", "j", "<", "", "Ξ", "ξ", "Ί", "ί", "Ù", "ù", "Š", "š", },
{ "K", "k", "=", "\"", "Κ", "κ", "Ќ", "ќ", "Û", "û", "Ž", "ž", },
{ "L", "l", ">", "~", "Λ", "λ", "Љ", "љ", "Ÿ", "ÿ", "Ő", "ő", },
},
},
-- fourth row
{
{ "Sym", "Sym", "ABC", "ABC", "Sym", "Sym", "ABC", "ABC", "Sym", "Sym", "ABC", "ABC",
width = 1.5},
{ label = "IM",
icon = "resources/icons/appbar.globe.wire.png",
-- third row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ label = "Shift",
icon = "resources/icons/appbar.arrow.shift.png",
width = 1.5
},
{ "Z", "z", "(", "$", "Ζ", "ζ", "Щ", "щ", "Á", "á", "Ű", "ű", },
{ "X", "x", ")", "", "Χ", "χ", "", "@", "É", "é", "Ø", "ø", },
{ "C", "c", "&", "¥", "Ψ", "ψ", "Џ", "џ", "Í", "í", "Þ", "þ", },
{ "V", "v", ":", "£", "Ω", "ω", "Ώ", "ώ", "Ñ", "ñ", "Ý", "ý", },
{ "B", "b", "π", "", "Β", "β", "Ћ", "ћ", "Ó", "ó", "", "", },
{ "N", "n", "е", "", "Ν", "ν", "Њ", "њ", "Ú", "ú", "", "", },
{ "M", "m", "~", "", "Μ", "μ", "Ї", "ї", "Ç", "ç", "", "¨", },
{ label = "Backspace",
icon = "resources/icons/appbar.clear.reflect.horizontal.png",
width = 1.5
},
},
{ "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", },
{ label = "space",
" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ",
width = 4.0},
{ ",", ".", ".", ",", ",", ".", "Є", "є", ",", ".", ",", ".", },
{ label = "Enter",
"\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n",
icon = "resources/icons/appbar.arrow.enter.png",
width = 1.5,
-- fourth row
{
{ "Sym", "Sym", "ABC", "ABC", "Sym", "Sym", "ABC", "ABC", "Sym", "Sym", "ABC", "ABC",
width = 1.5},
{ label = "IM",
icon = "resources/icons/appbar.globe.wire.png",
},
{ "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", },
{ label = "space",
" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ",
width = 4.0},
{ ",", ".", ".", ",", ",", ".", "Є", "є", ",", ".", ",", ".", },
{ label = "Enter",
"\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n",
icon = "resources/icons/appbar.arrow.enter.png",
width = 1.5,
},
},
}
},
}

@ -0,0 +1,109 @@
return {
shiftmode_keys = {["Shift"] = true},
symbolmode_keys = {["記号"] = true, ["かな"] = true},
utf8mode_keys = {[""] = true},
umlautmode_keys = {[""] = true},
keys = {
-- first row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ "", "", "~", "`", "", "", "~", "`", "", "", "~", "`", },
{ "", "", "!", "1", "", "", "!", "1", "", "", "!", "1", },
{ "", "", "@", "2", "", "", "@", "2", "", "", "@", "2", },
{ "", "", "#", "3", "", "", "#", "3", "", "", "#", "3", },
{ "", "", "$", "4", "", "", "$", "4", "", "", "$", "4", },
{ "", "", "%", "5", "", "", "%", "5", "", "", "%", "5", },
{ "", "", "^", "6", "", "", "^", "6", "", "", "^", "6", },
{ "", "", "&", "7", "", "", "&", "7", "", "", "&", "7", },
{ "", "", "*", "8", "", "", "*", "8", "", "", "*", "8", },
{ "", "", "(", "9", "", "", "(", "9", "", "", "(", "9", },
{ "", "", ")", "0", "", "", ")", "0", "", "", ")", "0", },
{ "", "", "_", "-", "", "", "_", "-", "", "", "_", "-", },
{ "", "", "+", "=", "", "", "+", "=", "", "", "+", "=", },
},
-- second row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ "", "", "Q", "q", "", "", "Q", "q", "", "", "Q", "q", },
{ "", "", "W", "w", "", "", "W", "w", "", "", "W", "w", },
{ "", "", "E", "e", "", "", "E", "e", "", "", "E", "e", },
{ "", "", "R", "r", "", "", "R", "r", "", "", "R", "r", },
{ "", "", "T", "t", "", "", "T", "t", "", "", "T", "t", },
{ "", "", "Y", "y", "", "", "Y", "y", "", "", "Y", "y", },
{ "", "", "U", "u", "", "", "U", "u", "", "", "U", "u", },
{ " ", " ", "I", "i", " ", " ", "I", "i", " ", " ", "I", "i", },
{ "", "", "O", "o", "", "", "O", "o", "", "", "O", "o", },
{ " ", " ", "P", "p", " ", " ", "P", "p", " ", " ", "P", "p", },
{ "", "", "{", "[", "", "", "{", "[", "", "", "{", "[", },
{ "", "", "}", "]", "", "", "}", "]", "", "", "}", "]", },
{ "", "", "|", "\\", "", "", "|", "\\", "", "", "|", "\\", },
},
-- third row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ "", "", "A", "a", "", "", "A", "a", "", "", "A", "a", },
{ "", "", "S", "s", "", "", "S", "s", "", "", "S", "s", },
{ "", "", "D", "d", "", "", "D", "d", "", "", "D", "d", },
{ "", "", "F", "f", "", "", "F", "f", "", "", "F", "f", },
{ "", "", "G", "g", "", "", "G", "g", "", "", "G", "g", },
{ "", "", "H", "h", "", "", "H", "h", "", "", "H", "h", },
{ "", "", "J", "j", "", "", "J", "j", "", "", "J", "j", },
{ "", "", "K", "k", "", "", "K", "k", "", "", "K", "k", },
{ "", "", "L", "l", "", "", "L", "l", "", "", "L", "l", },
{ "", "", ":", ";", "", "", ":", ";", "", "", ":", ";", },
{ "", "", "\"", "'", "", "", "\"", "'", "", "", "\"", "'", },
{ "", "", "", "", "", "", "", "", "", "", "", "", },
{ "", "", "", "", "", "", "", "", "", "", "", "", },
},
-- fourth row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ "", "", "Z", "z", "", "", "Z", "z", "", "", "Z", "z", },
{ "", "", "X", "x", "", "", "X", "x", "", "", "X", "x", },
{ "", "", "C", "c", "", "", "C", "c", "", "", "C", "c", },
{ "", "", "V", "v", "", "", "V", "v", "", "", "V", "v", },
{ "", "", "B", "b", "", "", "B", "b", "", "", "B", "b", },
{ "", "", "N", "n", "", "", "N", "n", "", "", "N", "n", },
{ "", "", "M", "m", "", "", "M", "m", "", "", "M", "m", },
{ " ", " ", "<", ",", " ", " ", "<", ",", " ", " ", "<", ",", },
{ "", "", ">", ".", "", "", ">", ".", "", "", ">", ".", },
{ " ", " ", "?", "/", " ", " ", "?", "/", " ", " ", "?", "/", },
{ "", "", "", "", "", "", "", "", "", "", "", "", },
{ "", "", "", "", "", "", "", "", "", "", "", "", },
{ "", "", "", "", "", "", "", "", "", "", "", "", },
},
-- fifth row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ "", "", "Á", "á", "", "", "Á", "á", "", "", "Á", "á", },
{ "", "", "É", "é", "", "", "É", "é", "", "", "É", "é", },
{ "", "", "Í", "í", "", "", "Í", "í", "", "", "Í", "í", },
{ "", "", "Ó", "ó", "", "", "Ó", "ó", "", "", "Ó", "ó", },
{ "", "", "Ú", "ú", "", "", "Ú", "ú", "", "", "Ú", "ú", },
{ "", "", "Ñ", "ñ", "", "", "Ñ", "ñ", "", "", "Ñ", "ñ", },
{ "", "", "Ü", "ü", "", "", "Ü", "ü", "", "", "Ü", "ü", },
{ "", "", "¿", "ç", "", "", "¿", "ç", "", "", "¿", "ç", },
{ "", "", "¡", "ß", "", "", "¡", "ß", "", "", "¡", "ß", },
{ "", "", "Æ", "æ", "", "", "Æ", "æ", "", "", "Æ", "æ", },
{ "", "", "", "£", "", "", "", "£", "", "", "", "£", },
{ " ", " ", "«", "", " ", " ", "«", "", " ", " ", "«", "", },
{ "", "", "»", "", "", "", "", "", "", "", "»", "", },
},
-- sixth row
{
{ label = "Shift",
icon = "resources/icons/appbar.arrow.shift.png",
width = 1.5
},
{ "記号", "記号", "かな", "かな", "記号", "記号", "かな", "かな", "記号", "記号", "かな", "かな",
width = 1.5},
{ label = "空白",
" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ",
width = 7.0},
{ label = "Enter",
"\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n",
icon = "resources/icons/appbar.arrow.enter.png",
width = 1.5,
},
{ label = "Backspace",
icon = "resources/icons/appbar.clear.reflect.horizontal.png",
width = 1.5
},
},
},
}

@ -1,64 +1,69 @@
return {
-- first row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ "Q", "q", "", "0", "Q", "q", "", "0", "Ä", "ä", "1", "ª", },
{ "W", "w", "!", "1", "W", "w", "!", "1", "Ö", "ö", "2", "º", },
{ "E", "e", "@", "2", "Ę", "ę", "@", "2", "Ü", "ü", "3", "¡", },
{ "R", "r", "#", "3", "R", "r", "#", "3", "ß", "ß", "4", "¿", },
{ "T", "t", "+", "=", "T", "t", "+", "=", "À", "à", "5", "¼", },
{ "Y", "y", "", "(", "Y", "y", "", "(", "Â", "â", "6", "½", },
{ "U", "u", "", ")", "U", "u", "", ")", "Æ", "æ", "7", "¾", },
{ "I", "i", "|", "\\", "I", "i", "|", "\\", "Ç", "ç", "8", "©", },
{ "O", "o", "?", "/", "Ó", "ó", "?", "/", "È", "è", "9", "®", },
{ "P", "p", "~", "`", "P", "p", "~", "`", "É", "é", "0", "", },
},
-- second row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ "A", "a", "", "@", "Ą", "ą", "", "@", "Ê", "ê", "Ş", "ş", },
{ "S", "s", "$", "4", "Ś", "ś", "$", "4", "Ë", "ë", "İ", "ı", },
{ "D", "d", "%", "5", "D", "d", "%", "5", "Î", "î", "Ğ", "ğ", },
{ "F", "f", "^", "6", "F", "f", "^", "6", "Ï", "ï", "Ć", "ć", },
{ "G", "g", ":", ";", "G", "g", ":", ";", "Ô", "ô", "Č", "č", },
{ "H", "h", "\"", "'", "H", "h", "\"", "'", "Œ", "œ", "Đ", "đ", },
{ "J", "j", "{", "[", "J", "j", "{", "[", "Ù", "ù", "Š", "š", },
{ "K", "k", "}", "]", "K", "k", "}", "]", "Û", "û", "Ž", "ž", },
{ "L", "l", "_", "-", "Ł", "ł", "_", "-", "Ÿ", "ÿ", "Ő", "ő", },
},
-- third row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ label = "Shift",
icon = "resources/icons/appbar.arrow.shift.png",
width = 1.5
shiftmode_keys = {["Shift"] = true},
symbolmode_keys = {["Sym"] = true, ["ABC"] = true},
utf8mode_keys = {["IM"] = true},
umlautmode_keys = {["Äéß"] = true},
keys = {
-- first row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ "Q", "q", "", "0", "Q", "q", "", "0", "Ä", "ä", "1", "ª", },
{ "W", "w", "!", "1", "W", "w", "!", "1", "Ö", "ö", "2", "º", },
{ "E", "e", "@", "2", "Ę", "ę", "@", "2", "Ü", "ü", "3", "¡", },
{ "R", "r", "#", "3", "R", "r", "#", "3", "ß", "ß", "4", "¿", },
{ "T", "t", "+", "=", "T", "t", "+", "=", "À", "à", "5", "¼", },
{ "Y", "y", "", "(", "Y", "y", "", "(", "Â", "â", "6", "½", },
{ "U", "u", "", ")", "U", "u", "", ")", "Æ", "æ", "7", "¾", },
{ "I", "i", "|", "\\", "I", "i", "|", "\\", "Ç", "ç", "8", "©", },
{ "O", "o", "?", "/", "Ó", "ó", "?", "/", "È", "è", "9", "®", },
{ "P", "p", "~", "`", "P", "p", "~", "`", "É", "é", "0", "", },
},
{ "Z", "z", "&", "7", "Ż", "ż", "&", "7", "Á", "á", "Ű", "ű", },
{ "X", "x", "*", "8", "Ź", "ź", "*", "8", "É", "é", "Ø", "ø", },
{ "C", "c", "£", "9", "Ć", "ć", "£", "9", "Í", "í", "Þ", "þ", },
{ "V", "v", "<", "", "V", "v", "<", ",", "Ñ", "ñ", "Ý", "ý", },
{ "B", "b", ">", ".", "B", "b", ">", ".", "Ó", "ó", "", "", },
{ "N", "n", "", "", "Ń", "ń", "", "", "Ú", "ú", "", "", },
{ "M", "m", "", "", "M", "m", "", "", "Ç", "ç", "", "¨", },
{ label = "Backspace",
icon = "resources/icons/appbar.clear.reflect.horizontal.png",
width = 1.5
-- second row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ "A", "a", "", "@", "Ą", "ą", "", "@", "Ê", "ê", "Ş", "ş", },
{ "S", "s", "$", "4", "Ś", "ś", "$", "4", "Ë", "ë", "İ", "ı", },
{ "D", "d", "%", "5", "D", "d", "%", "5", "Î", "î", "Ğ", "ğ", },
{ "F", "f", "^", "6", "F", "f", "^", "6", "Ï", "ï", "Ć", "ć", },
{ "G", "g", ":", ";", "G", "g", ":", ";", "Ô", "ô", "Č", "č", },
{ "H", "h", "\"", "'", "H", "h", "\"", "'", "Œ", "œ", "Đ", "đ", },
{ "J", "j", "{", "[", "J", "j", "{", "[", "Ù", "ù", "Š", "š", },
{ "K", "k", "}", "]", "K", "k", "}", "]", "Û", "û", "Ž", "ž", },
{ "L", "l", "_", "-", "Ł", "ł", "_", "-", "Ÿ", "ÿ", "Ő", "ő", },
},
},
-- fourth row
{
{ "Sym", "Sym", "ABC", "ABC", "Sym", "Sym", "ABC", "ABC", "Sym", "Sym", "ABC", "ABC",
width = 1.5},
{ label = "IM",
icon = "resources/icons/appbar.globe.wire.png",
-- third row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ label = "Shift",
icon = "resources/icons/appbar.arrow.shift.png",
width = 1.5
},
{ "Z", "z", "&", "7", "Ż", "ż", "&", "7", "Á", "á", "Ű", "ű", },
{ "X", "x", "*", "8", "Ź", "ź", "*", "8", "É", "é", "Ø", "ø", },
{ "C", "c", "£", "9", "Ć", "ć", "£", "9", "Í", "í", "Þ", "þ", },
{ "V", "v", "<", "", "V", "v", "<", ",", "Ñ", "ñ", "Ý", "ý", },
{ "B", "b", ">", ".", "B", "b", ">", ".", "Ó", "ó", "", "", },
{ "N", "n", "", "", "Ń", "ń", "", "", "Ú", "ú", "", "", },
{ "M", "m", "", "", "M", "m", "", "", "Ç", "ç", "", "¨", },
{ label = "Backspace",
icon = "resources/icons/appbar.clear.reflect.horizontal.png",
width = 1.5
},
},
{ "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", },
{ label = "space",
" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ",
width = 4.0},
{ ",", ".", ".", ",", ",", ".", ".PL", ".pl", ",", ".", ",", ".", },
{ label = "Enter",
"\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n",
icon = "resources/icons/appbar.arrow.enter.png",
width = 1.5,
-- fourth row
{
{ "Sym", "Sym", "ABC", "ABC", "Sym", "Sym", "ABC", "ABC", "Sym", "Sym", "ABC", "ABC",
width = 1.5},
{ label = "IM",
icon = "resources/icons/appbar.globe.wire.png",
},
{ "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", },
{ label = "space",
" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ",
width = 4.0},
{ ",", ".", ".", ",", ",", ".", ".PL", ".pl", ",", ".", ",", ".", },
{ label = "Enter",
"\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n",
icon = "resources/icons/appbar.arrow.enter.png",
width = 1.5,
},
},
}
},
}

@ -1,64 +1,69 @@
return {
-- first row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ "Q", "q", "", "0", "Ã", "ã", "", "0", "Ä", "ä", "1", "ª", },
{ "W", "w", "!", "1", "Á", "á", "!", "1", "Ö", "ö", "2", "º", },
{ "E", "e", "@", "2", "É", "é", "@", "2", "Ü", "ü", "3", "¡", },
{ "R", "r", "#", "3", "Ê", "ê", "#", "3", "ß", "ß", "4", "¿", },
{ "T", "t", "+", "=", "T", "t", "+", "=", "À", "à", "5", "¼", },
{ "Y", "y", "", "(", "Ü", "ü", "", "(", "Â", "â", "6", "½", },
{ "U", "u", "", ")", "Ú", "ú", "", ")", "Æ", "æ", "7", "¾", },
{ "I", "i", "|", "\\", "Í", "í", "|", "\\", "Ç", "ç", "8", "©", },
{ "O", "o", "?", "/", "Õ", "õ", "?", "/", "È", "è", "9", "®", },
{ "P", "p", "~", "`", "Ó", "ó", "~", "`", "É", "é", "0", "", },
},
-- second row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ "A", "a", "", "@", "À", "à", "", "@", "Ê", "ê", "Ş", "ş", },
{ "S", "s", "$", "4", "Â", "â", "$", "4", "Ë", "ë", "İ", "ı", },
{ "D", "d", "%", "5", "D", "d", "%", "5", "Î", "î", "Ğ", "ğ", },
{ "F", "f", "^", "6", "F", "f", "^", "6", "Ï", "ï", "Ć", "ć", },
{ "G", "g", ":", ";", "G", "g", ":", ";", "Ô", "ô", "Č", "č", },
{ "H", "h", "\"", "'", "H", "h", "\"", "'", "Œ", "œ", "Đ", "đ", },
{ "J", "j", "{", "[", "J", "j", "{", "[", "Ù", "ù", "Š", "š", },
{ "K", "k", "}", "]", "K", "k", "}", "]", "Û", "û", "Ž", "ž", },
{ "L", "l", "_", "-", "Ô", "ô", "_", "-", "Ÿ", "ÿ", "Ő", "ő", },
},
-- third row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ label = "Shift",
icon = "resources/icons/appbar.arrow.shift.png",
width = 1.5
shiftmode_keys = {["Shift"] = true},
symbolmode_keys = {["Sym"] = true, ["ABC"] = true},
utf8mode_keys = {["IM"] = true},
umlautmode_keys = {["Äéß"] = true},
keys = {
-- first row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ "Q", "q", "", "0", "Ã", "ã", "", "0", "Ä", "ä", "1", "ª", },
{ "W", "w", "!", "1", "Á", "á", "!", "1", "Ö", "ö", "2", "º", },
{ "E", "e", "@", "2", "É", "é", "@", "2", "Ü", "ü", "3", "¡", },
{ "R", "r", "#", "3", "Ê", "ê", "#", "3", "ß", "ß", "4", "¿", },
{ "T", "t", "+", "=", "T", "t", "+", "=", "À", "à", "5", "¼", },
{ "Y", "y", "", "(", "Ü", "ü", "", "(", "Â", "â", "6", "½", },
{ "U", "u", "", ")", "Ú", "ú", "", ")", "Æ", "æ", "7", "¾", },
{ "I", "i", "|", "\\", "Í", "í", "|", "\\", "Ç", "ç", "8", "©", },
{ "O", "o", "?", "/", "Õ", "õ", "?", "/", "È", "è", "9", "®", },
{ "P", "p", "~", "`", "Ó", "ó", "~", "`", "É", "é", "0", "", },
},
{ "Z", "z", "&", "7", "Z", "z", "&", "7", "Á", "á", "Ű", "ű", },
{ "X", "x", "*", "8", "x", "x", "*", "8", "É", "é", "Ø", "ø", },
{ "C", "c", "£", "9", "Ç", "ç", "£", "9", "Í", "í", "Þ", "þ", },
{ "V", "v", "<", "", "V", "v", "<", ",", "Ñ", "ñ", "Ý", "ý", },
{ "B", "b", ">", ".", "B", "b", ">", ".", "Ó", "ó", "", "", },
{ "N", "n", "", "", "N", "n", "", "", "Ú", "ú", "", "", },
{ "M", "m", "", "", "M", "m", "", "", "Ç", "ç", "", "¨", },
{ label = "Backspace",
icon = "resources/icons/appbar.clear.reflect.horizontal.png",
width = 1.5
-- second row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ "A", "a", "", "@", "À", "à", "", "@", "Ê", "ê", "Ş", "ş", },
{ "S", "s", "$", "4", "Â", "â", "$", "4", "Ë", "ë", "İ", "ı", },
{ "D", "d", "%", "5", "D", "d", "%", "5", "Î", "î", "Ğ", "ğ", },
{ "F", "f", "^", "6", "F", "f", "^", "6", "Ï", "ï", "Ć", "ć", },
{ "G", "g", ":", ";", "G", "g", ":", ";", "Ô", "ô", "Č", "č", },
{ "H", "h", "\"", "'", "H", "h", "\"", "'", "Œ", "œ", "Đ", "đ", },
{ "J", "j", "{", "[", "J", "j", "{", "[", "Ù", "ù", "Š", "š", },
{ "K", "k", "}", "]", "K", "k", "}", "]", "Û", "û", "Ž", "ž", },
{ "L", "l", "_", "-", "Ô", "ô", "_", "-", "Ÿ", "ÿ", "Ő", "ő", },
},
},
-- fourth row
{
{ "Sym", "Sym", "ABC", "ABC", "Sym", "Sym", "ABC", "ABC", "Sym", "Sym", "ABC", "ABC",
width = 1.5},
{ label = "IM",
icon = "resources/icons/appbar.globe.wire.png",
-- third row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ label = "Shift",
icon = "resources/icons/appbar.arrow.shift.png",
width = 1.5
},
{ "Z", "z", "&", "7", "Z", "z", "&", "7", "Á", "á", "Ű", "ű", },
{ "X", "x", "*", "8", "x", "x", "*", "8", "É", "é", "Ø", "ø", },
{ "C", "c", "£", "9", "Ç", "ç", "£", "9", "Í", "í", "Þ", "þ", },
{ "V", "v", "<", "", "V", "v", "<", ",", "Ñ", "ñ", "Ý", "ý", },
{ "B", "b", ">", ".", "B", "b", ">", ".", "Ó", "ó", "", "", },
{ "N", "n", "", "", "N", "n", "", "", "Ú", "ú", "", "", },
{ "M", "m", "", "", "M", "m", "", "", "Ç", "ç", "", "¨", },
{ label = "Backspace",
icon = "resources/icons/appbar.clear.reflect.horizontal.png",
width = 1.5
},
},
{ "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", },
{ label = "space",
" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ",
width = 4.0},
{ ",", ".", ".", ",", ",", ".", ".PL", ".pl", ",", ".", ",", ".", },
{ label = "Enter",
"\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n",
icon = "resources/icons/appbar.arrow.enter.png",
width = 1.5,
-- fourth row
{
{ "Sym", "Sym", "ABC", "ABC", "Sym", "Sym", "ABC", "ABC", "Sym", "Sym", "ABC", "ABC",
width = 1.5},
{ label = "IM",
icon = "resources/icons/appbar.globe.wire.png",
},
{ "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", },
{ label = "space",
" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ",
width = 4.0},
{ ",", ".", ".", ",", ",", ".", ".PL", ".pl", ",", ".", ",", ".", },
{ label = "Enter",
"\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n",
icon = "resources/icons/appbar.arrow.enter.png",
width = 1.5,
},
},
}
},
}

@ -1,64 +1,69 @@
return {
-- first row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ "Q", "q", "", "0", "Й", "й", "?", "!", "Ä", "ä", "1", "ª", },
{ "W", "w", "!", "1", "Ц", "ц", "(", "1", "Ö", "ö", "2", "º", },
{ "E", "e", "@", "2", "У", "у", ")", "2", "Ü", "ü", "3", "¡", },
{ "R", "r", "#", "3", "К", "к", "~", "3", "ß", "ß", "4", "¿", },
{ "T", "t", "+", "=", "Е", "е", "Ә", "ә", "À", "à", "5", "¼", },
{ "Y", "y", "", "(", "Н", "н", "І", "і", "Â", "â", "6", "½", },
{ "U", "u", "", ")", "Г", "г", "Ң", "ң", "Æ", "æ", "7", "¾", },
{ "I", "i", "|", "\\", "Ш", "ш", "Ғ", "ғ", "Ç", "ç", "8", "©", },
{ "O", "o", "?", "/", "Щ", "щ", "Х", "х", "È", "è", "9", "®", },
{ "P", "p", "~", "`", "З", "з", "Ъ", "ъ", "É", "é", "0", "", },
},
-- second row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ "A", "a", "", "@", "Ф", "ф", "*", "0", "Ê", "ê", "Ş", "ş", },
{ "S", "s", "$", "4", "Ы", "ы", "+", "4", "Ë", "ë", "İ", "ı", },
{ "D", "d", "%", "5", "В", "в", "-", "5", "Î", "î", "Ğ", "ğ", },
{ "F", "f", "^", "6", "А", "а", "=", "6", "Ï", "ï", "Ć", "ć", },
{ "G", "g", ":", ";", "П", "п", "Ү", "ү", "Ô", "ô", "Č", "č", },
{ "H", "h", "\"", "'", "Р", "р", "Ұ", "ұ", "Œ", "œ", "Đ", "đ", },
{ "J", "j", "{", "[", "О", "о", "Қ", "қ", "Ù", "ù", "Š", "š", },
{ "K", "k", "}", "]", "Л", "л", "Ж", "ж", "Û", "û", "Ž", "ž", },
{ "L", "l", "_", "-", "Д", "д", "Э", "э", "Ÿ", "ÿ", "Ő", "ő", },
},
-- third row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ label = "Shift",
icon = "resources/icons/appbar.arrow.shift.png",
width = 1.5
shiftmode_keys = {["Shift"] = true},
symbolmode_keys = {["Sym"] = true, ["ABC"] = true},
utf8mode_keys = {["IM"] = true},
umlautmode_keys = {["Äéß"] = true},
keys = {
-- first row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ "Q", "q", "", "0", "Й", "й", "?", "!", "Ä", "ä", "1", "ª", },
{ "W", "w", "!", "1", "Ц", "ц", "(", "1", "Ö", "ö", "2", "º", },
{ "E", "e", "@", "2", "У", "у", ")", "2", "Ü", "ü", "3", "¡", },
{ "R", "r", "#", "3", "К", "к", "~", "3", "ß", "ß", "4", "¿", },
{ "T", "t", "+", "=", "Е", "е", "Ә", "ә", "À", "à", "5", "¼", },
{ "Y", "y", "", "(", "Н", "н", "І", "і", "Â", "â", "6", "½", },
{ "U", "u", "", ")", "Г", "г", "Ң", "ң", "Æ", "æ", "7", "¾", },
{ "I", "i", "|", "\\", "Ш", "ш", "Ғ", "ғ", "Ç", "ç", "8", "©", },
{ "O", "o", "?", "/", "Щ", "щ", "Х", "х", "È", "è", "9", "®", },
{ "P", "p", "~", "`", "З", "з", "Ъ", "ъ", "É", "é", "0", "", },
},
{ "Z", "z", "&", "7", "Я", "я", ":", "7", "Á", "á", "Ű", "ű", },
{ "X", "x", "*", "8", "Ч", "ч", ";", "8", "É", "é", "Ø", "ø", },
{ "C", "c", "£", "9", "С", "с", "'", "9", "Í", "í", "Þ", "þ", },
{ "V", "v", "<", "", "М", "м", "Ө", "ө", "Ñ", "ñ", "Ý", "ý", },
{ "B", "b", ">", ".", "И", "и", "Һ", "һ", "Ó", "ó", "", "", },
{ "N", "n", "", "", "Т", "т", "Б", "б", "Ú", "ú", "", "", },
{ "M", "m", "", "", "Ь", "ь", "Ю", "ю", "Ç", "ç", "", "¨", },
{ label = "Backspace",
icon = "resources/icons/appbar.clear.reflect.horizontal.png",
width = 1.5
-- second row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ "A", "a", "", "@", "Ф", "ф", "*", "0", "Ê", "ê", "Ş", "ş", },
{ "S", "s", "$", "4", "Ы", "ы", "+", "4", "Ë", "ë", "İ", "ı", },
{ "D", "d", "%", "5", "В", "в", "-", "5", "Î", "î", "Ğ", "ğ", },
{ "F", "f", "^", "6", "А", "а", "=", "6", "Ï", "ï", "Ć", "ć", },
{ "G", "g", ":", ";", "П", "п", "Ү", "ү", "Ô", "ô", "Č", "č", },
{ "H", "h", "\"", "'", "Р", "р", "Ұ", "ұ", "Œ", "œ", "Đ", "đ", },
{ "J", "j", "{", "[", "О", "о", "Қ", "қ", "Ù", "ù", "Š", "š", },
{ "K", "k", "}", "]", "Л", "л", "Ж", "ж", "Û", "û", "Ž", "ž", },
{ "L", "l", "_", "-", "Д", "д", "Э", "э", "Ÿ", "ÿ", "Ő", "ő", },
},
},
-- fourth row
{
{ "Sym", "Sym", "ABC", "ABC", "Sym", "Sym", "ABC", "ABC", "Sym", "Sym", "ABC", "ABC",
width = 1.5},
{ label = "IM",
icon = "resources/icons/appbar.globe.wire.png",
-- third row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ label = "Shift",
icon = "resources/icons/appbar.arrow.shift.png",
width = 1.5
},
{ "Z", "z", "&", "7", "Я", "я", ":", "7", "Á", "á", "Ű", "ű", },
{ "X", "x", "*", "8", "Ч", "ч", ";", "8", "É", "é", "Ø", "ø", },
{ "C", "c", "£", "9", "С", "с", "'", "9", "Í", "í", "Þ", "þ", },
{ "V", "v", "<", "", "М", "м", "Ө", "ө", "Ñ", "ñ", "Ý", "ý", },
{ "B", "b", ">", ".", "И", "и", "Һ", "һ", "Ó", "ó", "", "", },
{ "N", "n", "", "", "Т", "т", "Б", "б", "Ú", "ú", "", "", },
{ "M", "m", "", "", "Ь", "ь", "Ю", "ю", "Ç", "ç", "", "¨", },
{ label = "Backspace",
icon = "resources/icons/appbar.clear.reflect.horizontal.png",
width = 1.5
},
},
{ "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", },
{ label = "space",
" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ",
width = 4.0},
{ ",", ".", ".", ",", ",", ".", "Ё", "ё", ",", ".", ",", ".", },
{ label = "Enter",
"\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n",
icon = "resources/icons/appbar.arrow.enter.png",
width = 1.5,
-- fourth row
{
{ "Sym", "Sym", "ABC", "ABC", "Sym", "Sym", "ABC", "ABC", "Sym", "Sym", "ABC", "ABC",
width = 1.5},
{ label = "IM",
icon = "resources/icons/appbar.globe.wire.png",
},
{ "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", },
{ label = "space",
" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ",
width = 4.0},
{ ",", ".", ".", ",", ",", ".", "Ё", "ё", ",", ".", ",", ".", },
{ label = "Enter",
"\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n",
icon = "resources/icons/appbar.arrow.enter.png",
width = 1.5,
},
},
}
},
}

@ -1,65 +1,70 @@
return {
-- first row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ "Q", "q", "!", "1", "Я", "я", "1", "!", "Ä", "ä", "1", "ª", },
{ "W", "w", "?", "2", "Ж", "ж", "2", "?", "Ö", "ö", "2", "º", },
{ "E", "e", "|", "3", "Е", "е", "3", "«", "Ü", "ü", "3", "¡", },
{ "R", "r", "#", "4", "Р", "р", "4", "»", "ß", "ß", "4", "¿", },
{ "T", "t", "@", "5", "Т", "т", "5", ":", "À", "à", "5", "¼", },
{ "Y", "y", "", "6", "Ы", "ы", "6", ";", "Â", "â", "6", "½", },
{ "U", "u", "'", "7", "У", "у", "7", "~", "Æ", "æ", "7", "¾", },
{ "I", "i", "`", "8", "И", "и", "8", "(", "Ç", "ç", "8", "©", },
{ "O", "o", ":", "9", "О", "о", "9", ")", "È", "è", "9", "®", },
{ "P", "p", ";", "0", "П", "п", "0", "=", "É", "é", "0", "", },
},
-- second row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ "A", "a", "", "+", "А", "а", "Ш", "ш", "Ê", "ê", "Ş", "ş", },
{ "S", "s", "_", "-", "С", "с", "Ѕ", "ѕ", "Ë", "ë", "İ", "ı", },
{ "D", "d", "=", "*", "Д", "д", "Э", "э", "Î", "î", "Ğ", "ğ", },
{ "F", "f", "\\", "/", "Ф", "ф", "Ю", "ю", "Ï", "ï", "Ć", "ć", },
{ "G", "g", "", "%", "Г", "г", "Ґ", "ґ", "Ô", "ô", "Č", "č", },
{ "H", "h", "", "^", "Ч", "ч", "Ј", "ј", "Œ", "œ", "Đ", "đ", },
{ "J", "j", "", "<", "Й", "й", "І", "і", "Ù", "ù", "Š", "š", },
{ "K", "k", "\"", "=", "К", "к", "Ќ", "ќ", "Û", "û", "Ž", "ž", },
{ "L", "l", "~", ">", "Л", "л", "Љ", "љ", "Ÿ", "ÿ", "Ő", "ő", },
},
-- third row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ label = "Shift",
icon = "resources/icons/appbar.arrow.shift.png",
width = 1.5
shiftmode_keys = {["Shift"] = true},
symbolmode_keys = {["Sym"] = true, ["ABC"] = true},
utf8mode_keys = {["IM"] = true},
umlautmode_keys = {["Äéß"] = true},
keys = {
-- first row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ "Q", "q", "!", "1", "Я", "я", "1", "!", "Ä", "ä", "1", "ª", },
{ "W", "w", "?", "2", "Ж", "ж", "2", "?", "Ö", "ö", "2", "º", },
{ "E", "e", "|", "3", "Е", "е", "3", "«", "Ü", "ü", "3", "¡", },
{ "R", "r", "#", "4", "Р", "р", "4", "»", "ß", "ß", "4", "¿", },
{ "T", "t", "@", "5", "Т", "т", "5", ":", "À", "à", "5", "¼", },
{ "Y", "y", "", "6", "Ы", "ы", "6", ";", "Â", "â", "6", "½", },
{ "U", "u", "'", "7", "У", "у", "7", "~", "Æ", "æ", "7", "¾", },
{ "I", "i", "`", "8", "И", "и", "8", "(", "Ç", "ç", "8", "©", },
{ "O", "o", ":", "9", "О", "о", "9", ")", "È", "è", "9", "®", },
{ "P", "p", ";", "0", "П", "п", "0", "=", "É", "é", "0", "", },
},
{ "Z", "z", "$", "(", "З", "з", "Щ", "щ", "Á", "á", "Ű", "ű", },
{ "X", "x", "", ")", "Х", "х", "", "@", "É", "é", "Ø", "ø", },
{ "C", "c", "¥", "{", "Ц", "ц", "Џ", "џ", "Í", "í", "Þ", "þ", },
{ "V", "v", "£", "}", "В", "в", "Ў", "ў", "Ñ", "ñ", "Ý", "ý", },
{ "B", "b", "", "[", "Б", "б", "Ћ", "ћ", "Ó", "ó", "", "", },
{ "N", "n", "", "]", "Н", "н", "Њ", "њ", "Ú", "ú", "", "", },
{ "M", "m", "", "&", "М", "м", "Ї", "ї", "Ç", "ç", "", "¨", },
{ label = "Backspace",
icon = "resources/icons/appbar.clear.reflect.horizontal.png",
width = 1.5
-- second row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ "A", "a", "", "+", "А", "а", "Ш", "ш", "Ê", "ê", "Ş", "ş", },
{ "S", "s", "_", "-", "С", "с", "Ѕ", "ѕ", "Ë", "ë", "İ", "ı", },
{ "D", "d", "=", "*", "Д", "д", "Э", "э", "Î", "î", "Ğ", "ğ", },
{ "F", "f", "\\", "/", "Ф", "ф", "Ю", "ю", "Ï", "ï", "Ć", "ć", },
{ "G", "g", "", "%", "Г", "г", "Ґ", "ґ", "Ô", "ô", "Č", "č", },
{ "H", "h", "", "^", "Ч", "ч", "Ј", "ј", "Œ", "œ", "Đ", "đ", },
{ "J", "j", "", "<", "Й", "й", "І", "і", "Ù", "ù", "Š", "š", },
{ "K", "k", "\"", "=", "К", "к", "Ќ", "ќ", "Û", "û", "Ž", "ž", },
{ "L", "l", "~", ">", "Л", "л", "Љ", "љ", "Ÿ", "ÿ", "Ő", "ő", },
},
},
-- fourth row
{
{ "Sym", "Sym", "ABC", "ABC", "Sym", "Sym", "ABC", "ABC", "Sym", "Sym", "ABC", "ABC",
width = 1.5},
{ label = "IM",
icon = "resources/icons/appbar.globe.wire.png",
-- third row
{ -- 1 2 3 4 5 6 7 8 9 10 11 12
{ label = "Shift",
icon = "resources/icons/appbar.arrow.shift.png",
width = 1.5
},
{ "Z", "z", "$", "(", "З", "з", "Щ", "щ", "Á", "á", "Ű", "ű", },
{ "X", "x", "", ")", "Х", "х", "", "@", "É", "é", "Ø", "ø", },
{ "C", "c", "¥", "{", "Ц", "ц", "Џ", "џ", "Í", "í", "Þ", "þ", },
{ "V", "v", "£", "}", "В", "в", "Ў", "ў", "Ñ", "ñ", "Ý", "ý", },
{ "B", "b", "", "[", "Б", "б", "Ћ", "ћ", "Ó", "ó", "", "", },
{ "N", "n", "", "]", "Н", "н", "Њ", "њ", "Ú", "ú", "", "", },
{ "M", "m", "", "&", "М", "м", "Ї", "ї", "Ç", "ç", "", "¨", },
{ label = "Backspace",
icon = "resources/icons/appbar.clear.reflect.horizontal.png",
width = 1.5
},
},
{ "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", },
{ label = "space",
" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ",
width = 4.0},
{ ",", ".", ",", ".", ",", ".", "Є", "є", ",", ".", ",", ".", },
{ label = "Enter",
"\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n",
icon = "resources/icons/appbar.arrow.enter.png",
width = 1.5,
-- fourth row
{
{ "Sym", "Sym", "ABC", "ABC", "Sym", "Sym", "ABC", "ABC", "Sym", "Sym", "ABC", "ABC",
width = 1.5},
{ label = "IM",
icon = "resources/icons/appbar.globe.wire.png",
},
{ "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", "Äéß", },
{ label = "space",
" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ",
width = 4.0},
{ ",", ".", ",", ".", ",", ".", "Є", "є", ",", ".", ",", ".", },
{ label = "Enter",
"\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n",
icon = "resources/icons/appbar.arrow.enter.png",
width = 1.5,
},
},
}
},
}

@ -32,14 +32,14 @@ local VirtualKey = InputContainer:new{
}
function VirtualKey:init()
if self.label == "Sym" or self.label == "ABC" then
self.callback = function () self.keyboard:setLayout(self.key or self.label) end
elseif self.label == "Shift" then
self.callback = function () self.keyboard:setLayout(self.key or self.label) end
elseif self.label == "IM" then
self.callback = function () self.keyboard:setLayout(self.key or self.label) end
elseif self.label == "Äéß" then
self.callback = function () self.keyboard:setLayout(self.key or self.label) end
if self.keyboard.symbolmode_keys[self.label] ~= nil then
self.callback = function () self.keyboard:setLayout("Sym") end
elseif self.keyboard.shiftmode_keys[self.label] ~= nil then
self.callback = function () self.keyboard:setLayout("Shift") end
elseif self.keyboard.utf8mode_keys[self.label] ~= nil then
self.callback = function () self.keyboard:setLayout("IM") end
elseif self.keyboard.umlautmode_keys[self.label] ~= nil then
self.callback = function () self.keyboard:setLayout("Äéß") end
elseif self.label == "Backspace" then
self.callback = function () self.keyboard:delChar() end
self.hold_callback = function () self.keyboard:clear() end
@ -132,6 +132,10 @@ local VirtualKeyboard = InputContainer:new{
disable_double_tap = true,
inputbox = nil,
KEYS = {}, -- table to store layouts
shiftmode_keys = {},
symbolmode_keys = {},
utf8mode_keys = {},
umlautmode_keys = {},
min_layout = 2,
max_layout = 12,
layout = 2,
@ -141,14 +145,15 @@ local VirtualKeyboard = InputContainer:new{
umlautmode = false,
width = Screen:scaleBySize(600),
height = Screen:scaleBySize(256),
bordersize = 2,
padding = 2,
height = nil,
bordersize = Screen:scaleBySize(2),
padding = Screen:scaleBySize(2),
key_padding = Screen:scaleBySize(6),
}
local lang_to_keyboard_layout = {
el = "el_keyboard",
ja = "ja_keyboard",
pl = "pl_keyboard",
pt_BR = "pt_keyboard",
}
@ -156,7 +161,13 @@ local lang_to_keyboard_layout = {
function VirtualKeyboard:init()
local lang = G_reader_settings:readSetting("language")
local keyboard_layout = lang_to_keyboard_layout[lang] or "std"
self.KEYS = require("ui/data/keyboardlayouts/" .. keyboard_layout)
local keyboard = require("ui/data/keyboardlayouts/" .. keyboard_layout)
self.KEYS = keyboard.keys
self.shiftmode_keys = keyboard.shiftmode_keys
self.symbolmode_keys = keyboard.symbolmode_keys
self.utf8mode_keys = keyboard.utf8mode_keys
self.umlautmode_keys = keyboard.umlautmode_keys
self.height = Screen:scaleBySize(64 * #self.KEYS)
self:initLayout(self.layout)
end
@ -202,8 +213,8 @@ function VirtualKeyboard:initLayout(layout)
end
function VirtualKeyboard:addKeys()
local base_key_width = math.floor((self.width - 11*self.key_padding - 2*self.padding)/10)
local base_key_height = math.floor((self.height - 5*self.key_padding - 2*self.padding)/4)
local base_key_width = math.floor((self.width - (#self.KEYS[1] + 1)*self.key_padding - 2*self.padding)/#self.KEYS[1])
local base_key_height = math.floor((self.height - (#self.KEYS + 1)*self.key_padding - 2*self.padding)/#self.KEYS)
local h_key_padding = HorizontalSpan:new{width = self.key_padding}
local v_key_padding = VerticalSpan:new{width = self.key_padding}
local vertical_group = VerticalGroup:new{}

Loading…
Cancel
Save