[UX] Keyboard for Arabic and languages with Arabic script (#5569)

reviewable/pr5782/r1
WaseemAlkurdi 4 years ago committed by Frans de Jonge
parent 605f6026bb
commit c8b3942bf4

@ -0,0 +1,126 @@
local en_popup = require("ui/data/keyboardlayouts/keypopup/en_popup")
local ar_popup = require("ui/data/keyboardlayouts/keypopup/ar_AA_popup")
local com = en_popup.com -- comma (,)
local prd = en_popup.prd -- period (.)
local _at = en_popup._at
local _eq = en_popup._eq -- equals sign (=)
local alef = ar_popup.alef
local ba = ar_popup.ba
local jeem = ar_popup.jeem
local daal = ar_popup.daal
local h_aa = ar_popup.h_aa -- This is Arabic letter هـ / as in English "hello".
local waw = ar_popup.waw
local zay = ar_popup.zay
local ha = ar_popup.ha -- while this is Arabic letter ح / as in the sound you make when blowing on a glass to clean it.
local tah = ar_popup.tah
local yaa = ar_popup.yaa
local kaf = ar_popup.kaf
local lam = ar_popup.lam
local meem = ar_popup.meem
local nun = ar_popup.nun
local seen = ar_popup.seen
local ayin = ar_popup.ayin
local fah = ar_popup.fah
local saad = ar_popup.saad
local qaf = ar_popup.qaf
local raa = ar_popup.raa
local sheen = ar_popup.sheen
local taa = ar_popup.taa
local thaa = ar_popup.thaa
local thaal = ar_popup.thaal
local dhad = ar_popup.dhad
local ghayn = ar_popup.ghayn
local khaa = ar_popup.khaa
local hamza = ar_popup.hamza
local wawhamza = ar_popup.wawhamza
local laa = ar_popup.laa
local alefmaqsoura = ar_popup.alefmaqsoura
local taamarbouta = ar_popup.taamarbouta
local diacritics = ar_popup.diacritics
local diacritic_fat_ha = ar_popup.diacritic_fat_ha
local diacritic_damma = ar_popup.diacritic_damma
local diacritic_kasra = ar_popup.diacritic_kasra
local diacritic_sukoon = ar_popup.diacritic_sukoon
local diacritic_shadda = ar_popup.diacritic_shadda
local diacritic_tanween_fath = ar_popup.diacritic_tanween_fath
local diacritic_tanween_damm = ar_popup.diacritic_tanween_damm
local diacritic_tanween_kasr = ar_popup.diacritic_tanween_kasr
local arabic_comma = ar_popup.arabic_comma
return {
min_layer = 1,
max_layer = 4,
shiftmode_keys = {["بدّل"] = true}, -- بدّل means "Shift".
symbolmode_keys = {["رمز"] = true,["حرف"]=true}, -- رمز means "Symbol", حرف means "letter" (traditionally "ABC" on QWERTY layouts)
utf8mode_keys = {["🌐"] = true}, -- The famous globe key for layout switching
umlautmode_keys = {["Äéß"] = false}, -- No need for this keyboard panel
keys = {
-- first row
{ -- 1 2 3 4
{ diacritic_fat_ha, dhad, "", "0", },
{ diacritic_tanween_fath, saad, "!", "1", },
{ diacritic_damma, thaa, _at, "2", },
{ diacritic_tanween_damm, qaf, "#", "3", },
{ "", fah, "+", _eq, },
{ "إ", ghayn, "", "(", },
{ "`", ayin, "", ")", },
{ "÷", h_aa, "|", "ـ", },
{ "×", khaa, "?", "ّ", },
{ "؛", ha, "~", "ٌ", },
{ "<", jeem, "<", "ً", },
{ ">", daal, ">", "~", },
},
-- second row
{ -- 1 2 3 4
{ diacritic_kasra, sheen, "", "4", },
{ diacritic_tanween_kasr, seen, "$", "5", },
{ "]", yaa, "%", "6", },
{ "[", ba, "^", ";", },
{ "", lam, ":", "'", },
{ "أ", alef, '"', "\\", },
{ "ـ", taa, "}", "ّ", },
{ "،", nun, "{", "'", },
{ "/", meem, "_", "ِ", },
{ ":", kaf, "÷", "ُ", },
{ "\"", tah, "×", "َ", },
},
-- third row
{ -- 1 2 3 4
{ diacritic_shadda, thaal, "&", "7", },
{ diacritic_sukoon, hamza, "*", "8", },
{ "}", wawhamza, "£", "9", },
{ "{", raa, "_", com, },
{ "", laa, "/", prd, },
{ "آ", alefmaqsoura, "", "[", },
{ "'", taamarbouta, "'", "]", },
{ arabic_comma, waw, "#", "", },
{ ".", zay, "@", "", },
{ "؟", thaa, "!", _at, },
{ label = "Backspace",
icon = "resources/icons/appbar.clear.reflect.horizontal.png",
width = 1.5
},
},
-- fourth row
{
{ "بدّل", "بدّل", "بدّل", "بدّل",
width = 1.40},
{ label = "🌐", },
{ "رمز", "رمز", "حرف", "حرف",
width = 1.20},
{ label = "مسافة",
" ", " ", " ", " ",
width = 3.0},
{ com, arabic_comma, "", "", },
{ prd, prd, "", "", },
{ label = "حركات", diacritics, diacritics, diacritics, diacritics,
width = 1.5},
{ label = "Enter",
"\n", "\n", "\n", "\n",
icon = "resources/icons/appbar.arrow.enter.png",
width = 1.5,
},
},
},
}

@ -0,0 +1,162 @@
return {
alef = {
"ا",
north = "أ",
northeast = "إ",
northwest = "ء",
east = "آ",
west = "",
},
ba = {
"ب",
north = "ݒ",
},
jeem = {
"ج",
north = "ج",
},
daal = {
"د",
},
h_aa = { -- الهاء
"ه",
label = "",
},
waw = {
"و",
},
zay = {
"ز",
north = "ژ",
},
ha = { -- الحاء
"ح",
},
tah = {
"ط",
},
yaa = {
"ي",
north = "ئ",
},
kaf = {
"ك",
north = "گ",
northeast = "ک",
},
lam = {
"ل",
north = "",
northeast = "",
northwest = "",
east = "",
},
meem = {
"م",
},
nun = {
"ن",
},
seen = {
"س",
},
ayin = {
"ع",
},
fah = {
"ف",
north = "ڤ",
northeast = "ڥ",
east = "ڢ",
},
saad = {
"ص",
},
qaf = {
"ق",
north = "ڨ",
},
raa = {
"ر",
},
sheen = {
"ش",
north = "ڜ",
},
taa = {
"ت",
},
thaa = {
"ث",
},
thaal = {
"ذ",
},
dhad = {
"ض",
},
th_aa = {
"ظ",
},
ghayn = {
"غ",
},
khaa = {
"خ",
},
alefmaqsoura = {
"ى",
},
hamza = {
"ء",
},
wawhamza = {
"ؤ",
},
laa = {
"",
},
taamarbouta = {
"ة",
label = "",
},
diacritic_fat_ha = {
"َ",
},
diacritic_damma = {
"ُ",
},
diacritic_kasra = {
"ِ",
},
diacritic_sukoon = {
"ْ",
},
diacritic_shadda = {
"ّ",
},
diacritic_tanween_fath = {
"ً",
},
diacritic_tanween_damm = {
"ٌ",
},
diacritic_tanween_kasr = {
"ٍ",
},
-- Diacritics (al-Harakat الحركات)
diacritics = {
"ّ",
north = "َ",
northeast = "ْ",
northwest = "ً",
east = "ُ",
west = "ٌ",
south= "~",
southeast= "ِ",
southwest= "ٍ",
},
arabic_comma = {
"،",
},
}

@ -656,6 +656,7 @@ local VirtualKeyboard = FocusManager:new{
key_padding = Size.padding.default,
lang_to_keyboard_layout = {
ar_AA = "ar_AA_keyboard",
el = "el_keyboard",
en = "en_keyboard",
es = "es_keyboard",
@ -787,8 +788,10 @@ function VirtualKeyboard:addKeys()
for j = 1, #self.KEYS[i] do
local key
local key_chars = self.KEYS[i][j][self.keyboard_layer]
local label
if type(key_chars) == "table" then
key = key_chars[1]
label = key_chars.label
else
key = key_chars
key_chars = nil
@ -797,7 +800,7 @@ function VirtualKeyboard:addKeys()
local key_width = math.floor((base_key_width + self.key_padding) * width_factor)
- self.key_padding
local key_height = base_key_height
local label = self.KEYS[i][j].label or key
label = label or self.KEYS[i][j].label or key
local virtual_key = VirtualKey:new{
key = key,
key_chars = key_chars,

Loading…
Cancel
Save