How to hack a Sony Reader
Inside the Linux-based e-book viewer
You’re not limited to simply altering the text that appears on some of the screens - you can actually add additional functions, though this is where things start to become somewhat less straightforward.
For a simple tweak, look at the
applicationStart.xml file. You’ll see definitions near the top for the different keys, for example:
<string key="6" do="doDigit" />
for the non-numeric keys, there are entries such as:
<boolean key="0x27" do="doCenter"/> <boolean key="0x27-hold" do="doCenter"/>
Assigning a global built-in function to one of these keys is achieved by changing the value of the do parameter. A popular tweak uses the long press on the centre of the navigation button to shut the Reader down, though you could equally choose to use it to much the audio. Just change the
do= value to
doMute if you prefer.
More complex customisations tend to rely on adding extra code in the
main.xml file. Look through, and you’ll see that there’s a group tag for the different screens, as for the About screen that we tinkered with earlier. The
<code> tag allows you to define specific functions for that page, each within its own
Look, for example, at the
PAGE_GROUP, where you’ll find a function with the id
“pageChanged” which updates the bottom of the screen with the current page of the current book. A similar function is found in menus.
And another popular hack adds a clock to the bottom of the screen. A call to
this.shd_clock() is added at the bottom of
“pageChanged”. Then, a new function
shd_clock is defined, using a function tag, which starts like this:
<function id="shd_clock"><![CDATA[ var time = new Date(); var show = "";
It goes on to checks the preferences for clock display, and shows the time in the appropriate format, each time the page is changed. A companion function on the About screen uses the 0 key to toggle the clock display between off, 12 and 24 hour. It begins by using
doDigit, then checking if the 0 key was pressed, and setting a preferences option appropriately.