Merge pull request #23 from houqp/master

four bug fixes & one refactoring
pull/2/merge
HW 12 years ago
commit 09c6c108c5

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

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

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

@ -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:
@ -373,17 +369,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
@ -393,9 +385,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
@ -405,7 +397,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
@ -428,19 +420,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)
@ -450,7 +442,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()
@ -465,10 +457,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
@ -520,7 +512,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
@ -545,11 +537,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

Loading…
Cancel
Save