mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
Merge branch 'master' of git://github.com/hwhw/kindlepdfviewer
This commit is contained in:
@@ -144,10 +144,11 @@ function FileChooser:choose(ypos, height)
|
||||
fb:refresh(0, 0, ypos, fb.bb:getWidth(), height)
|
||||
pagedirty = false
|
||||
end
|
||||
|
||||
local ev = input.waitForEvent()
|
||||
print("key code:"..ev.code)
|
||||
ev.code = adjustKeyEvents(ev)
|
||||
if ev.type == EV_KEY and ev.value == EVENT_VALUE_KEY_PRESS then
|
||||
--print("key code:"..ev.code)
|
||||
ev.code = adjustFWKey(ev.code)
|
||||
if ev.code == KEY_FW_UP then
|
||||
prevItem()
|
||||
elseif ev.code == KEY_FW_DOWN then
|
||||
|
||||
@@ -43,7 +43,7 @@ function FileSearcher:readdir()
|
||||
for __, d in pairs(self.dirs) do
|
||||
-- handle files in d
|
||||
for f in lfs.dir(d) do
|
||||
if lfs.attributes(self.path.."/"..f, "mode") == "directory"
|
||||
if lfs.attributes(d.."/"..f, "mode") == "directory"
|
||||
and f ~= "." and f~= ".." and not string.match(f, "^%.[^.]") then
|
||||
table.insert(new_dirs, d.."/"..f)
|
||||
elseif string.match(f, ".+%.[pP][dD][fF]$") then
|
||||
@@ -214,8 +214,8 @@ function FileSearcher:choose(ypos, height, keywords)
|
||||
end
|
||||
|
||||
local ev = input.waitForEvent()
|
||||
ev.code = adjustKeyEvents(ev)
|
||||
if ev.type == EV_KEY and ev.value == EVENT_VALUE_KEY_PRESS then
|
||||
ev.code = adjustFWKey(ev.code)
|
||||
if ev.code == KEY_FW_UP then
|
||||
prevItem()
|
||||
elseif ev.code == KEY_FW_DOWN then
|
||||
|
||||
14
inputbox.lua
14
inputbox.lua
@@ -98,14 +98,10 @@ function InputBox:input(ypos, height, title, d_text)
|
||||
end
|
||||
|
||||
local ev = input.waitForEvent()
|
||||
ev.code = adjustKeyEvents(ev)
|
||||
if ev.type == EV_KEY and ev.value == EVENT_VALUE_KEY_PRESS then
|
||||
ev.code = adjustFWKey(ev.code)
|
||||
--local secs, usecs = util.gettime()
|
||||
if ev.code == KEY_SHIFT then
|
||||
self.shiftmode = true
|
||||
elseif ev.code == KEY_ALT then
|
||||
self.altmode = true
|
||||
elseif ev.code == KEY_FW_UP then
|
||||
if ev.code == KEY_FW_UP then
|
||||
elseif ev.code == KEY_FW_DOWN then
|
||||
elseif ev.code == KEY_A then
|
||||
self:addChar("a")
|
||||
@@ -198,12 +194,6 @@ function InputBox:input(ypos, height, title, d_text)
|
||||
--local nsecs, nusecs = util.gettime()
|
||||
--local dur = (nsecs - secs) * 1000000 + nusecs - usecs
|
||||
--print("E: T="..ev.type.." V="..ev.value.." C="..ev.code.." DUR="..dur)
|
||||
elseif ev.type == EV_KEY and ev.value == EVENT_VALUE_KEY_RELEASE
|
||||
and ev.code == KEY_SHIFT then
|
||||
self.shiftmode = false
|
||||
elseif ev.type == EV_KEY and ev.value == EVENT_VALUE_KEY_RELEASE
|
||||
and ev.code == KEY_ALT then
|
||||
self.altmode = false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
42
keys.lua
42
keys.lua
@@ -24,6 +24,11 @@
|
||||
and was licensed under the GPLv2
|
||||
]]--
|
||||
|
||||
Keys = {
|
||||
altmode = false,
|
||||
shiftmode = false,
|
||||
}
|
||||
|
||||
KEY_1 = 2
|
||||
KEY_2 = 3
|
||||
KEY_3 = 4
|
||||
@@ -120,6 +125,17 @@ function set_emu_keycodes()
|
||||
|
||||
KEY_ENTER = 36
|
||||
|
||||
KEY_1 = 10
|
||||
KEY_2 = 11
|
||||
KEY_3 = 12
|
||||
KEY_4 = 13
|
||||
KEY_5 = 14
|
||||
KEY_6 = 15
|
||||
KEY_7 = 16
|
||||
KEY_8 = 17
|
||||
KEY_9 = 18
|
||||
KEY_0 = 19
|
||||
|
||||
KEY_Q = 24
|
||||
KEY_W = 25
|
||||
KEY_E = 26
|
||||
@@ -163,17 +179,17 @@ function getRotationMode()
|
||||
1 for landscape with bottom on the right side of screen, etc.
|
||||
|
||||
2
|
||||
-----------
|
||||
| ------- |
|
||||
+-----------+
|
||||
| +-------+ |
|
||||
| | | |
|
||||
| | | |
|
||||
| | | |
|
||||
3 | | | | 1
|
||||
| | | |
|
||||
| | | |
|
||||
| ------- |
|
||||
| +-------+ |
|
||||
| |
|
||||
-----------
|
||||
+-----------+
|
||||
0
|
||||
--]]
|
||||
if KEY_FW_DOWN == 116 then -- in EMU mode always return 0
|
||||
@@ -185,7 +201,23 @@ function getRotationMode()
|
||||
return mode
|
||||
end
|
||||
|
||||
function adjustFWKey(code)
|
||||
function adjustKeyEvents(ev)
|
||||
if ev.type == EV_KEY and ev.value == EVENT_VALUE_KEY_PRESS then
|
||||
if ev.code == KEY_SHIFT then
|
||||
Keys.shiftmode = true
|
||||
elseif ev.code == KEY_ALT then
|
||||
Keys.altmode = true
|
||||
end
|
||||
elseif ev.type == EV_KEY and ev.value == EVENT_VALUE_KEY_RELEASE then
|
||||
if ev.code == KEY_SHIFT then
|
||||
Keys.shiftmode = false
|
||||
elseif ev.code == KEY_ALT then
|
||||
Keys.altmode = false
|
||||
end
|
||||
end
|
||||
|
||||
-- adjust five way key according to rotation mode
|
||||
local code = ev.code
|
||||
if getRotationMode() == 0 then
|
||||
return code
|
||||
elseif getRotationMode() == 1 then
|
||||
|
||||
11
pdf.c
11
pdf.c
@@ -104,6 +104,17 @@ static int walkTableOfContent(lua_State *L, fz_outline* ol, int *count, int dept
|
||||
lua_pushnumber(L, depth);
|
||||
lua_settable(L, -3);
|
||||
lua_pushstring(L, "title");
|
||||
|
||||
/* workaround for misplaced carriage ret in toc entry */
|
||||
int i = 0;
|
||||
while (ol->title[i]) {
|
||||
if (ol->title[i] == 0x0d) {
|
||||
ol->title[i] = ' ';
|
||||
}
|
||||
/*printf("%x|", ol->title[i]);*/
|
||||
i++;
|
||||
}
|
||||
|
||||
lua_pushstring(L, ol->title);
|
||||
lua_settable(L, -3);
|
||||
|
||||
|
||||
@@ -45,10 +45,6 @@ PDFReader = {
|
||||
pan_y = 0,
|
||||
pan_margin = 20,
|
||||
|
||||
-- keep track of input state:
|
||||
shiftmode = false, -- shift pressed
|
||||
altmode = false, -- alt pressed
|
||||
|
||||
-- the pdf document:
|
||||
doc = nil,
|
||||
-- the document's setting store:
|
||||
@@ -375,17 +371,13 @@ end
|
||||
function PDFReader:inputloop()
|
||||
while 1 do
|
||||
local ev = input.waitForEvent()
|
||||
ev.code = adjustKeyEvents(ev)
|
||||
if ev.type == EV_KEY and ev.value == EVENT_VALUE_KEY_PRESS then
|
||||
ev.code = adjustFWKey(ev.code)
|
||||
local secs, usecs = util.gettime()
|
||||
if ev.code == KEY_SHIFT then
|
||||
self.shiftmode = true
|
||||
elseif ev.code == KEY_ALT then
|
||||
self.altmode = true
|
||||
elseif ev.code == KEY_PGFWD or ev.code == KEY_LPGFWD then
|
||||
if self.shiftmode then
|
||||
if ev.code == KEY_PGFWD or ev.code == KEY_LPGFWD then
|
||||
if Keys.shiftmode then
|
||||
self:setglobalzoom(self.globalzoom+0.2)
|
||||
elseif self.altmode then
|
||||
elseif Keys.altmode then
|
||||
self:setglobalzoom(self.globalzoom+0.1)
|
||||
else
|
||||
if self.pan_by_page then
|
||||
@@ -395,9 +387,9 @@ function PDFReader:inputloop()
|
||||
self:goto(self.pageno + 1)
|
||||
end
|
||||
elseif ev.code == KEY_PGBCK or ev.code == KEY_LPGBCK then
|
||||
if self.shiftmode then
|
||||
if Keys.shiftmode then
|
||||
self:setglobalzoom(self.globalzoom-0.2)
|
||||
elseif self.altmode then
|
||||
elseif Keys.altmode then
|
||||
self:setglobalzoom(self.globalzoom-0.1)
|
||||
else
|
||||
if self.pan_by_page then
|
||||
@@ -407,7 +399,7 @@ function PDFReader:inputloop()
|
||||
self:goto(self.pageno - 1)
|
||||
end
|
||||
elseif ev.code == KEY_BACK then
|
||||
if self.altmode then
|
||||
if Keys.altmode then
|
||||
-- altmode, exit pdfreader
|
||||
self:clearcache()
|
||||
if self.doc ~= nil then
|
||||
@@ -430,19 +422,19 @@ function PDFReader:inputloop()
|
||||
elseif ev.code == KEY_VMINUS then
|
||||
self:modify_gamma( 0.8 )
|
||||
elseif ev.code == KEY_A then
|
||||
if self.shiftmode then
|
||||
if Keys.shiftmode then
|
||||
self:setglobalzoommode(self.ZOOM_FIT_TO_CONTENT)
|
||||
else
|
||||
self:setglobalzoommode(self.ZOOM_FIT_TO_PAGE)
|
||||
end
|
||||
elseif ev.code == KEY_S then
|
||||
if self.shiftmode then
|
||||
if Keys.shiftmode then
|
||||
self:setglobalzoommode(self.ZOOM_FIT_TO_CONTENT_WIDTH)
|
||||
else
|
||||
self:setglobalzoommode(self.ZOOM_FIT_TO_PAGE_WIDTH)
|
||||
end
|
||||
elseif ev.code == KEY_D then
|
||||
if self.shiftmode then
|
||||
if Keys.shiftmode then
|
||||
self:setglobalzoommode(self.ZOOM_FIT_TO_CONTENT_HEIGHT)
|
||||
else
|
||||
self:setglobalzoommode(self.ZOOM_FIT_TO_PAGE_HEIGHT)
|
||||
@@ -452,7 +444,7 @@ function PDFReader:inputloop()
|
||||
elseif ev.code == KEY_T then
|
||||
self:showTOC()
|
||||
elseif ev.code == KEY_B then
|
||||
if self.shiftmode then
|
||||
if Keys.shiftmode then
|
||||
self:add_jump(self.pageno)
|
||||
else
|
||||
self:showJumpStack()
|
||||
@@ -467,10 +459,10 @@ function PDFReader:inputloop()
|
||||
local x
|
||||
local y
|
||||
|
||||
if self.shiftmode then -- shift always moves in small steps
|
||||
if Keys.shiftmode then -- shift always moves in small steps
|
||||
x = self.shift_x / 2
|
||||
y = self.shift_y / 2
|
||||
elseif self.altmode then
|
||||
elseif Keys.altmode then
|
||||
x = self.shift_x / 5
|
||||
y = self.shift_y / 5
|
||||
elseif self.pan_by_page then
|
||||
@@ -522,7 +514,7 @@ function PDFReader:inputloop()
|
||||
self.offset_y = self.min_offset_y
|
||||
end
|
||||
elseif ev.code == KEY_FW_PRESS then
|
||||
if self.shiftmode then
|
||||
if Keys.shiftmode then
|
||||
if self.pan_by_page then
|
||||
self.offset_x = self.pan_x
|
||||
self.offset_y = self.pan_y
|
||||
@@ -547,11 +539,6 @@ function PDFReader:inputloop()
|
||||
local nsecs, nusecs = util.gettime()
|
||||
local dur = (nsecs - secs) * 1000000 + nusecs - usecs
|
||||
print("E: T="..ev.type.." V="..ev.value.." C="..ev.code.." DUR="..dur)
|
||||
elseif ev.type == EV_KEY and ev.value == EVENT_VALUE_KEY_RELEASE and ev.code == KEY_SHIFT then
|
||||
print "shift haha"
|
||||
self.shiftmode = false
|
||||
elseif ev.type == EV_KEY and ev.value == EVENT_VALUE_KEY_RELEASE and ev.code == KEY_ALT then
|
||||
self.altmode = false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -117,4 +117,7 @@ reader_settings:savesetting("cfont", FontChooser.cfont)
|
||||
reader_settings:close()
|
||||
|
||||
input.closeAll()
|
||||
os.execute('test -e /proc/keypad && echo "send '..KEY_HOME..'" > /proc/keypad ')
|
||||
--os.execute('test -e /proc/keypad && echo "send '..KEY_HOME..'" > /proc/keypad ')
|
||||
if optarg["d"] ~= "emu" then
|
||||
os.execute('echo "send '..KEY_MENU..'" > /proc/keypad;echo "send '..KEY_MENU..'" > /proc/keypad')
|
||||
end
|
||||
|
||||
@@ -167,8 +167,8 @@ function SelectMenu:choose(ypos, height)
|
||||
end
|
||||
|
||||
local ev = input.waitForEvent()
|
||||
ev.code = adjustKeyEvents(ev)
|
||||
if ev.type == EV_KEY and ev.value == EVENT_VALUE_KEY_PRESS then
|
||||
ev.code = adjustFWKey(ev.code)
|
||||
if ev.code == KEY_FW_UP then
|
||||
prevItem()
|
||||
elseif ev.code == KEY_FW_DOWN then
|
||||
|
||||
Reference in New Issue
Block a user