mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
[UX] Keyboard for Arabic and languages with Arabic script (#5569)
This commit is contained in:
committed by
Frans de Jonge
parent
605f6026bb
commit
c8b3942bf4
126
frontend/ui/data/keyboardlayouts/ar_AA_keyboard.lua
Normal file
126
frontend/ui/data/keyboardlayouts/ar_AA_keyboard.lua
Normal file
@@ -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,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
162
frontend/ui/data/keyboardlayouts/keypopup/ar_AA_popup.lua
Normal file
162
frontend/ui/data/keyboardlayouts/keypopup/ar_AA_popup.lua
Normal file
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user