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.
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
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.
@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”
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!
@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).
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.
@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!
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
@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.
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.
works now, good job
@nhoglund: they’re available at “repository.maemo.org bora free”, same place as python (another requirement).
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 ?
@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).
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.
@nhoglund: I don’t think so, sorry
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.
Pingback: Simon's Blog
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)?
If you installed via Application Installer, then it should uninstall fine. Isn’t that working?
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.
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?
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 ….
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
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
You have to compile themes using edje_cc, just type “edje_cc 02-vkbd.edc” and it will generate 02-vkbd.edj
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.
Sorry! I’ve introduced this bug with my last commit to add decorators support.
Committed your fix, thanks.
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!
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?
@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
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.
@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.
Pingback: Rodrigo Vivi - vivijim » Answering some few questions…
Pingback: ?iphone????:??????,????N800???????? 的确,iphone就是iphone,苹果公å¸çš„iphone | Gizmonistas! (beta)
Pingback: Tumbleweed’s Rants » N800 (overdue) review
Pingback: Tastiera iPhone su Nokia N800? « Linux & XboX 360
Pingback: EFL in embedded linux « $HOME
Pingback: AllThingsApple.Net » Blog Archive » ?iphone????:??????,????N800???????? 的确,iphone就是iphone,苹果公å¸çš„iphone
Pingback: ?iphone????:??????,????N800???????? 的确,iphone就是iphone,苹果公å¸çš„iphone : PhoneFever
Pingback: free apps for nokia n800
Pingback: phon2 » Blog Archive » ?iphone????:??????,????N800???????? 的确,iphone就是iphone,苹果公å¸çš„iphone
Pingback: Linux & Xbox 360 » Blog Archive » Tastiera iPhone su Nokia N800?
Pingback: ?iphone????:??????,????N800???????? 的确,iphone就是iphone,苹果公å¸çš„iphone | applefever.net
Pingback: ?iphone????:??????,????N800???????? ???iphone??iphone??????iphone : TechFever .zh_CN
Pingback: Techfever.net Blogs » Blog Archive » ?iphone????:??????,????N800???????? 的确,iphone就是iphone,苹果公å¸çš„iphone
Pingback: N800 (overdue) review | Tumbleweed Rants
Pingback: Gustavo Sverzut Barbieri » Running Illume everywhere!
Pingback: ensandecer de um computólogo » Estudando python EFL - parte 2