From 6c7e2a9c6276fd7bd2666e36e11960b20ecb0bdb Mon Sep 17 00:00:00 2001 From: SomeGuy <97603719+Commodore64user@users.noreply.github.com> Date: Mon, 20 May 2024 20:22:27 +0100 Subject: [PATCH] Support screenshots on Non-Touch with ScreenKB as modifier (#11802) on devices (mostly kindles) with keyboards: Alt + Shift + G on kindle 4: ScreenKB + Menu --- frontend/device/input.lua | 3 ++- frontend/ui/widget/screenshoter.lua | 23 ++++++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/frontend/device/input.lua b/frontend/device/input.lua index 3e57020b1..ab3f8f59f 100644 --- a/frontend/device/input.lua +++ b/frontend/device/input.lua @@ -139,7 +139,7 @@ local Input = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "Up", "Down", "Left", "Right", "Press", "Backspace", "End", - "Back", "Sym", "AA", "Menu", "Home", "Del", + "Back", "Sym", "AA", "Menu", "Home", "Del", "ScreenKB", "LPgBack", "RPgBack", "LPgFwd", "RPgFwd" }, }, @@ -171,6 +171,7 @@ local Input = { Shift = false, Sym = false, Meta = false, + ScreenKB = false, }, -- repeat state: diff --git a/frontend/ui/widget/screenshoter.lua b/frontend/ui/widget/screenshoter.lua index e8b4591f0..b4827a697 100644 --- a/frontend/ui/widget/screenshoter.lua +++ b/frontend/ui/widget/screenshoter.lua @@ -1,6 +1,7 @@ local BD = require("ui/bidi") local ButtonDialog = require("ui/widget/buttondialog") local DataStorage = require("datastorage") +local Device = require("device") local GestureRange = require("ui/gesturerange") local InputContainer = require("ui/widget/container/inputcontainer") local UIManager = require("ui/uimanager") @@ -14,6 +15,22 @@ local Screenshoter = InputContainer:extend{ } function Screenshoter:init() + if not Device:isTouchDevice() then + if Device:hasKeyboard() then + self.key_events.KeyPressShoot = { + { "Alt", "Shift", "G" }, -- same as stock firmware + event = "KeyPressShoot", + } + elseif Device:hasFiveWay() then + -- kindle 4 case: same as stock firmware. + self.key_events.KeyPressShoot = { + { "ScreenKB", "Menu" }, + event = "KeyPressShoot", + } + -- unable to add other non-touch devices as simultaneous key presses won't work without modifiers + end + return + end local diagonal = math.sqrt(Screen:getWidth()^2 + Screen:getHeight()^2) self.ges_events = { TapDiagonal = { @@ -79,7 +96,7 @@ function Screenshoter:onScreenshot(screenshot_name, caller_callback) end, }, { - text = _("Set as screensaver"), + text = _("Set as wallpaper"), callback = function() G_reader_settings:saveSetting("screensaver_type", "image_file") G_reader_settings:saveSetting("screensaver_image", screenshot_name) @@ -117,6 +134,10 @@ function Screenshoter:chooseFolder() filemanagerutil.showChooseDialog(title_header, caller_callback, current_path, default_path) end +function Screenshoter:onKeyPressShoot() + return self:onScreenshot() +end + function Screenshoter:onTapDiagonal() return self:onScreenshot() end