Skeyer gets a maliit plugin – Part 1


Hopefully, this image shall be a video for the next blogpost
Skeyer gets a maliit plugin – Part 1

Last week I started refactoring Skeyer into libskeyer and the demo.The main reason to do this is to:

1) Easily write automated tests to benchmark the performance and precision of Skeyer’s algorithm(s): I’ve realized I need a more objective way to measure the performance and precision of Skeyer than to manually swipe a few words and look at the suggestions and make a wild guess if it is good or not.

2) I have also started writing a Maliit plugin for Skeyer(based on the examples from Maliit-framework): I’ve realized it is important to build the maliit plugin first. That way, I’ll have better idea of constraints on Skeyer, based on my usage of it on a real device. And of course to easily show off Skeyer to everyone. A real world application seems to be much more…. interesting… than a tech demo.

However, this plugin is still a work in progress and needs a lot more work to be usable. Right now I seem to be facing weird flickering issues with the plugin window and can’t even interact with it. I have no clue where to even look for clues. So my immediate plan of action(for this weekend/next weekend) is to first finish off the Maliit plugin. (I’m looking at the Ubuntu Touch/Open WebOS keyboards for inspiration, help, code. Both of them use Maliit.)


I have also started looking at implementing a very interesting new feature for Skeyer, based on the way I’ve been using my Nokia N9 lately (Yup. NoΒ other phone seems to beatΒ the N9 experience for me so far). I think this feature will make Skeyer a lot more useful. But I need to really build this feature first to test it’s worth. So I will talk more about this once I have something to show(off? πŸ™‚ ).

To recap, my immediate priorities now are:

1) Finish off the maliit plugin (and dig more into the Ubuntu touch/Open WebOS virtual keyboard).

2) Write the tests/automated benchmarks.

3) Start looking into implementing the interesting feature for Skeyer. I’m thinking of releasing(AND open sourcing) Skeyer,Β once I have a set of tests and benchmarks. Hmm.. looks like it’s going to be busy weekends for a couple of months πŸ™‚



Update: grrrrr… My hard disk crashed and I lost the work I did on the Refactoring and the Maliit plugin I was working on. So I am having to redo it again. So as usual “expect the delays”…

Skeyer gets a maliit plugin – Part 1

19 thoughts on “Skeyer gets a maliit plugin – Part 1

  1. robert says:

    hey buddy,
    I was wondering if your project was finished and if you would consider sharing the code? i am prepared to pay for it it, please contact me

    1. Hey,

      Sorry for the lack of updates. I’m currently in the middle of a job hunt for the past 1 month.

      The status update on Skeyer is that currently I am waiting for some upstream fixes to the maliit codebase, so that I can resume working on Skeyer. If nothing changes for another 20 days, I will simply opensource skeyer. Don’t worry about paying for it πŸ™‚

      1. robert sukhudyan says:

        Thank you for the prompt response,
        I am really excited to hear about any updates about open sourcing it. Do you have any experience in microcontroller programming? If yes I would possibly be interested in hiring you as a developer for a project of mine.

        Robert Sukhudyan,
        CEO My3DNA inc.

  2. tstr says:

    Hopefully project is still going on and someday we will have working skeyer available to download or jolla in the store, or atleast at openrepos.

    Btw. Is Skeyer be able to use same dictionary that stock keyboard uses? This would possibly mean multilanguage support from start if I’m not wrong. πŸ™‚

    1. Hey, sorry for the delayed reply. Was away.

      And Nope, I was using a custom dictionary custom built from various sources, including Android dictionary.

      And the big update about Skeyer is that last week I have started developing Skeyer on top of Ubuntu touch keyboard (Even it uses maliit), mainly because the official maliit plugin for Qt5 has been broken, and even the maliit mailing list and website have been down for quite a while – so I couldn’t get much help from the maliit folks for the problems i was stuck with, and I can’t keep waiting forever for their support.

      This means I now have a mature codebase to resume the development. Also when it comes to multi-language support, Ubuntu Keyboard already supports it – BUT i am not sure I would be tinkering with this for the first version. I hope to soon push out the first version and then look into this. So once done, Skeyer would be released on OpenRepos.

      (And “soon” probably means about a month. )

      Cheers πŸ™‚

      1. tstr says:

        Thank’s for reply!
        Hopefully things will clear out and problems solved. If the official maliit plugin for Qt5 is broken, does the Ubuntu touch based version work ok for Sailfish also ( I suppose it does). Multi-language support isn’t needed at first, but sure if you typically don’t write at english, there is not much user experiences from those users. But sure what ever version will be the first one, you will have lot of feedback + bug reports from it right ahead. Can’t wait to have this on Jolla, especially when there’s finally that multi-language version. πŸ™‚

        Keep up great work!

      2. Hey,

        Yes. Theoretically the Maliit plugin written for Ubuntu touch should work with Sailfish too. Although I am not sure how much work would be needed for proper sailfish os integration. I guess I can actually look into this once the plugin is done.

        Thanks for your support πŸ™‚


  3. tstr says:

    One more thing.. πŸ™‚ Is it easy to include different layouts to skeyer? I would love to see the default layout of sailfish keyboard at some day, when skeyer is out. For multi-language support there’s ready layouts for different languages also (surely ubuntu touch has too I bet)..

    It’s always long time when you’re waiting something cool. But nevermind us, just give it the time it needs πŸ™‚

    1. Hey, Each layout is actually a json file right now, just specifying what keys are in what rows, so it should be fairly straightforward to create a layout…

      The reason I am skeptical about multi-language support is not about guessing the words itself.. That bit is just as simple as matching a typed word to that of a dictionary. I am more uncertain about the other rules like Auto capitalization or any other grammar rules the language itself brings from the words…

      1. tstr says:

        Hmm.. First of all, I know it’s way too early to even discuss about this multi-language support more than already has been discussed. BUT since we started..

        How about using open source spell checkers? Maybe just English by default + after selecting desired language from settings, you could download more language support, voikko for Finnish πŸ˜‰ etc. Don’t know if this would work, but if it would, there would be both dictionary + spell checker there. What di you

    1. Mhm .. The Ubuntu touch keyboard already has presage (a multi language word prediction library )… So I am actually trying to figure out how best to integrate gestures into this architecture…. instead of reinventing the whole wheel…

      The thing about multiple languages is i am not entirely sure if it is just about adding another layout and dictionary of words or much more than that…

  4. wc says:

    hi there, I am working on a similar project and may I ask what kinds of algorithms are used for the prediction? In particular, I wonder how the algorithm would predict the words correctly even if I do not swipe over all the characters.

    1. Hey, I simply collect all the keys the user swiped through and then use a modified version of to rank all the words in the dictionary starting with the letter the user started swiping at (and its neighbours) based on their similarity, frequency of use (a simple unigram model for now).

      One of the main modifications is penalize less for edit operations if the alphabets are neighbours. Still toying with the actual weights used in the algorithm for a nicer performance though. is a good read. πŸ™‚

    1. Hey, well the status is mixed. Unfortunately Ubuntu touch packages for qt5 are still broken.. so not much progress has happened.

      On the bright side the basic demo of a maliit plugin on desktop is finally working:

      The next blogpost is when i hope to release out the source code for Skeyer and continue the development in the open. Can’t promise any dates though, as the upstream is still quite broken, and I have already bricked my tablet so many times 😦

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s