From 88d5f578f89ef99cb9ab74094315fc53548fc0a9 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Tue, 6 Mar 2012 14:37:00 +0100 Subject: [PATCH] added last row of keyboard for DXG DXG has bigger screen, so we have to make sure that we don't have more than 30 options on screen (or we will run out of shortcuts) --- keys.lua | 6 ++++++ selectmenu.lua | 33 +++++++++++++++++++++++++++++---- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/keys.lua b/keys.lua index 0ad6c2a81..a04c72e33 100644 --- a/keys.lua +++ b/keys.lua @@ -166,6 +166,12 @@ function set_emu_keycodes() KEY_N = 57 KEY_M = 58 + KEY_DOT = 60 + KEY_SLASH = 61 + + KEY_AA = 105 -- right alt + KEY_SYM = 62 -- right shift + KEY_SHIFT = 50 -- left shift KEY_ALT = 64 -- left alt KEY_VPLUS = 95 -- F11 diff --git a/selectmenu.lua b/selectmenu.lua index 1df531595..e6d0b00bd 100644 --- a/selectmenu.lua +++ b/selectmenu.lua @@ -30,11 +30,12 @@ SelectMenu = { menu_title = "None Titled", no_item_msg = "No items found.", item_array = {}, - items = 14, + items = 0, item_shortcuts = { "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "A", "S", "D", "F", "G", "H", "J", "K", "L", "Del", + "Z", "X", "C", "V", "B", "N", "M", ".", "Sym", "Ent", }, -- state buffer page = 1, @@ -50,6 +51,10 @@ function SelectMenu:new(o) o.page = 1 o.current = 1 o.oldcurrent = 0 + -- increase spacing for DXG so we don't have more than 30 shortcuts + if fb.bb:getHeight() == 1200 then + o.spacing = 37 + end return o end @@ -147,12 +152,12 @@ function SelectMenu:choose(ypos, height) y = ypos + self.title_H + (self.spacing * c) -- paint shortcut indications - if c <= 10 then + if c <= 10 or c > 20 then blitbuffer.paintBorder(fb.bb, 10, y-22, 29, 29, 2, 15) else fb.bb:paintRect(10, y-22, 29, 29, 3) end - if self.item_shortcuts[c] == "Del" then + if self.item_shortcuts[c] ~= nil and string.len(self.item_shortcuts[c]) == 3 then renderUtf8Text(fb.bb, 13, y, self.fface, self.ffhash, self.item_shortcuts[c], true) else @@ -222,7 +227,7 @@ function SelectMenu:choose(ypos, height) self.current = 1 markerdirty = true end - elseif ev.code == KEY_ENTER or ev.code == KEY_FW_PRESS then + elseif ev.code == KEY_FW_PRESS then if self.items == 0 then return nil else @@ -268,6 +273,26 @@ function SelectMenu:choose(ypos, height) return self:getItemIndexByShortCut("Y", perpage) elseif ev.code == KEY_DEL then return self:getItemIndexByShortCut("Del", perpage) + elseif ev.code == KEY_Z then + return self:getItemIndexByShortCut("Z", perpage) + elseif ev.code == KEY_X then + return self:getItemIndexByShortCut("X", perpage) + elseif ev.code == KEY_C then + return self:getItemIndexByShortCut("C", perpage) + elseif ev.code == KEY_V then + return self:getItemIndexByShortCut("V", perpage) + elseif ev.code == KEY_B then + return self:getItemIndexByShortCut("B", perpage) + elseif ev.code == KEY_N then + return self:geTitemIndexByShortCut("N", perpage) + elseif ev.code == KEY_M then + return self:getItemIndexByShortCut("M", perpage) + elseif ev.code == KEY_DOT then + return self:getItemIndexByShortCut(".", perpage) + elseif ev.code == KEY_SYM or ev.code == KEY_SLASH then -- DXG has slash after dot + return self:getItemIndexByShortCut("Sym", perpage) + elseif ev.code == KEY_ENTER then + return self:getItemIndexByShortCut("Ent", perpage) elseif ev.code == KEY_BACK then return nil end