return {
pco = { -- period + colon
" . " ,
north = " : " ,
alt_label = " : " ,
northeast = " ' " ,
northwest = " = " ,
east = " ! " ,
west = " ? " ,
south = " | " ,
southeast = " \\ " ,
southwest = " / " ,
' ^ ' ,
" & " ,
" $ " ,
} ,
cop = { -- colon + period
" : " ,
north = " . " ,
alt_label = " . " ,
northeast = " ' " ,
northwest = " = " ,
east = " ! " ,
west = " ? " ,
south = " | " ,
southeast = " \\ " ,
southwest = " / " ,
' ^ ' ,
" & " ,
" $ " ,
} ,
quo = {
' " ' ,
north = " ' " ,
alt_label = " ' " ,
northeast = " » " ,
northwest = " « " ,
east = " ” " ,
west = " “ " ,
south = " ` " ,
southeast = " ’ " ,
southwest = " ‘ " ,
" ‹ " ,
" › " ,
} ,
cse = { -- comma + semicolon
" , " ,
north = " ; " ,
alt_label = " ; " ,
northeast = " } " ,
northwest = " { " ,
east = { label = " !… " , key = " !important; " } ,
west = " - " ,
south = " * " ,
southwest = " 0 " ,
southeast = " > " ,
" [ " ,
" + " ,
" ] " ,
width = 1.0 ,
} ,
sec = { -- semicolon + comma
" ; " ,
north = " , " ,
alt_label = " , " ,
northeast = " } " ,
northwest = " { " ,
east = { label = " !… " , key = " !important; " } ,
west = " - " ,
south = " * " ,
southwest = " 0 " ,
southeast = " > " ,
" [ " ,
" * " ,
" ] " ,
width = 1.0 ,
} ,
-- Russian layout, top row of letters (11 keys): й ц у к е /ё н г ш щ з х
_YK = { " Й " , north = " й " , } ,
_yk = { " й " , north = " Й " , } ,
_TS = { " Ц " , north = " ц " , } ,
_ts = { " ц " , north = " Ц " , } ,
_UU = { " У " , north = " у " , northeast = " ұ " , east = " Ұ " , } , -- with Kazakh letter(s)
_uu = { " у " , north = " У " , northeast = " Ұ " , east = " ұ " , } , -- with Kazakh letter(s)
_KK = { " К " , north = " к " , northeast = " қ " , east = " Қ " , } , -- with Kazakh letter(s)
_kk = { " к " , north = " К " , northeast = " Қ " , east = " қ " , } , -- with Kazakh letter(s)
_YE = { " Е " , north = " е " , northwest = " ё " , west = " Ё " , } ,
_ye = { " е " , north = " Е " , northwest = " Ё " , west = " ё " , } ,
_EN = { " Н " , north = " н " , northeast = " ң " , east = " Ң " , } , -- with Kazakh letter(s)
_en = { " н " , north = " Н " , northeast = " Ң " , east = " ң " , } , -- with Kazakh letter(s)
_GG = { " Г " , north = " г " , northeast = " ғ " , northwest = " ґ " , east = " Ғ " , west = " Ґ " , } , -- with Kazakh and Ukrainian letter(s)
_gg = { " г " , north = " Г " , northeast = " Ғ " , northwest = " Ґ " , east = " ғ " , west = " ґ " , } , -- with Kazakh and Ukrainian letter(s)
_WA = { " Ш " , north = " ш " , } ,
_wa = { " ш " , north = " Ш " , } ,
_WE = { " Щ " , north = " щ " , } ,
_we = { " щ " , north = " Щ " , } ,
_ZE = { " З " , north = " з " , } ,
_ze = { " з " , north = " З " , } ,
_HA = { " Х " , north = " х " , northeast = " һ " , east = " Һ " , } , -- with Kazakh letter(s)
_ha = { " х " , north = " Х " , northeast = " Һ " , east = " һ " , } , -- with Kazakh letter(s)
-- Russian layout, middle row of letters (11 keys): ф ы в а п р о л д ж э
_EF = { " Ф " , north = " ф " , } ,
_ef = { " ф " , north = " Ф " , } ,
_YY = { " Ы " , north = " ы " , northwest = " і " , west = " І " , } ,
_yy = { " ы " , north = " Ы " , northwest = " І " , west = " і " , } ,
_VE = { " В " , north = " в " , } ,
_ve = { " в " , north = " В " , } ,
_AA = { " А " , north = " а " , northeast = " ә " , east = " Ә " , } , -- with Kazakh letter(s)
_aa = { " а " , north = " А " , northeast = " Ә " , east = " ә " , } , -- with Kazakh letter(s)
_PE = { " П " , north = " п " , } ,
_pe = { " п " , north = " П " , } ,
_ER = { " Р " , north = " р " , } ,
_er = { " р " , north = " Р " , } ,
_OO = { " О " , north = " о " , northeast = " ө " , east = " Ө " , } , -- with Kazakh letter(s)
_oo = { " о " , north = " О " , northeast = " Ө " , east = " ө " , } , -- with Kazakh letter(s)
_EL = { " Л " , north = " л " , } ,
_el = { " л " , north = " Л " , } ,
_DE = { " Д " , north = " д " , } ,
_de = { " д " , north = " Д " , } ,
_JE = { " Ж " , north = " ж " , northwest = " ӂ " , west = " Ӂ " , } , -- Ж with breve (Moldavian)
_je = { " ж " , north = " Ж " , northwest = " Ӂ " , west = " ӂ " , } , -- ж with breve (Moldavian)
_EE = { " Э " , north = " э " , northwest = " є " , west = " Є " , } , -- with Ukrainian letter(s)
_ee = { " э " , north = " Э " , northwest = " Є " , west = " є " , } , -- with Ukrainian letter(s)
-- Russian layout, bottom row of letters (9 keys): я ч с м и т ь/ъ б ю
_YA = { " Я " , north = " я " , } , -- width is changed is that Shift and Backspace can be 1.5 wide
_ya = { " я " , north = " Я " , } ,
_CH = { " Ч " , north = " ч " , } ,
_ch = { " ч " , north = " Ч " , } ,
_ES = { " С " , north = " с " , } ,
_es = { " с " , north = " С " , } ,
_EM = { " М " , north = " м " , } ,
_em = { " м " , north = " М " , } ,
_II = { " И " , north = " и " , northeast = " і " , northwest = " ї " , west = " ї " , east = " і " , } , -- with Kazakh and Ukrainian letter(s)
_ii = { " и " , north = " И " , northeast = " I " , northwest = " Ї " , west = " ї " , east = " і " , } , -- with Kazakh and Ukrainian letter(s)
_TE = { " Т " , north = " т " , } ,
_te = { " т " , north = " Т " , } ,
_SH = { " Ь " , north = " ь " , northwest = " ъ " , west = " Ъ " , } ,
_sh = { " ь " , north = " Ь " , northwest = " Ъ " , west = " ъ " , } ,
_BE = { " Б " , north = " б " , } ,
_be = { " б " , north = " Б " , } ,
_YU = { " Ю " , north = " ю " , northeast = " ү " , east = " Ү " , } , -- with Kazakh letter(s)
_yu = { " ю " , north = " Ю " , northeast = " Ү " , east = " ү " , } , -- with Kazakh letter(s)
-- _1_ and _1p: numeric key 1 and its popup sibling (they have north swipe ups of each other, the rest is the same)
-- _1n and _1s: numpad key 1 (layer 2), -- superscript key 1 (layer 2, shifted)
_1_ = { " 1 " , north = " ! " , alt_label = " ! " , northeast = " ¡ " , south = " ' " , southeast = " ¿ " , east = " ? " , } ,
_1p = { " ! " , north = " 1 " , alt_label = " 1 " , northeast = " ¡ " , south = " ' " , southeast = " ¿ " , east = " ? " , } ,
_1n = { " 1 " , north = " ¹ " , northeast = " ⅑ " , northwest = " ⅐ " , east = " ⅙ " , west = " ¼ " , south = " ₁ " , southwest = " ½ " , southeast = " ⅓ " , " ⅕ " , " ⅛ " , " ⅒ " , } ,
_1s = { " ¹ " , north = " 1 " , northeast = " ⅑ " , northwest = " ⅐ " , east = " ⅙ " , west = " ¼ " , south = " ₁ " , southwest = " ½ " , southeast = " ⅓ " , " ⅕ " , " ⅛ " , " ⅒ " , } ,
_2_ = { " 2 " , north = " @ " , alt_label = " @ " , northeast = " ~ " , northwest = " http:// " , east = " - " , west = " https:// " , south = ' " ' , southeast = " … " , southwest = " / " , } ,
_2p = { " @ " , north = " 2 " , alt_label = " 2 " , northeast = " ~ " , northwest = " http:// " , east = " - " , west = " https:// " , south = ' " ' , southeast = " … " , southwest = " / " , } ,
_2n = { " 2 " , north = " ² " , northeast = " ⅖ " , east = " ½ " , south = " ₂ " , southeast = " ⅔ " , } , -- numpad 2
_2s = { " ² " , north = " 2 " , northeast = " ⅖ " , east = " ½ " , south = " ₂ " , southeast = " ⅔ " , } , -- superscript 2
_3_ = { " 3 " , north = " # " , alt_label = " # " , northeast = " ☑ " , northwest = " ★ " , east = " ☐ " , west = " • " , south = " № " , southeast = " ☒ " , southwest = " ☆ " , " :) " , " :| " , " :( " , } ,
_3p = { " # " , north = " 3 " , alt_label = " 3 " , northeast = " ☑ " , northwest = " ★ " , east = " ☐ " , west = " • " , south = " № " , southeast = " ☒ " , southwest = " ☆ " , " :) " , " :| " , " :( " , } ,
_3n = { " 3 " , north = " ³ " , northwest = " ¾ " , east = " ⅓ " , west = " ⅗ " , southwest = " ⅜ " , south = " ₃ " , } , -- numpad 3
_3s = { " ³ " , north = " 3 " , northwest = " ¾ " , east = " ⅓ " , west = " ⅗ " , southwest = " ⅜ " , south = " ₃ " , } , -- superscript 3
_4_ = { " 4 " , north = " $ " , alt_label = " $ " , northeast = " ₸ " , northwest = " ¥ " , east = " ₽ " , west = " £ " , south = " € " , southeast = " ¢ " , southwest = " ₪ " , " ₹ " , " ₿ " , " ₺ " , } ,
_4p = { " $ " , north = " 4 " , alt_label = " 4 " , northeast = " ₸ " , northwest = " ¥ " , east = " ₽ " , west = " £ " , south = " € " , southeast = " ¢ " , southwest = " ₪ " , " ₹ " , " ₿ " , " ₺ " , } ,
_4n = { " 4 " , north = " ⁴ " , east = " ¼ " , south = " ₄ " , southeast = " ⅘ " , } , -- numpad 4
_4s = { " ⁴ " , north = " 4 " , east = " ¼ " , south = " ₄ " , southeast = " ⅘ " , } , -- superscript 4
_5_ = { " 5 " , north = " % " , alt_label = " % " , northeast = " ‱ " , northwest = " ‰ " , east = " ⅓ " , west = " ¼ " , south = " ½ " , southeast = " ⅔ " , southwest = " ¾ " , } ,
_5p = { " % " , north = " 5 " , alt_label = " 5 " , northeast = " ‱ " , northwest = " ‰ " , east = " ⅓ " , west = " ¼ " , south = " ½ " , southeast = " ⅔ " , southwest = " ¾ " , } ,
_5n = { " 5 " , north = " ⁵ " , northeast = " ⅚ " , east = " ⅕ " , south = " ₅ " , southeast = " ⅝ " , } , -- numpad 5
_5s = { " ⁵ " , north = " 5 " , northeast = " ⅚ " , east = " ⅕ " , south = " ₅ " , southeast = " ⅝ " , } , -- superscript 5
-- diacritics. Symbols in quotation marks might look weird, however they should work fine.
_6_ = {
" 6 " ,
north = " ^ " ,
alt_label = " ^ " ,
northeast = { label = " ◌́ " , key = " ́ " , } , -- Combining Acute Accent
northwest = { label = " ◌̀ " , key = " ̀ " , } , -- Combinig Grave Accent
east = { label = " ◌̂ " , key = " ̂ " , } , -- Combining Circumflex Accent
west = { label = " ◌̃ " , key = " ̃ " , } , -- Combining Tilde
south = { label = " ◌̧ " , key = " ̧ " , } , -- Combining Cedilla
southeast = { label = " ◌̈ " , key = " ̈ " , } , -- Combining Diaeresis (Umlaut)
southwest = { label = " ◌̇ " , key = " ̇ " , } , -- Combining Dot Above
{ label = " ◌̄ " , key = " ̄ " , } , -- Combining Macron
{ label = " ◌̌ " , key = " ̌ " , } , -- Combining Caron
{ label = " ◌̨ " , key = " ̨ " , } , -- Combining Ogonek
} ,
_6p = {
" ^ " ,
north = " 6 " ,
alt_label = " 6 " ,
northeast = { label = " ◌́ " , key = " ́ " , } , -- Combining Acute Accent
northwest = { label = " ◌̀ " , key = " ̀ " , } , -- Combinig Grave Accent
east = { label = " ◌̂ " , key = " ̂ " , } , -- Combining Circumflex Accent
west = { label = " ◌̃ " , key = " ̃ " , } , -- Combining Tilde
south = { label = " ◌̧ " , key = " ̧ " , } , -- Combining Cedilla
southeast = { label = " ◌̈ " , key = " ̈ " , } , -- Combining Diaeresis (Umlaut)
southwest = { label = " ◌̇ " , key = " ̇ " , } , -- Combining Dot Above
{ label = " ◌̄ " , key = " ̄ " , } , -- Combining Macron
{ label = " ◌̌ " , key = " ̌ " , } , -- Combining Caron
{ label = " ◌̨ " , key = " ̨ " , } , -- Combining Ogonek
} ,
_6n = { " 6 " , north = " ⁶ " , east = " ⅙ " , south = " ₆ " , } , -- numpad 6
_6s = { " ⁶ " , north = " 6 " , east = " ⅙ " , south = " ₆ " , } , -- superscript 6
_7_ = { " 7 " , north = " & " , alt_label = " & " , northeast = " » " , northwest = " « " , east = " ¶ " , west = " § " , south = " ¤ " , southeast = " ⟩ " , southwest = " ⟨ " , " † " , " ■ " , " ‡ " , } ,
_7p = { " & " , north = " 7 " , alt_label = " 7 " , northeast = " » " , northwest = " « " , east = " ¶ " , west = " § " , south = " ¤ " , southeast = " ⟩ " , southwest = " ⟨ " , " † " , " ■ " , " ‡ " , } ,
_7n = { " 7 " , north = " ⁷ " , east = " ⅐ " , south = " ₇ " , southeast = " ⅞ " , } , -- numpad 7
_7s = { " ⁷ " , north = " 7 " , east = " ⅐ " , south = " ₇ " , southeast = " ⅞ " , } , -- superscript 7
_8_ = { " 8 " , north = " * " , alt_label = " * " , northeast = " = " , northwest = " ≠ " , east = " + " , west = " - " , south = " / " , southeast = " > " , southwest = " < " , " ≤ " , " ≈ " , " ≥ " , } ,
_8p = { " * " , north = " 8 " , alt_label = " 8 " , northeast = " = " , northwest = " ≠ " , east = " + " , west = " - " , south = " / " , southeast = " > " , southwest = " < " , " ≤ " , " ≈ " , " ≥ " , } ,
_8n = { " 8 " , north = " ⁸ " , east = " ⅛ " , south = " ₈ " , } , -- numpad 8
_8s = { " ⁸ " , north = " 8 " , east = " ⅛ " , south = " ₈ " , } , -- superscript 8
_9_ = { " 9 " , north = " ( " , alt_label = " ( " , northeast = " _ " , northwest = " “ " , east = " - " , west = " { " , south = " [ " , southeast = " — " , southwest = " ‘ " , } ,
_9p = { " ( " , north = " 9 " , alt_label = " 9 " , northeast = " _ " , northwest = " “ " , east = " - " , west = " { " , south = " [ " , southeast = " — " , southwest = " ‘ " , } ,
_9n = { " 9 " , north = " ⁹ " , east = " ⅑ " , south = " ₉ " , } , -- numpad 9
_9s = { " ⁹ " , north = " 9 " , east = " ⅑ " , south = " ₉ " , } , -- superscript 9
_0_ = { " 0 " , north = " ) " , alt_label = " ) " , northwest = " ” " , west = " } " , south = " ] " , southwest = " ’ " , } ,
_0p = { " ) " , north = " 0 " , alt_label = " 0 " , northwest = " ” " , west = " } " , south = " ] " , southwest = " ’ " , } ,
_0n = { " 0 " , north = " ⁰ " , south = " ₀ " , } , -- numpad 0
_0s = { " ⁰ " , north = " 0 " , south = " ₀ " , } , -- superscript 0
sla = { " / " , north = " ÷ " , alt_label = " ÷ " , northeast = " ⅟ " , east = " ⁄ " , } , -- numpad slash
sl2 = { " ÷ " , north = " / " , alt_label = " / " , northeast = " ⅟ " , east = " ⁄ " , } , -- superscript slash
eql = { " = " , north = " ≠ " , alt_label = " ≠ " , northwest = " ≃ " , west = " ≡ " , south = " ≈ " , southwest = " ≉ " , } , -- equality
eq2 = { " ≠ " , north = " = " , alt_label = " = " , northwest = " ≃ " , west = " ≡ " , south = " ≈ " , southwest = " ≉ " , } , -- popup sibling
ls1 = { " < " , north = " ≤ " , alt_label = " ≤ " , south = " ≪ " , } , -- "less than" sign
ls2 = { " ≤ " , north = " < " , alt_label = " < " , south = " ≪ " , } , -- (popup sibling)
mr1 = { " > " , north = " ≥ " , alt_label = " ≥ " , south = " ≫ " , } , -- "more than"
mr2 = { " ≥ " , north = " > " , alt_label = " > " , south = " ≫ " , } , -- (popup sibling)
pls = { " + " , north = " ± " , alt_label = " ± " , } , -- plus sign
pl2 = { " ± " , north = " + " , alt_label = " + " , } , -- (popup sibling)
mns = { " - " , north = " ∓ " , alt_label = " ∓ " , } , -- minus sign
mn2 = { " ∓ " , north = " - " , alt_label = " - " , } , -- (popup sibling)
dsh = { " - " , north = " — " , alt_label = " — " , south = " – " , } , -- dashes
dgr = { " † " , north = " ‡ " , alt_label = " ‡ " , } , -- dagger
tpg = { " ¶ " , north = " § " , alt_label = " § " , northeast = " ™ " , northwest = " ℠ " , east = " ¤ " , west = " • " , south = " ® " , southeast = " 🄯 " , southwest = " © " , } , -- typography symbols
mth = { " ∇ " , north = " ∀ " , alt_label = " ∀ " , northeast = " ∃ " , northwest = " ∄ " , east = " ∈ " , west = " ∉ " , south = " ∅ " , southeast = " ∩ " , southwest = " ∪ " , " ⊆ " , " ⊂ " , " ⊄ " , } , -- math operations 1
mt2 = { " ∞ " , north = " ℕ " , alt_label = " ℕ " , northeast = " ℤ " , northwest = " ℚ " , east = " 𝔸 " , west = " ℝ " , south = " 𝕀 " , southeast = " ℂ " , southwest = " 𝕌 " , " ⊇ " , " ⊃ " , " ⊅ " , } , -- math operations 2
int = { " ∫ " , north = " ∬ " , alt_label = " ∬ " , northeast = " ⨌ " , northwest = " ∭ " , east = " ∑ " , west = " ∏ " , south = " ∮ " , southeast = " ∰ " , southwest = " ∯ " , " ⊕ " , " ℍ " , " ⊗ " , } , -- integrals
dif = { " ∂ " , north = " √ " , alt_label = " √ " , northeast = " ∴ " , east = " ⇒ " , south = " ⇔ " , southeast = " ∵ " , } , -- math operations 3
df2 = { " … " , north = " ⟂ " , alt_label = " ⟂ " , northeast = " ∡ " , northwest = " ∟ " , east = " ∝ " , west = " ℓ " , } , -- math operations 4
pdc = { " * " , north = " ⨯ " , alt_label = " ⨯ " , south = " ⋅ " , } , -- asterisk, cross-product and dot-prodcuts symbols
pd2 = { " ⨯ " , north = " * " , alt_label = " * " , south = " ⋅ " , } ,
bar = { " | " , north = " ¦ " , alt_label = " ¦ " , } , -- bars like pipe and broken bar
prm = { " ‰ " , north = " ‱ " , alt_label = " ‱ " , } , -- per mile types
hsh = { " # " , north = " № " , alt_label = " № " , } , -- hash and "No." sign
hs2 = { " № " , north = " # " , alt_label = " # " , } ,
}