Merge branch 'master' into epub

Conflicts:
	Makefile
	unireader.lua
pull/2/merge
Qingping Hou 12 years ago
commit 1f9efe0d9c

@ -76,8 +76,10 @@ THIRDPARTYLIBS := $(MUPDFLIBDIR)/libfreetype.a \
LUALIB := $(LUADIR)/src/liblua.a
all:kpdfview slider_watcher
kpdfview: kpdfview.o einkfb.o pdf.o blitbuffer.o drawcontext.o input.o util.o ft.o lfs.o $(MUPDFLIBS) $(THIRDPARTYLIBS) $(LUALIB) djvu.o $(DJVULIBS) cre.o $(CRENGINELIBS)
$(CC) -lm -ldl -lpthread $(EMU_LDFLAGS) -lstdc++ \
$(CC) -lm -ldl -lpthread $(EMU_LDFLAGS) -lstdc++ \
kpdfview.o \
einkfb.o \
pdf.o \
@ -99,6 +101,9 @@ kpdfview: kpdfview.o einkfb.o pdf.o blitbuffer.o drawcontext.o input.o util.o ft
einkfb.o input.o: %.o: %.c
$(CC) -c $(KPDFREADER_CFLAGS) $(EMU_CFLAGS) $< -o $@
slider_watcher: slider_watcher.c
$(CC) $(CFLAGS) $< -o $@
ft.o: %.o: %.c
$(CC) -c $(KPDFREADER_CFLAGS) -I$(FREETYPEDIR)/include $< -o $@
@ -130,7 +135,7 @@ fetchthirdparty:
tar xvzf lua-5.1.4.tar.gz && ln -s lua-5.1.4 lua
clean:
-rm -f *.o kpdfview
-rm -f *.o kpdfview slider_watcher
cleanthirdparty:
make -C $(LUADIR) clean
@ -189,7 +194,7 @@ customupdate: kpdfview
# ensure that build binary is for ARM
file kpdfview | grep ARM || exit 1
mkdir $(INSTALL_DIR)
cp -p README.TXT COPYING kpdfview *.lua $(INSTALL_DIR)
cp -p README.TXT COPYING kpdfview slider_watcher *.lua $(INSTALL_DIR)
cp -rpL data $(INSTALL_DIR)
cp -rp fonts $(INSTALL_DIR)
zip -r kindlepdfviewer-$(VERSION).zip $(INSTALL_DIR) launchpad/

