Skip to content

Commit

Permalink
[UX] Allow keyboard layout selection
Browse files Browse the repository at this point in the history
Fixes <#3998>.

This is an unpolished quickie but I've been letting this slip for too
long due to fancier keyboard interaction concepts.
  • Loading branch information
Frenzie committed Sep 4, 2019
1 parent cb2a3d9 commit c417f20
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 11 deletions.
4 changes: 4 additions & 0 deletions frontend/ui/elements/common_settings_menu_table.lua
Expand Up @@ -210,6 +210,10 @@ if Device:isAndroid() then
end

if Device:isTouchDevice() then
common_settings.keyboard_layout = {
text = _("Keyboard layout"),
sub_item_table = require("ui/elements/menu_keyboard_layout"),
}
common_settings.taps_and_gestures = {
text = _("Taps and gestures"),
}
Expand Down
17 changes: 17 additions & 0 deletions frontend/ui/elements/menu_keyboard_layout.lua
@@ -0,0 +1,17 @@
local VirtualKeyboard = require("ui/widget/virtualkeyboard")

local sub_item_table = {}

for k, _ in pairs(VirtualKeyboard.lang_to_keyboard_layout) do
table.insert(sub_item_table, {
text = k,
checked_func = function()
return VirtualKeyboard:getKeyboardLayout() == k
end,
callback = function()
G_reader_settings:saveSetting("keyboard_layout", k)
end,
})
end

return sub_item_table
1 change: 1 addition & 0 deletions frontend/ui/elements/reader_menu_order.lua
Expand Up @@ -57,6 +57,7 @@ local order = {
"status_bar",
},
device = {
"keyboard_layout",
"time",
"battery",
"autosuspend",
Expand Down
26 changes: 15 additions & 11 deletions frontend/ui/widget/virtualkeyboard.lua
Expand Up @@ -517,21 +517,21 @@ local VirtualKeyboard = FocusManager:new{
bordersize = Size.border.default,
padding = Size.padding.small,
key_padding = Size.padding.default,
}

local lang_to_keyboard_layout = {
el = "el_keyboard",
en = "en_keyboard",
es = "es_keyboard",
fr = "fr_keyboard",
ja = "ja_keyboard",
pt_BR = "pt_keyboard",
ko_KR = "ko_KR_keyboard",
lang_to_keyboard_layout = {
el = "el_keyboard",
en = "en_keyboard",
es = "es_keyboard",
fr = "fr_keyboard",
ja = "ja_keyboard",
pt_BR = "pt_keyboard",
ko_KR = "ko_KR_keyboard",
},
}

function VirtualKeyboard:init()
local lang = G_reader_settings:readSetting("language")
local keyboard_layout = lang_to_keyboard_layout[lang] or lang_to_keyboard_layout["en"]
local lang = self:getKeyboardLayout()
local keyboard_layout = self.lang_to_keyboard_layout[lang] or self.lang_to_keyboard_layout["en"]
local keyboard = require("ui/data/keyboardlayouts/" .. keyboard_layout)
self.KEYS = keyboard.keys
self.shiftmode_keys = keyboard.shiftmode_keys
Expand All @@ -551,6 +551,10 @@ function VirtualKeyboard:init()
end
end

function VirtualKeyboard:getKeyboardLayout()
return G_reader_settings:readSetting("keyboard_layout") or G_reader_settings:readSetting("language")
end

function VirtualKeyboard:onClose()
UIManager:close(self)
return true
Expand Down

0 comments on commit c417f20

Please sign in to comment.