Meego Wiki
Views
From MeeGo wiki
< Maliit(Difference between revisions)
Jump to: navigation, search
m (Window relocation)
(Moved (upstream) to http://wiki.maliit.org/Ideas)
 
(6 intermediate revisions not shown)
Line 1: Line 1:
-
[[Category:Maliit]][[Category:MeeGo Input Methods]]
+
Moved (upstream) to http://wiki.maliit.org/Ideas
-
 
+
-
{{MaliitNavigationBar}}
+
-
 
+
-
Here are some ideas for what you could do with Maliit. Some are things we really want to get done (but have not committed to), some are down-to-earth nice-to-have, while others are perhaps a bit more in the crazy, experimental or show-that-it-can-be-done spirit. Feel free to add ideas here. Use the template idea if you want. For bugs or concrete features suggestions, please use the bugtracker.
+
-
 
+
-
=== Template Idea ===
+
-
Short description of the idea.
+
-
 
+
-
'''Difficulty/effort:''' How much work does it take to complete this (assuming a Maliit dev. environent is already set up) Example: Easy, 5 hours of work <br>
+
-
'''Status:''' What is the status of implementing this idea? Example: "In progress, this and that has been done" <br>
+
-
'''Skills required:''' What do people need to know in order to complete the implementation of this idea? Example: Qt | Packaging | Gtk+ | QML <br>
+
-
'''Contact person:''' Who interested people should contact if they want to work on this. This can be a "mentor" that has insight into the relevant areas, or someone who has started working on it. Example: Real Name (ircnick) <br>
+
-
 
+
-
Longer description. Ideas, challenges, and considerations for the implementation. Neccesary tasks to complete. Links to other relevant projects or work. Mockups, video demos, et.c.
+
-
 
+
-
== Meego Keyboard Ideas ==
+
-
 
+
-
===  Key gestures ===
+
-
Input variations of a character using gestures on that key. For instance, to input a upper case A, tap 'a', move upward and release. Accented characters can be done by gesturing sideways.
+
-
 
+
-
===  Predictive keyboard ===
+
-
Details of idea can be found under [[Predictive_virtual_keyboard]].
+
-
 
+
-
'''Difficulty/effort:''' Easy, 10 hours of work <br>
+
-
'''Skills required:''' Meego keyboard, Qt, C++ <br>
+
-
'''Status:''' Experimental merge request available <br>
+
-
'''Contact person:''' Michael Hasselmann (mikhas)
+
-
 
+
-
Experimental MRQ available: https://meego.gitorious.org/meegotouch/meegotouch-inputmethodkeyboard/merge_requests/269
+
-
 
+
-
Screenshot/demo video pleaz?
+
-
-- Was demonstrated during the Meego Conference San Fransisco talk. Video will hopefully become available
+
-
 
+
-
== Input Method (plugin) Ideas ==
+
-
 
+
-
===  Dasher input method ===
+
-
Allow input using a [[:wikipedia:Dasher|Dasher]] input method.
+
-
 
+
-
'''Difficulty/effort:''' Unknown, 25 hours of work? <br>
+
-
'''Skills required:''' C/C++, Qt, input method API <br>
+
-
'''Status:''' Just talk! <br>
+
-
'''Contact person:'''
+
-
 
+
-
Dasher is a simple but innovative way of doing text input, a for this plugin would be very useful, especially for accessibility.
+
-
Dasher already has a Qt based UI, so it might be possible to reuse large parts of the code.
+
-
 
+
-
* [http://git.gnome.org/browse/dasher/ Homepage]
+
-
* [http://git.gnome.org/browse/dasher/ Repository]
+
-
* [https://bugzilla.gnome.org/browse.cgi?product=dasher Bugtracker]
+
-
 
+
-
=== Clutter-based plugin ===
+
-
Show that input method plugins can be implemented using Clutter.
+
-
 
+
-
'''Difficulty/effort:''' Easy, 15 hours of work <br>
+
-
'''Skills required:''' Clutter, input method API <br>
+
-
'''Status:''' Just talk! <br>
+
-
'''Contact person:'''
+
-
 
+
-
This should be easy to do using [http://git.clutter-project.org/cgit.cgi?url=clutter-qt/tree/README clutter-qt]. Ideally writing such would not require to compile using C++/Qt, but a C/GObject interface be provided.
+
-
 
+
-
=== Gtk+ based plugin ===
+
-
Show that input method plugins can be implemented using Gtk+.
+
-
 
+
-
'''Difficulty/effort:''' Medium, 15 hours of work <br>
+
-
'''Skills required:''' Gtk+, Qt, input method API <br>
+
-
'''Status:''' Just talk! <br>
+
-
'''Contact person:'''
+
-
 
+
-
A bit harder than the Clutter case, but should be possible. In the simple but hacky form have a <code>QWidget</code> and a <code>GtkWidget</code> and syncronize the relevant state between them. Let the GtkWidget render offscreen and paint the GtkWidget content to the <code>QWidget</code> in <code>::paintEvent()</code>.
+
-
 
+
-
=== Python input method plugin interface ===
+
-
Support writing input methods in [[Python]].
+
-
 
+
-
'''Difficulty/effort:''' Medium, 15 hours of work <br>
+
-
'''Skills required:''' Python, PySide, input method API <br>
+
-
'''Status:''' Just talk! <br>
+
-
'''Contact person:'''
+
-
 
+
-
Python is an officially supported language for Meego. It would be nice if we supported writing plugins using Python. Allowing this can be done in a similar way we currently support QML (see [https://meego.gitorious.org/meegotouch/meegotouch-inputmethodframework/trees/master/input-method-quick input-method-quick code])
+
-
Python bindings would have to be generated for the input method API. This should probably be done using [http://www.pyside.org/ PySide].
+
-
 
+
-
== Non-Meego run-time environments ==
+
-
 
+
-
=== Maliit in Gnome 3 ===
+
-
Gnome looks to be interested in expanding to touch-centric environments. Therefore showing that Maliit is the right solution to use for input methods in Gnome would be worth-while.
+
-
 
+
-
'''Difficulty/effort:'''
+
-
* For prototype demo: Easy, 20 hours of work
+
-
* For really good integration: Medium, xxx hours of work
+
-
'''Skills required:''' Gnome technology, Maliit integration <br>
+
-
'''Status:''' Prototype work has been demonstrated <br>
+
-
'''Contact person:''' Jon Nordby (jonnor)
+
-
 
+
-
* [http://www.jonnor.com/2011/04/introducing-maliit-on-screen-keyboard-in-gnome-3/ Blogpost demoing Maliit in Gnome 3]
+
-
* [https://live.gnome.org/ThreePointOne/Features/OnScreenKeyboard Gnome 3.2 Feature page for on-screen keyboard]
+
-
* [https://bugzilla.gnome.org/show_bug.cgi?id=612662 Issue in bugtracker for on-screen keyboard]
+
-
 
+
-
TODO: document all the things needed for really good integration
+
-
 
+
-
=== Maliit on Windows ===
+
-
The main goal here would be to allow plugin development to happen on Windows. Since Meego Input Methods is implemented using Qt, this should in theory not be too hard. However, the DBus transport used between framework and inputcontext might need to be replaced by another IPC, and some X specific code might need to be reimplemented or removed.
+
-
 
+
-
See also [[Maliit/Ideas/Supporting_Non_X11_Platforms]]
+
-
 
+
-
=== Maliit in KDE ===
+
-
KDE also seems to be growing an interest in on-screen keyboards, touchscreen centric UI and mobile device form factors.
+
-
 
+
-
'''Difficulty/effort:'''
+
-
* For prototype demo: Easy, 10 hours of work
+
-
* For really good integration: Medium, xxx hours of work
+
-
'''Skills required:''' KDE technology, Maliit integration <br>
+
-
'''Status:''' ? <br>
+
-
'''Contact person: '''
+
-
 
+
-
* [http://btux1984.wordpress.com/2010/04/28/kdes-onscreen-keyboard Blogpost about onscreen keyboard]
+
-
* [http://apachelog.wordpress.com/2011/05/20/kubuntu-11-10-mobile-devices-sneak-peak/ Blogpost annoucing Kubuntu 11.10 Mobile sneak peak]
+
-
* [https://bugs.kde.org/show_bug.cgi?id=265452 Related issue in bugtracker]
+
-
* [https://blueprints.launchpad.net/ubuntu/+spec/desktop-o-kubuntu-mobile Kubuntu Mobile Oneric blueprint ]
+
-
* [http://i.imgur.com/bbVmf.jpg Prototype screenshot]
+
-
 
+
-
=== Maliit in Ubuntu ===
+
-
* [https://blueprints.launchpad.net/ubuntu/+spec/multimedia-dx-n-virtual-keyboard Natty on-screen keyboard blueprint]
+
-
 
+
-
== Other ==
+
-
=== Commandline option to switch between D-Bus session bus and direct socket ===
+
-
Currently a peer-to-peer connection with a socket file is used for input context <-> framework communication.
+
-
Having a option to use the session bus would be nice. This allows one to make use of DBus features like on-demand service activation, or to easily introspect/debug the service.
+
-
 
+
-
'''Difficulty/effort:''' Easy, 20 hours of work <br>
+
-
'''Skills required:''' dbus, dbus-glib, C/C++ <br>
+
-
'''Status:''' <br>
+
-
 
+
-
* Basically, revert http://meego.gitorious.org/meegotouch/meegotouch-inputmethodframework/commit/1aa9a502005293bf4a808aaed87142f6dbcdffdb
+
-
* Add a commandline option to choose between the two methods
+
-
* Update the standard input contexts to also support session bus service (and prefer that one over the socket?)
+
-
 
+
-
=== Direct C/C++ Input Context API ===
+
-
Direct API for input context (no DBus connection).
+
-
 
+
-
'''Difficulty/effort:''' Easy, 15 hours <br>
+
-
'''Skills required:''' Qt, C++, input context api <br>
+
-
'''Status:''' <br>
+
-
'''Contact person:''' <br>
+
-
 
+
-
A direct API means that the framework can be tested without having to start up DBus, and that it can run on platforms with DBus.
+
-
 
+
-
=== Free and open source correction/prediction plugin ===
+
-
Currently there is no free error correction/prediction engine plugin. We of course want to provide this.
+
-
 
+
-
'''Difficulty/effort:''' Easy, 20 hours of work <br>
+
-
'''Skills required:''' C/C++, usage of spelling engines <br>
+
-
'''Status:''' Just talk. Help wanted! <br>
+
-
 
+
-
This could be done using one of the existing free spelling engines.
+
-
An analysis of the different options should be done before starting on the implementation, looking at the advantages/disadvantages of each. For instance, it might not be that all spelling engines can provide word-prediction.
+
-
 
+
-
* [http://aspell.net/ Aspell]
+
-
* [http://www.gnu.org/software/ispell/ispell.html Ispell]
+
-
* [http://hunspell.sourceforge.net/ Hunspell]
+
-
* [http://www.abisource.com/projects/enchant/ Enchant]
+
-
* [http://presage.sourceforge.net/ Presage] [http://www.joaquimrocha.com/2010/03/03/text-prediction-on-gnome/ (blogpost)] (for prediction)
+
-
* Dasher, might be able to use its backend (for prediction)
+
-
* ?
+
-
 
+
-
=== Bluetooth keyboard ===
+
-
This would allow you to use your Meego device as a keyboard for other Bluetooth enabled devices.
+
-
 
+
-
== Completed or partially-completed ideas ==
+
-
Please move ideas here one they have been implemented/explored, and document the effort.
+
-
 
+
-
=== QML-based plugin ===
+
-
Show that input method plugins can be implemented using Qt Quick and QML.
+
-
 
+
-
'''Status:''' Done! <br>
+
-
'''Contact person:''' Michael Hasselmann (mikhas) <br>
+
-
 
+
-
A QML-based input method plugin (keyboard) can be found in the keyboard repositor under meego-keyboard-quick. See [http://taschenorakel.de/michael/2011/05/12/writing-qml-based-input-methods-maliit/ the blogpost announcement] for more details.
+
-
 
+
-
=== Maliit on Freemantle+N900 ===
+
-
Demonstrate that Maliit can run on Freemantle/N900.
+
-
 
+
-
'''Status:''' Done! <br>
+
-
'''Contact person:''' Michael Hasselmann (mikhas) <br>
+
-
 
+
-
Maliit framework and the Meego Quick keyboard is available in the extras-devel repository. See [Maliit/Installing] for how to install. The [http://taschenorakel.de/michael/2011/05/12/writing-qml-based-input-methods-maliit announcement blogpost] also has some info.
+
-
 
+
-
 
+
-
=== Input Method Plugin SDK ===
+
-
Development kit to enable third-party developers to easily create new input methods.
+
-
 
+
-
'''Difficulty/effort:''' Easy, 20 hours of work <br>
+
-
'''Skills required:''' Input Method plugin API <br>
+
-
'''Status:''' Still room for improvement <br>
+
-
'''Contact person:''' Jon Nordby (jonnor) <br>
+
-
 
+
-
Current plugin SDK available from [[Maliit/Documentation]]
+
-
 
+
-
A good SDK would consist of:
+
-
* (80%) Comprehensive documentation for plugin API
+
-
* (60%) Task-oriented documentation for how to develop a plugin
+
-
* (DONE) Skeleton/example code to make it easy to get started
+
-
* (DONE) Above items easily available for the target platforms
+
-
* (TODO) Tools/utilities to make development easier
+
-
** Currently setting the correct plugin requires fiddling with gconf
+
-
** Currently one has to run/restart the uiserver manually
+
-
** Currently running the test application with the correct inputcontext has to be done manually
+
-
 
+
-
=== Window relocation ===
+
-
When the application/toolkit does not support widget relocation, fall back to relocating the window to try to keep the text input field visible on screen.
+
-
 
+
-
'''Difficulty/effort:''' Medium, 15 hours of work <br>
+
-
'''Skills required:''' X11, ICCM, EWMH <br>
+
-
'''Status:''' Prototype work done <br>
+
-
'''Contact person:''' Jon Nordby (jonnor) <br>
+
-
 
+
-
Branch: https://meego.gitorious.org/~jonnor/meegotouch/jonnors-meegotouch-inputmethodframework/commits/windowrelocation-proto1
+
-
 
+
-
Current code will move/resize the focused window to avoid the input method area when it grows, and restore them when input method area shrinks again.
+
-
 
+
-
Current challenges and ideas for improvement:
+
-
* Applications will use the desktop area to figure out how big they can make override-redirect windows and other UI element, leading them to go above the input method area. Modifying the X atoms that govern the value of this area would improve this alot.
+
-
* No way to tell if a given application window supports widget relocation or not. If the app/window supports widget relocation, it should be preferred. Window relocation should either not happen or if the , work as an additional "level" in the relocation chain.
+
-
* The current code will move the entire window. Relocation should only happen to ensure that the input widget is not obscured. This can be done by getting that information from input context through the widgetState dictionary.
+
-
* There are significant limitations to how much windows can be resized. Not much possible here without changing the application or application framework.
+
-
** A concept that might be worth trying is to let applications have scrollable areas, and for the app framework to be responsible for keeping the focused widget inside the window when resized. This could have the benefit that it would work. On the other hand, just doing proper (basic) widget relocation would not be much harder...
+
-
 
+
-
 
+
-
{{MaliitNavigationBar}}
+

Latest revision as of 15:47, 12 July 2011

Moved (upstream) to http://wiki.maliit.org/Ideas

Personal tools