From 6a927eadf0fba561f21c67bc722bc890b6a89111 Mon Sep 17 00:00:00 2001 From: Frans de Jonge Date: Mon, 8 Apr 2019 18:14:29 +0200 Subject: [PATCH 1/6] [UX] Add keyboard swipes Only the `e` has a few swipes in this initial commit. --- frontend/ui/data/keyboardlayouts/std.lua | 11 +++++- frontend/ui/widget/virtualkeyboard.lua | 48 +++++++++++++++++++++--- 2 files changed, 53 insertions(+), 6 deletions(-) diff --git a/frontend/ui/data/keyboardlayouts/std.lua b/frontend/ui/data/keyboardlayouts/std.lua index 6d39cbda723d..f218376823ef 100644 --- a/frontend/ui/data/keyboardlayouts/std.lua +++ b/frontend/ui/data/keyboardlayouts/std.lua @@ -1,3 +1,12 @@ +local e = { + "e", + north = "ë", + northeast = "é", + northwest = "è", + east = "ê", + west = "ẽ", +} + return { shiftmode_keys = {["Shift"] = true}, symbolmode_keys = {["Sym"] = true, ["ABC"] = true}, @@ -8,7 +17,7 @@ return { { -- 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", "¡", }, + { "E", e, "@", "2", "У", "у", ")", "2", "Ö", "ö", "3", "¡", }, { "R", "r", "#", "3", "К", "к", "~", "3", "ß", "ß", "4", "¿", }, { "T", "t", "+", "=", "Е", "е", "Ә", "ә", "À", "à", "5", "¼", }, { "Y", "y", "€", "(", "Н", "н", "І", "і", "Â", "â", "6", "½", }, diff --git a/frontend/ui/widget/virtualkeyboard.lua b/frontend/ui/widget/virtualkeyboard.lua index 6cc173a27d06..061865189916 100644 --- a/frontend/ui/widget/virtualkeyboard.lua +++ b/frontend/ui/widget/virtualkeyboard.lua @@ -66,6 +66,9 @@ function VirtualKey:init() self.callback = function() self.keyboard:downLine() end else self.callback = function () self.keyboard:addChar(self.key) end + self.swipe_callback = function(ges) + self.keyboard:addChar(self.key_chars[ges.direction]) + end end local label_widget @@ -118,6 +121,12 @@ function VirtualKey:init() range = self.dimen, }, }, + SwipeKey = { + GestureRange:new{ + ges = "swipe", + range = self.dimen, + }, + }, } end self.flash_keyboard = G_reader_settings:readSetting("flash_keyboard") ~= false @@ -184,6 +193,22 @@ function VirtualKey:onHoldSelect() return true end +function VirtualKey:onSwipeKey(arg, ges) + if self.flash_keyboard and not self.skipswipe then + self[1].inner_bordersize = self.focused_bordersize + self:update_keyboard(false, true) + if self.swipe_callback then + self.swipe_callback(ges) + end + UIManager:tickAfterNext(function() self:invert(false, true) end) + else + if self.swipe_callback then + self.swipe_callback(ges) + end + end + return true +end + function VirtualKey:invert(invert, hold) if invert then self[1].inner_bordersize = self.focused_bordersize @@ -311,21 +336,34 @@ function VirtualKeyboard:addKeys() local horizontal_group = HorizontalGroup:new{} local layout_horizontal = {} for j = 1, #self.KEYS[i] do + local key + local key_chars = self.KEYS[i][j][self.keyboard_layout] + local swipe_callback + if type(key_chars) == "table" then + --logger.dbg(key) + key = key_chars[1] + --key_ne = key_chars.ne + else + key = key_chars + key_chars = nil + end + logger.dbg(key) local width_factor = self.KEYS[i][j].width or 1.0 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 self.KEYS[i][j][self.keyboard_layout] - local key = VirtualKey:new{ - key = self.KEYS[i][j][self.keyboard_layout], + local label = self.KEYS[i][j].label or key + local virtual_key = VirtualKey:new{ + key = key, + key_chars = key_chars, icon = self.KEYS[i][j].icon, label = label, keyboard = self, width = key_width, height = key_height, } - table.insert(horizontal_group, key) - table.insert(layout_horizontal, key) + table.insert(horizontal_group, virtual_key) + table.insert(layout_horizontal, virtual_key) if j ~= #self.KEYS[i] then table.insert(horizontal_group, h_key_padding) end From b7f64ca5120a3f0be6a99a214b363f8ed31ea63c Mon Sep 17 00:00:00 2001 From: Frans de Jonge Date: Mon, 8 Apr 2019 19:27:53 +0200 Subject: [PATCH 2/6] remove some forgotten lines --- frontend/ui/widget/virtualkeyboard.lua | 3 --- 1 file changed, 3 deletions(-) diff --git a/frontend/ui/widget/virtualkeyboard.lua b/frontend/ui/widget/virtualkeyboard.lua index 061865189916..01120977f96d 100644 --- a/frontend/ui/widget/virtualkeyboard.lua +++ b/frontend/ui/widget/virtualkeyboard.lua @@ -338,11 +338,8 @@ function VirtualKeyboard:addKeys() for j = 1, #self.KEYS[i] do local key local key_chars = self.KEYS[i][j][self.keyboard_layout] - local swipe_callback if type(key_chars) == "table" then - --logger.dbg(key) key = key_chars[1] - --key_ne = key_chars.ne else key = key_chars key_chars = nil From 34247203fa01d70789e3a97db136bc810d52e8f7 Mon Sep 17 00:00:00 2001 From: Frans de Jonge Date: Tue, 9 Apr 2019 10:17:05 +0200 Subject: [PATCH 3/6] whoops, don't crash when there are no swipes --- frontend/ui/widget/virtualkeyboard.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frontend/ui/widget/virtualkeyboard.lua b/frontend/ui/widget/virtualkeyboard.lua index 01120977f96d..d438a59fa4c8 100644 --- a/frontend/ui/widget/virtualkeyboard.lua +++ b/frontend/ui/widget/virtualkeyboard.lua @@ -344,7 +344,6 @@ function VirtualKeyboard:addKeys() key = key_chars key_chars = nil end - logger.dbg(key) local width_factor = self.KEYS[i][j].width or 1.0 local key_width = math.floor((base_key_width + self.key_padding) * width_factor) - self.key_padding @@ -359,6 +358,9 @@ function VirtualKeyboard:addKeys() width = key_width, height = key_height, } + if not key_chars then + virtual_key.swipe_callback = nil + end table.insert(horizontal_group, virtual_key) table.insert(layout_horizontal, virtual_key) if j ~= #self.KEYS[i] then From 77adaa81535ec495577f96be9bb44c877dcf674c Mon Sep 17 00:00:00 2001 From: Frans de Jonge Date: Tue, 9 Apr 2019 10:17:52 +0200 Subject: [PATCH 4/6] change var name --- frontend/ui/data/keyboardlayouts/std.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/ui/data/keyboardlayouts/std.lua b/frontend/ui/data/keyboardlayouts/std.lua index f218376823ef..b3314d56711d 100644 --- a/frontend/ui/data/keyboardlayouts/std.lua +++ b/frontend/ui/data/keyboardlayouts/std.lua @@ -1,4 +1,4 @@ -local e = { +local _e_ = { "e", north = "ë", northeast = "é", @@ -17,7 +17,7 @@ return { { -- 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", "¡", }, + { "E", _e_, "@", "2", "У", "у", ")", "2", "Ö", "ö", "3", "¡", }, { "R", "r", "#", "3", "К", "к", "~", "3", "ß", "ß", "4", "¿", }, { "T", "t", "+", "=", "Е", "е", "Ә", "ә", "À", "à", "5", "¼", }, { "Y", "y", "€", "(", "Н", "н", "І", "і", "Â", "â", "6", "½", }, From 9858732f442b08c1b92a1116575ef5b1f10fbf47 Mon Sep 17 00:00:00 2001 From: Frans de Jonge Date: Tue, 9 Apr 2019 10:20:30 +0200 Subject: [PATCH 5/6] add _E_ --- frontend/ui/data/keyboardlayouts/std.lua | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/frontend/ui/data/keyboardlayouts/std.lua b/frontend/ui/data/keyboardlayouts/std.lua index b3314d56711d..501615300913 100644 --- a/frontend/ui/data/keyboardlayouts/std.lua +++ b/frontend/ui/data/keyboardlayouts/std.lua @@ -1,3 +1,11 @@ +local _E_ = { + "E", + north = "Ë", + northeast = "É", + northwest = "È", + east = "Ê", + west = "Ẽ", +} local _e_ = { "e", north = "ë", @@ -17,7 +25,7 @@ return { { -- 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", "¡", }, + { _E_, _e_, "@", "2", "У", "у", ")", "2", "Ö", "ö", "3", "¡", }, { "R", "r", "#", "3", "К", "к", "~", "3", "ß", "ß", "4", "¿", }, { "T", "t", "+", "=", "Е", "е", "Ә", "ә", "À", "à", "5", "¼", }, { "Y", "y", "€", "(", "Н", "н", "І", "і", "Â", "â", "6", "½", }, From c89bdf8cb0eac543d735e590cc2e5901066f581e Mon Sep 17 00:00:00 2001 From: Frans de Jonge Date: Tue, 9 Apr 2019 10:29:15 +0200 Subject: [PATCH 6/6] expand symbols MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The ė and ē are Baltic (Latvian, Lithuanian); not really sure how to best display them. --- frontend/ui/data/keyboardlayouts/std.lua | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/frontend/ui/data/keyboardlayouts/std.lua b/frontend/ui/data/keyboardlayouts/std.lua index 501615300913..32a5c4e0f71e 100644 --- a/frontend/ui/data/keyboardlayouts/std.lua +++ b/frontend/ui/data/keyboardlayouts/std.lua @@ -5,6 +5,10 @@ local _E_ = { northwest = "È", east = "Ê", west = "Ẽ", + south = "Ę", + southeast = "€", + southwest = "Ė", + "Ē", } local _e_ = { "e", @@ -13,6 +17,10 @@ local _e_ = { northwest = "è", east = "ê", west = "ẽ", + south = "ę", + southeast = "€", + southwest = "ė", + "ē", } return {