Free Software & Hacking & INdT & Linux & Maemo & Python Gustavo Sverzut Barbieri on 24 Jul 2007 08:35 pm
iPhone-like virtual keyboard for n800
Apple doesn’t sell iPhone here in Brazil, we wanted to evaluate its virtual keyboard usability… our solution here at INdT: write one using Python and Edje!
The plan was to do it in less than one week, it took a bit more since I had to work on other things, fix some bugs with the EFL itself and also implement new features (like pointer_mode: NOGRAB) and also did the initial graphics, later replaced with Ian’s nice work. It does no type prediction, word hint, cursor navigation or key composition (accents are not possible).
Summary is 230 lines of Python, 1110 lines of Edje, including comments and blank lines, and a really easy to type keyboard.
- Keyboard code: SVN http://barbieri-playground.googlecode.com/svn/efl-tests/vkbd/
EDIT: I removed n800 easy install and packages, this was meant to be a simple EFL demo, but now we have better demos and applications using EFL, like Canola and Carman.
49 Responses to “iPhone-like virtual keyboard for n800”
Leave a Reply
You must be logged in to post a comment.
on 24 Jul 2007 at 10:19 pm 1.disq said …
Nokia-N800-26:/usr/share/python-efl-core-demo/examples# ./02-vkbd.py
*** ECORE ERROR: Ecore Magic Check Failed!!!
*** IN FUNCTION: ecore_evas_data_set()
Input handle pointer is NULL!
*** NAUGHTY PROGRAMMER!!!
*** SPANK SPANK SPANK!!!
*** Now go fix your code. Tut tut tut!
*** ECORE ERROR: Ecore Magic Check Failed!!!
*** IN FUNCTION: ecore_evas_get()
Input handle pointer is NULL!
*** NAUGHTY PROGRAMMER!!!
*** SPANK SPANK SPANK!!!
*** Now go fix your code. Tut tut tut!
Traceback (most recent call last):
File “./02-vkbd.py”, line 213, in
o = VirtualKeyboard(canvas)
File “./02-vkbd.py”, line 37, in __init__
self.file_set(f, “main”)
File “edje.c_edje_object.pxi”, line 81, in edje.c_edje.Edje.file_set
TypeError: exceptions must be strings, classes, or instances, not EdjeLoadError
Nokia-N800-26:/usr/share/python-efl-core-demo/examples# ls
01-app_launcher.edj 01-app_launcher.py 02-vkbd.edj 02-vkbd.py
on 24 Jul 2007 at 11:45 pm 2.Fabien Penso said …
Looks great Gustavo ! Too bad I forgot my N800 at home during my 2 months Japanese trip. Can’t wait to try that when back home.
This N800 really needs some nice GUI, it lacks it so much. I’m looking forward for a nice launcher Palm style (or iPhone), and drag&drop everywhere, exactly where Hildon doesn’t go. I want to drag&drop to change thoses 3 icons on the left, from the launcher, to choose the application it runs, etc.
on 25 Jul 2007 at 12:29 am 3.Gustavo Sverzut Barbieri said …
@disq: are you using my latest binary version (efl-core 0.9.9.040, python-efl 0.1.1)? It should provide /usr/share/python-efl-core-demo/examples/02-vkbd.edj This also looks weird because I’m almost sure I used Pyrex 0.9.5 and that TypeError exception should not happen! :-/ Please check and inform your setup (n800 software version, etc).
@Fabien: my first edje demo (provided in the same package) is an application launcher, with nice and smooth animations, it’s not configurable neither supports drag ‘n drop, but should be easy for someone to add. It’s available on this site, just search for “Edje demo”
on 25 Jul 2007 at 12:34 am 4.linuxrebel said …
Gustavo. I can’t wait till you get to the point of being able to integrate all of this into a ‘desktop’ for the n800 they keyboard really is nice, the demo’s are nice… I’m just a bit anxious *grin* Thanks!
on 25 Jul 2007 at 12:52 am 5.Gustavo Sverzut Barbieri said …
@linuxrebel: I’m just showcasing EFL, that it’s possible to create these nice effects with good performance and minimum amount of code. It’s up to other developers to create applications using it, building the “desktop” you ask
Ok, this showcase also have as focus on INdT products, like Canola, the software I work. It will use EFL in near future, so I need to evaluate performance, fix bugs and implement required features.
This technology is totally Open Source (BSD license), developed upstream at http://www.enlightenment.org/ Most libraries were already existent (evas, ecore, edje), just optimizations for n800 were required, but some were written at INdT, like python bindings (python-efl).
on 25 Jul 2007 at 7:41 am 6.disq said …
uh, I had efl-core 0.9.9.039_indt2. updated it to 0.9.9.040_indt1.
“dpkg -l *efl*” now gives me:
ii efl-core 0.9.9.040_indt1 Enlightenment Foundation Libraries Core
ii python-efl-core 0.1_indt1 Enlightenment Foundation Libraries Core - Python Binding
ii python-efl-core-demo 0.1.1_indt1 Enlightenment Foundation Libraries Core - Python Bi
still won’t work, same error message.
n800 latest firmware. Restored from backup. No fancy stuff (fancy stuff being GPE and other PIM) installed. python 2.5.1-1osso3.
on 25 Jul 2007 at 8:54 am 7.Gustavo Sverzut Barbieri said …
@disq: problem is python-efl-core == 0.1_indt1, it should be 0.1.1_indt1, please update manually. I have forgot to increase dependency number of these packages and haven’t noticed it, since I always remove and then install again. My bad!
on 25 Jul 2007 at 8:57 am 8.Tomas said …
Very nice work. Perhaps we need to look at Python bindings for the Hildon input method plugins, so that it would be possible to plug this thing into it
on 25 Jul 2007 at 9:05 am 9.Gustavo Sverzut Barbieri said …
@tomas: it would be great to see someone making it available for broader use than a simple demo
But remember that some minor things needs to be done, like add a word list for type prediction and correction, composite keys, etc. It shouldn’t be hard, but I’ll postpone it until some of our products need it (Canola, Carman, …).
BTW, although hildon-input-method is cool and make it available everywhere, I’d make vkbd available inside applications itself, with the requirement apps would need to be EFL based. This way we could have this keyboard to fade in and make it more interactive with the whole environment.
on 25 Jul 2007 at 10:27 am 10.nhoglund said …
This looks cool.
Where can I get the required libraries libgdbm3, libreadline4 and libxdamage1?
I’m running on the latest release of the N800 firmware.
on 25 Jul 2007 at 10:30 am 11.disq said …
works now, good job
on 25 Jul 2007 at 10:42 am 12.Gustavo Sverzut Barbieri said …
@nhoglund: they’re available at “repository.maemo.org bora free”, same place as python (another requirement).
on 25 Jul 2007 at 10:55 am 13.jayakumark said …
This is really cool.Thanks for the great work you guys are doing.
Will this work with nokia 770. If yes how to do it ?
on 25 Jul 2007 at 11:06 am 14.Gustavo Sverzut Barbieri said …
@jayakumark: No, these binaries are compiled for ARM6 (arm1136jf-s), so just work on N800.
However you can compile EFL yourself and then it will work. This is not a difficult task, but really cumbersome. I plan to release 770 packages at some point, but not sure how soon it will happen.
I have https://garage.maemo.org/projects/maemo-efl for people interested in EFL, any volunteers to help me with packaging? Right now I’m alone on the packaging and doing the packages manually (no dpkg-buildpackage or like).
on 25 Jul 2007 at 11:23 am 15.nhoglund said …
Is it possible to make a .install file add more than one feed? If so, it would be a good idea to make your .install file add that one, so that it really becomes a one click install, and to prevent problems like mine.
on 25 Jul 2007 at 11:42 am 16.Gustavo Sverzut Barbieri said …
@nhoglund: I don’t think so, sorry
on 25 Jul 2007 at 12:08 pm 17.Niklas Höglund said …
That’s a shame. I’ve had similar problems in the past with packages requiring for example libglade. This takes the nice easy .install files back to manual descriptions of what feeds to add, etc.
I really like being to install programs so easily, and to have the ability to upgrade them in a single place.
Thanks anyway. I’ll try the EFL stuff as soon as I get home from work.
on 27 Jul 2007 at 5:02 am 18.Simon's Blog said …
Why Third Party Mobile Apps Are Important…
As far true third-party applications go, Apple’s iPhone is closed. If you’re unclear why that’s a mistake on Apple’s part, here’s the root of the problem: innovation happens elsewhere. To illustrate this point, consider …
on 02 Aug 2007 at 3:45 am 19.HughNano said …
Nice - though being just a demo, not particularly useful. Maybe this is a stupid question, but how does one uninstall these apps (keyboard and launcher demos)?
on 02 Aug 2007 at 9:40 am 20.Gustavo Sverzut Barbieri said …
If you installed via Application Installer, then it should uninstall fine. Isn’t that working?
on 07 Aug 2007 at 4:54 pm 21.odinson said …
This is excellent. Some of the best alpha code I’ve seen. Thank you. It could be major useful right now if it could dump the generated text to stdout if given a flag when run.
I’d poke at source but I’ve got a million other projects right now… Sorry.
on 14 Aug 2007 at 3:57 pm 22.trevarthan said …
Hey, just tried the quick install and running the apps does nothing. Took a look at xterm and got this:
~ $ /usr/share/python-efl-core-demo/examples/02-vkbd.py
Traceback (most recent call last):
File “/usr/share/python-efl-core-demo/examples/02-vkbd.py”, line 11, in
import evas
ImportError: No module named evas
Any ideas?
on 21 Aug 2007 at 8:57 pm 23.AlistairW said …
Hi there,
I’m trying to build the tools so I can play with this myself
I have run into a problem running edje_cc on vkbd.edc, it falls over with this error:
edje_cc: symbol lookup error: /usr/local/lib/evas/modules/loaders/png/linux-gnu-i686/module.so: undefined symbol: png_check_sig
I had some problems with EVAS (t doesn’t flag up the absence of libpng as a fatal error if you configure in PNG support). I suspect it might be the PNG lib I am using, libpng12-dev 1.2.15~beta5-lubuntul ??
Any pointers would be appreciated ….
on 21 Aug 2007 at 11:25 pm 24.Gustavo Sverzut Barbieri said …
It should build fine with this version, I’m using 1.2.18-r1 (gentoo) myself, but it also works on scratchbox/maemo (1.2.8rel-1osso3)…
What should be happening is different versions of this library around, please check with “ldd /usr/local/lib/evas/modules/loaders/png/linux-gnu-i686/module.so”, it should report the missing libraries.
But I recommend use of Ubuntu repository, as explained at:
http://wiki.enlightenment.org/index.php/E17_User_Guide/Installing_using_Linux_distribution_packages#Ubuntu_Linux
You can also join IRC, #edevelop at irc.freenode.net
on 26 Aug 2007 at 6:47 pm 25.atdrez said …
Nice work!
I have a question. I’ve tried to run the sample files without success. Looking at the code, it seems that there are some missing “.edj” files. I’m using Ubuntu, I’ve got the latest version (all e17 module) from the CVS.
There is some other place I could get these files?
Thanks in advance
on 26 Aug 2007 at 6:50 pm 26.Gustavo Sverzut Barbieri said …
You have to compile themes using edje_cc, just type “edje_cc 02-vkbd.edc” and it will generate 02-vkbd.edj
on 26 Aug 2007 at 8:29 pm 27.atdrez said …
the keyboard worked fine, the only bug I’ve found is at line 150:
self.on_edje_signal_mouse_down_key(emission, source)
it was not recognizing the self as an implicit parameter. I’ve changed to:
self.on_edje_signal_mouse_down_key(self, emission, source)
and stopped the warning ‘Type Error’ when pressed the button multiple times.
But, great work, this could be used someday to substitute the default Maemo keyboard.
on 26 Aug 2007 at 9:23 pm 28.Gustavo Sverzut Barbieri said …
Sorry! I’ve introduced this bug with my last commit to add decorators support.
Committed your fix, thanks.
on 26 Aug 2007 at 10:48 pm 29.autonomous_sam said …
Works great! I can type fast with both thumbs! I usually use the stylis & software keyboard. It takes too much energy, jumping around with a toothpick. And, my bluetooth keyboard has that annoying slight lag too it. This is exactly what the N800 needs!
on 10 Sep 2007 at 12:01 am 30.applesbananas said …
I can’t get the app to install on my n800 via the .install or .deb package.
I don’t know enough about terminal… maybe you can help?
on 10 Sep 2007 at 12:04 am 31.Gustavo Sverzut Barbieri said …
@applebananas: it should work, but I don’t have any device to test it now, maybe something happened to the server, please check again later.
But if it don’t work, wait some days more, Ed (from Nokia) is helping me with proper packages and submission to repository.maemo.org/extras, making it easier to install
on 26 Sep 2007 at 7:20 pm 32.sm said …
This looks really great… amazing that you can do this in such a short time… speaks wonders for the power of open source and Maemo in general that you can emulate something that Apple must have spent a long time working on.
Only request is if you could port this to the 770. I have only seen the demo you posted on the 800 and this is something that would really be great on the 770 as well!! Currently I have the 770 with os 2007 hacker edition and I love the device… this would be another great edition to my little tablet!
I would help you myself with the packaging but I am a total newbie with very little programming experience.
on 26 Sep 2007 at 9:50 pm 33.Gustavo Sverzut Barbieri said …
@sm: now that Ed Bartosh provided proper debian packages at https://garage.maemo.org/projects/maemo-efl you can just download current SVN and change “debian/rules”, removing ARMv6 specific bits from CFLAGS.
Or just wait a bit, Ed will provide 770 packages sooner or later.
on 07 Oct 2007 at 9:56 am 34.Rodrigo Vivi - vivijim » Answering some few questions… said …
[...] we will have a Enlightenment window manager with a keyboard and my dream is to release with the Gustavo’s Keyboard but we will try the Matchbox-keyboard and others to see which one fits [...]
on 11 Oct 2007 at 2:02 pm 35.?iphone????:??????,????N800???????? 的确,iphone就是iphone,苹果公司的iphone | Gizmonistas! (beta) said …
[...] link: http://blog.gustavobarbieri.com.br/2007/07/24/iphone-like-virtual-keyboard-for-n800/ Powered by Gregarious (42) Gregarious FeedFlare Bookmark This entry was written by Gizmonistas! [...]
on 21 Oct 2007 at 7:40 am 36.Tumbleweed’s Rants » N800 (overdue) review said …
[...] user has prototyped an iPhone-like keyboard for the N800 (in python), which works very nicely. But clearly the Maemo input system doesn’t [...]
on 27 Dec 2007 at 8:45 am 37.Tastiera iPhone su Nokia N800? « Linux & XboX 360 said …
[...] dettagli per l’emulazione sono disponibili in questo post, che offre illustrazioni e download dell’applet da installare sul [...]
on 11 Feb 2008 at 2:17 am 38.EFL in embedded linux « $HOME said …
[...] by Karthik Murugesan on February 11th, 2008 Exhaustive Demo EFL application (EEM) for IPAQ IPhone Like Keyboard application using Edje Kinetic Scrolling List using Edje Simple App Launcher Application using [...]
on 28 Mar 2008 at 4:58 am 39.AllThingsApple.Net » Blog Archive » ?iphone????:??????,????N800???????? 的确,iphone就是iphone,苹果公司的iphone said …
[...] Video link: http://blog.gustavobarbieri.com.br/2007/07/24/iphone-like-virtual-keyboard-for-n800/ [...]
on 13 Apr 2008 at 7:28 am 40.?iphone????:??????,????N800???????? 的确,iphone就是iphone,苹果公司的iphone : PhoneFever said …
[...] Video link: http://blog.gustavobarbieri.com.br/2007/07/24/iphone-like-virtual-keyboard-for-n800/ [...]
on 15 May 2008 at 2:38 am 41.free apps for nokia n800 said …
[...] n800… http://www.gustavobarbieri.com.br/e17-n … … Nokia-N800-26:/usr/share/python-efl-cor …http://blog.gustavobarbieri.com.br/2007/07/24/iphone-like-virtual-keyboard-for-n8002006 federal tax tablecons of international bribing cork factory perth amboy new jersey brittany [...]
on 21 May 2008 at 2:44 pm 42.phon2 » Blog Archive » ?iphone????:??????,????N800???????? 的确,iphone就是iphone,苹果公司的iphone said …
[...] Video link: http://blog.gustavobarbieri.com.br/2007/07/24/iphone-like-virtual-keyboard-for-n800/ [...]
on 28 May 2008 at 3:41 pm 43.Linux & Xbox 360 » Blog Archive » Tastiera iPhone su Nokia N800? said …
[...] dettagli per l’emulazione sono disponibili in questo post, che offre illustrazioni e download dell’applet da installare sul [...]
on 11 Jun 2008 at 3:22 pm 44.?iphone????:??????,????N800???????? 的确,iphone就是iphone,苹果公司的iphone | applefever.net said …
[...] Video link: http://blog.gustavobarbieri.com.br/2007/07/24/iphone-like-virtual-keyboard-for-n800/ [...]
on 16 Jul 2008 at 5:15 am 45.?iphone????:??????,????N800???????? ???iphone??iphone??????iphone : TechFever .zh_CN said …
[...] link: http://blog.gustavobarbieri.com.br/2007/07/24/iphone-like-virtual-keyboard-for-n800/ Digg ThisPowered by Gregarious (42) Share [...]
on 20 Jul 2008 at 3:37 am 46.Techfever.net Blogs » Blog Archive » ?iphone????:??????,????N800???????? 的确,iphone就是iphone,苹果公司的iphone said …
[...] Video link: http://blog.gustavobarbieri.com.br/2007/07/24/iphone-like-virtual-keyboard-for-n800/ [...]
on 19 Sep 2008 at 4:52 am 47.N800 (overdue) review | Tumbleweed Rants said …
[...] user has prototyped an iPhone-like keyboard for the N800 (in python), which works very nicely. But clearly the Maemo input system doesn’t [...]
on 16 Oct 2008 at 8:39 pm 48.Gustavo Sverzut Barbieri » Running Illume everywhere! said …
[...] keyboard doing correction/prediction and operating on various resolutions, for those that liked my iPhone-like virtual keyboard demo for n800, this one looks better and is for real, check out his videos: 01, 02, 03 and [...]
on 14 Dec 2008 at 5:36 pm 49.ensandecer de um computólogo » Estudando python EFL - parte 2 said …
[...] olha um teclado virtual feito com EFL baseado no teclado do iPhone, feito pelo Gustavo Barbiery, um dos geeks que trabalha com EFL aqui no Brasil e que por sinal próxima semana estará em Manaus [...]