This page lists my private developments for the Maemo platform that runs on the Nokia 770, the Nokia 800 and the Nokia 810.


9.10.2008: Following a wish from Niels Breet I now have deleted the anderenende repository to reduce the number of external repositories and to enforce usage of the official extra and extra-devel repositories! All my applications have already moved to the extras repository now for a while for the chinook and diablo distributions. Since the repository contained only old versions of these applications for a while I assume that nobody still uses this repository. If you are still interested in versions of my software for older OS versions please contact me and I will see what I can do. Note that supporting older OS versions requires extra effort and thus it is likely that I will drop support soon anyway if nobody steps in to help, so I urge people to move to newer OS versions if possible.
21.7.2008:I addes screenshots for WeightJinni, WhoAmI and PackageView. Also you can now download a Windows version of WeightJinni from here. The version is not perfect and there also some glitches in the Windows port if libIllumination, but it works. If there is further interest I can put some more effort into it!
3.7.2008:I droped my repositories for chinook and moved my packages for chinook and diablo to the extras and extras-devel repositories using the autobuilder service. If you run OS2008 (chinook or diablo) please remove my repository and use the packages from the extras repository instead. The old archives will still exists but updates will currently only be made on demand.
22.3.2008:New releases of EightyOne, Kandis, Knips and Scopa. Initial release of WeightJinni. Note that I will be 3 Weeks without constant internet access so my email response time may be high.
20.11.2007:I will get a N810 via the developer program. I am very happy about that and will promise to make as much as possible of my plans come true. I would like to wait with releasing new OS 2008 packages until I have the device in my hands to have some quality check. If you are in need of new packages or have found bugs in the current packages, do not hesitate to mail me!
28.10.2007:Initial version of my packages for chinook (OS2008) are available. There are likely some minor problems with the GUI but packaging and principal functionality should be OK!
27.10.2007:The OS 2006 packages are now up to date again! Since I do not have an Nokia 770 anymore, please test and report any problems!


This repository currrently contains software for the Nokia 770 running the last OS 2006 version and for Nokia N800 running the OS 2007 version (and for Nokia 770 that run the OS 2770 hacker edition).

Note that the packages can be installed manually but you must assure that you install current libIllumination version (still in development!).





You can also try this link anderenende.install for a installation file, that automatically configures the repository for bora and higher distributions (OS 2006 officialy does not support install files!).


The following application are available (click on the application name for one-click installation):

libIllumination GUI library that was used to create all these programs. See Illumination for details. Still in development but stable
DateJinni Allows you to calculate human readable time from time_t and reverse. Stable
DiskUsage Shows usage of all storage devices. Stable
EightyOne A simple Sudoku clone. Creates new Sudokus on the fly. Allows to define the difficulty level of the generated riddle Stable.
FindMine A simple MineSweeper clone. Stable
GiveMeFive Simpe five-in-a-row game. Development
Kandis A nicetea steeping timer. Works. Will be release in the next release round.
Knips A simple photo taking camera application. Works (no image yet)
MathJinni A simple function calculator and plotter. In early development phase
PackageView Shows details of all installed pacjages on the device. Useable but some features are lacking
PID Personal Information Database. Allows you to collect and manage people, adresses, phone numbers, email adresses and dates Useable but some features are lacking (no image yet)
PushIt A simple Sokoban clone. Stable
Scopa Implementation of the famous italian card game Scopa. Stable
WeightJinni WeightJinni is a small program that allows you to track all the things you eat and drink together with your current weight. Works
WhoAmI Small applications that show random animal photos from the internet. One player can step by step show more and more parts of the picture, while other must guess the animal. Works, but you must manually activate the internet access before!
WifiInfo Shows some detailed information regarding your WLAN connection. Works


The following mameo specific changes to the libIllumination are planed:

The following general improvements for all application are planed:

The following improvements for the existing application are planned:

The following additional applications are planned:

And here some ideas about what I would do with the GPS in the N810. Of course it all depends on the features of the integrated map application, the extra navigation software and the interfaces. I have currently put on ice all experiments with the GPS part of the device until performany of satelite detection is faster.

Accessing virtual keyboard using X11 and without Gtk

Note that Nokia now has released the sources to the virtual keyboard access code. So please take a look into the source first. I will update the information on this page as soon as I had some time to do this myself.

Using Gtk as GUI library for applications you get automatic support for the virtual keyboard. However not all applications in the world use Gtk and still you want them to run on the maemo plattform. This is possible. All you need it to extend your X11 main event loop and have a callback from your program everytime you want to start text input (opening the virtual keyboard) and release key input (making the keyboard disapear) where you can add X11 specific code.

Here what I have found out up to now. Communication between the application and the virtual keyboard is done by exchanging XClientMessages. Message types are defined by X11 Atoms, message destination (virtual keyboard) is defined by X11 properties set on the root window.

The following messages exist:

 0: Return pressed
 1: Tab pressed
 2: Backspace pressed
 4: ???
 7: Session start?
12: Menu opened, reset?

l[0]: Client window to send input to
l[1]: Window with current focus
 1: ???
 2: Close keyboard
 3: ???
 4: Some kind of acknowlegde or "status change after typing"?
 5: Close keyboard (does work in emulation but not on real device!)
 7: ??? (but uses l[3] as 'mode', can see no difference, but '0' is not allowed) 6: ??? (Results in getting COM-4 from keyboard!)
 8: Session initiator? (uses l[3] as mode? '0' not allowed!)
 9: Open keyboard (Perhaps "8" = "session begin" and "9" = "open"?
10: ???
11: ???

l[3] Mode flag:
 1: only characters
 2: Tab, return, backspace only
 3: Letters and numbers (but no symbols)
 4: only symbol characters
 5: Everything but numbers
 6: Only symbols and tab, return and backspace
 7: everything
 8: hexadecimal (A-F, a-f, 0-9)
 9: Letters and numbers (but no symbols) (where is the difference to 3?)
10: A-F
11: letters and numbers (but no symbols) (where is the difference to 3 and 9?)
12: Hexadecimal and symbols
13: Everything
14: Hexadecimal and symbols
15: Everything
16: mathematical stuff (numbers, brackets, operators and letter 'w' and 'p'?
17: Letters, mathematical but no symbols
18: mathematical stuff but no numbers
19: Letters, mathematical, numbers  but no symbols

Please take a look at the following source Illumination X11 window class and especially at the methods AcquireKeyboardInput and ReleaseKeyboardInput that open and closes the virtual keyboard (for identified options see above) and in HandleEvent the segment starting with

Atom hildonWindow=XInternAtom(display->display,"_HILDON_IM_WINDOW",true);
which contains the evaluation of the responses by the virtual keyboard, especially the code starting with
else if (x11Event.xclient.message_type==XInternAtom(display->display,"_HILDON_IM_INSERT_UTF8",false)) {
that evaluates the typed in text.

For the meaning of the various class local and global variables, that are used in the given code segment, please call me.

The given source also contains code for switching to full screen mode and going back to normal mode in the methods SetFullScreen, LeaveFullScreen and IsFullScreen.