Support screenshots on Non-Touch with ScreenKB as modifier (#11802)

on devices (mostly kindles) with keyboards: Alt + Shift + G
on kindle 4: ScreenKB + Menu
This commit is contained in:
SomeGuy
2024-05-20 20:22:27 +01:00
committed by GitHub
parent 577c5d454f
commit 6c7e2a9c62
2 changed files with 24 additions and 2 deletions

View File

@@ -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:

View File

@@ -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