@ -22,8 +22,8 @@
#include <linux/input.h>
#include "input.h"
#define NUM_FDS 3
int inputfds[3] = { -1, -1, -1 };
#define NUM_FDS 4
int inputfds[4] = { -1, -1, -1, -1 };
static int openInputDevice(lua_State *L) {
#ifndef EMULATE_READER

@ -87,6 +87,9 @@ KEY_FW_UP = 122
KEY_FW_DOWN = 123
KEY_FW_PRESS = 92
KEY_INTO_SCREEN_SAVER = 10000
KEY_OUTOF_SCREEN_SAVER = 10001
-- constants from <linux/input.h>
EV_KEY = 1

@ -1,8 +1,18 @@
#!/bin/sh
SLIDER_EVENT_PIPE="/tmp/event_slider"
export LC_ALL="en_US.UTF-8"
echo unlock > /proc/keypad
echo unlock > /proc/fiveway
cd /mnt/us/kindlepdfviewer/
# create the named pipe for power slider event
if [ ! -p $SLIDER_EVENT_PIPE ]; then
mkfifo $SLIDER_EVENT_PIPE
fi
killall slider_watcher
./slider_watcher $SLIDER_EVENT_PIPE &
./reader.lua $1 2> /mnt/us/kindlepdfviewer/crash.log
killall -cont cvm
echo 1 > /proc/eink_fb/update_display

@ -95,6 +95,7 @@ if optarg["d"] == "k3" then
input.open("/dev/input/event0")
input.open("/dev/input/event1")
input.open("/dev/input/event2")
input.open("/tmp/event_slider")
setK3Keycodes()
elseif optarg["d"] == "emu" then
input.open("")
@ -103,6 +104,7 @@ elseif optarg["d"] == "emu" then
else
input.open("/dev/input/event0")
input.open("/dev/input/event1")
input.open("/tmp/event_slider")
-- check if we are running on Kindle 3 (additional volume input)
local f=lfs.attributes("/dev/input/event2")
@ -122,7 +124,7 @@ fb = einkfb.open("/dev/fb0")
width, height = fb:getSize()
-- read current rotation mode
Screen:updateRotationMode()
origin_rotation_mode = Screen.cur_rotation_mode
Screen.native_rotation_mode = Screen.cur_rotation_mode
-- set up reader's setting: font
reader_settings = DocSettings:open(".reader")
@ -171,10 +173,10 @@ reader_settings:close()
-- @TODO dirty workaround, find a way to force native system poll
-- screen orientation and upside down mode 09.03 2012
fb:setOrientation(origin_rotation_mode)
fb:setOrientation(Screen.native_rotation_mode)
input.closeAll()
--os.execute('test -e /proc/keypad && echo "send '..KEY_HOME..'" > /proc/keypad ')
if optarg["d"] ~= "emu" then
--os.execute("killall -cont cvm")
os.execute('echo "send '..KEY_MENU..'" > /proc/keypad;echo "send '..KEY_MENU..'" > /proc/keypad')
end

@ -41,6 +41,9 @@ Codes for rotation modes:
Screen = {
cur_rotation_mode = 0,
-- these two variabls are used to help switching from framework to reader
native_rotation_mode = nil,
kpv_rotation_mode = nil,
}
-- @orien: 1 for clockwise rotate, -1 for anti-clockwise
@ -71,4 +74,3 @@ function Screen:updateRotationMode()
end
end

@ -0,0 +1,87 @@
/*
KindlePDFViewer: power slider key event watcher
Copyright (C) 2012 Qingping Hou <dave2008713@gamil.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <linux/input.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <errno.h>
#define OUTPUT_SIZE 21
#define EVENT_PIPE "/tmp/event_slider"
#define CODE_IN_SAVER 10000
#define CODE_OUT_SAVER 10001
int
main ( int argc, char *argv[] )
{
int fd, ret;
FILE *fp;
char std_out[OUTPUT_SIZE] = "";
struct input_event ev;
__u16 key_code = 10000;
/* create the npipe if not exists */
/*if(access(argv[1], F_OK)){*/
/*printf("npipe %s not found, try to create it...\n", argv[1]);*/
/*if(mkfifo(argv[1], 0777)) {*/
/*printf("Create npipe %s failed!\n", argv[1]);*/
/*}*/
/*}*/
/* open npipe for writing */
fd = open(argv[1], O_RDWR | O_NONBLOCK);
if(fd < 0) {
printf("Open %s falied: %s\n", argv[1], strerror(errno));
exit(EXIT_FAILURE);
}
/* initialize event struct */
ev.type = EV_KEY;
ev.code = key_code;
ev.value = 1;
while(1) {
/* listen power slider events */
memset(std_out, 0, OUTPUT_SIZE);
fp = popen("lipc-wait-event -s 0 com.lab126.powerd goingToScreenSaver,outOfScreenSaver", "r");
ret = fread(std_out, OUTPUT_SIZE, 1, fp);
pclose(fp);
/* fill event struct */
gettimeofday(&ev.time, NULL);
if(std_out[0] == 'g') {
ev.code = CODE_IN_SAVER;
} else if(std_out[0] == 'o') {
ev.code = CODE_OUT_SAVER;
} else {
printf("Unrecognized event.\n");
exit(EXIT_FAILURE);
}
/* generate event */
ret = write(fd, &ev, sizeof(struct input_event));
}
close(fd);
return EXIT_SUCCESS;
}

@ -370,6 +370,8 @@ function UniReader:setzoom(page, preCache)
x1 = pwidth
y1 = pheight
end
if x1 == 0 then x1 = pwidth end
if y1 == 0 then y1 = pheight end
-- clamp to page BBox
if x0 < 0 then x0 = 0 end
if x1 > pwidth then x1 = pwidth end
@ -1247,5 +1249,20 @@ function UniReader:addAllCommands()
end
end)
-- end panning
--print("## defined commands "..dump(self.commands.map))
self.commands:add(KEY_INTO_SCREEN_SAVER,nil,"slider",
"toggle screen saver",
function(unireader)
Screen.kpv_rotation_mode = Screen.cur_rotation_mode
fb:setOrientation(Screen.native_rotation_mode)
os.execute("killall -cont cvm")
end)
self.commands:add(KEY_OUTOF_SCREEN_SAVER,nil,"slider",
"toggle screen saver",
function(unireader)
os.execute("sleep 1")
os.execute("killall -stop cvm")
fb:setOrientation(Screen.kpv_rotation_mode)
unireader:goto(unireader.pageno)
end)
print("## defined commands "..dump(self.commands.map))
end

Loading…
Cancel
Save