Wednesday, 18 June 2014

Since there exist no braille layout in open-source desktop environment the project ibus-sharada-braille will be an innovative step towards this end. I hope that this effort will be worth to whole world as it produces the number of keys to be used with the keyboard and also will help many as the layout will make the production of text material very fast.

Brailler is a equipment for producing hard text in braille format very fast and easy. Brailler uses only six keys for the purpose. Hear the keys are used in combination which shall be pressed together. See the video hosted below

i am very thrilled to undertake this project due to wonderful support from Swathanthra Malayalam Computing for it's wholehearted support, inspiration of my father who is a braille user. I consider the acceptance of this project by Swathanthra Malayalam Computing and Google as a new flowering of the effort of louies braille.


1 - Braille is an international standard about which much explanations is not needed.

2 - Almost all indian languages have more than 50 alphabets which demands a lot of keys in the keyboard. The number of keys that can be used may be reduced to 6 keys
using this approach.

3 - Since braille dots are phonetic based for all languages, studying one key combination can help one to master almost all languages. For example dot 1 and 3 represents "ka" in all Indian languages and "k" in all European languages and like.

4 - Braille in all languages use contractions  profusely and same combinations can be reproduced to ibus-sharada-braille as well. which make production of digital text very fast. For example all the six dots pressed together will produce the word "for" as in grade 2 braille and combination of letter "r" (1235) after pressing dot 4 will produce the word "represent" as in grade 3 braille.

5 - A lot of abbreviations are available in braille which are already provided in the application. example cd-could , ac-according one should press the abbreviation expansion key after typing "ac" will produce "according". The most important feature of all, is that one can create his own abbreviation either as words or sentences which can be abbreviated.

6 - ibus-sharada-braille will help the people with restricted hand movement and people with visual impairment to use the computers as it can produce text in all applications such as web-browsers, text editors, Dictionaries etc etc.

Learning and Practicing
Tuxtype with braille is a tool for learning and practicing braille combinations using fdsjk and l as 123456 respectively. One can learn Bharati-Braille as it supports Indian languages such as Malayalam, Hindi, Tamil and Kannada.

Get Tuxtype with braille 

See my blog about that project


Project - Diary

Week - 1

At the beginning our task was learning about the existing braille layout in XKB. it is working well but only in programs written in xlib also it has no contraction, abbreviation, word deletion, automatic consonant-vowel switching etc. At this point I started learning about different input-methord(im) modules that can be created for popular GUI toolkit such as GTK,QT,wx etc. At this time mentor Samuel Thibault came with an idea of creating an ibus-engine which would work in most of the GUI toolkits. After reading about ibus, I found that ibus-tmpl is the place to start developing this project.

Week - 2 
As  we planned development started by cloning ibus-tmpl from phuang github.
and the project is placed with name "ibus-sharada-braille" in my github. We selected Python language(without using gi library) for creating engine because python is a Interpreted language.
I have created a sample  for testing with hard-coded braille maps given below

class Engine(ibus.EngineBase):
    def __init__(self, bus, object_path):
        super(Engine, self).__init__(bus, object_path)
        self.__is_invalidate = False
        self.__preedit_string = u""
        self.__lookup_table = ibus.LookupTable()
        self.__prop_list = ibus.PropList()
        self.__prop_list.append(ibus.Property(u"test", icon = u"ibus-locale"))
        #Key code map
        self.keycode_map = {41:"f",40:"d",39:"s",44:"j",45:"k",46:"l",43:"h",42:"g"}

    def order_pressed_keys(self,pressed_keys):
        ordered = ""
        for key in ["g","f","d","s","h","j","k","l"]:
            if key in pressed_keys:
                ordered += key;
        return ordered;    
    def process_key_event(self, keyval, keycode, state):
        is_press = ((state & modifier.RELEASE_MASK) == 0)
        if not is_press:
            if (self.__preedit_string == "fd" or self.__preedit_string == "df"):
            elif (self.__preedit_string == "fj" or self.__preedit_string == "jf"):   
            elif (self.__preedit_string == "f"):
            return False
            if keyval in xrange(keysyms.a, keysyms.z + 1):
                self.__preedit_string += unichr(keyval)
                return True       

    def __commit_string(self, text):
        self.__preedit_string = u""
Week - 3

In this week i where completly engaged with coding also i have improved upon the braille maps i had created in sharada-braille-writer project. also some extras such as c source code and gettext files removed, abbreviation key "a" added, "gh" for word deletion and just "h" for backspace enabled, punctuation key ";" added, contraction mapping enabled, Capitol switch "g" enabled for english etc. And finally engine dispatched from garage. and given to mentor samuel thibault and anilkumar.

Abbreviation expansion and word deletion where using last word letter count which where a bad methodology so now it uses surrounding_text() for getting and deleting text. Also i made first testing with students from government school for the visually impaired kasaragod. The demo which shows visually impaired students writing comfortably using libreoffice is given below

 Week - 4

During testing we found that creating chill in malayalam is a problem and i solved (use "g" for getting chill).  According to mentors and my father's suggestion map schema changed. it now uses 123456 instead of fdsjkl which make map creation easy.

Week - 5,6
Yes a preferences dialog is required for setting required language, changing default language, and setting key shortcuts. When i talked about the specification to my mentor samuel  thibault he gave me a good suggestion which is, facility for reassigning the keys representing six dots.  In consideration I created the preferences with two pages. The first one general for setting language and simple mode. Hear enabling simple mode will disable abbreviations and contractions for a newbie user.  The screen-short of general page is given below.

In keys/shortcuts page user can reassign keys representing six dots, abbreviation key, punctuation key, key to switch between beg-mid list, and key to change language

Week - 7,8
Espeak patch : The first task was make the engine accessible for visually impaired users using python espeak module. It was necessitated as orca could not articulate the insertion of text containing more than two characters. Also this temporary patch will  announce deletion of word and character.

Testing :  For the testing the efficacy of ibus-sharada-braille we remastered with Ubuntu 14.04 and distributed it to a few braille users. At the primary testing itself engine is reported to work well in widely used utility's such as Firefox, libreoffice, gedit, tuxtype etc. Testing is going on and they continue to give there feedback.

Caps Lock key :  As per the feedback we received, I have arranged caps lock key which can be toggled using the same key to produce capitol letter.

Abbreviation-Editor  : This is one of the major feature of Ibus-Sharada-Braille which i have proposed in my project. This editor will make  editing process of abbreviation more user friendly and safe.  Using this facility one can share the abbreviation one has produced with others. This facility will increase the speed of producing text.

Language Editor : This also one of the major feature of Ibus-Sharada-Braille which i have proposed in my project. Through this editor user can easily add new language or remove/modify existing languages. For each selected language user can add/remove contraction tables. Though beginning,middle, and punctuation list can't be removed but one can edit the content.

While editing Key-Combination one has to press required key-combination as set in the ibus-sharada-braille-preferences. As in abbreviation editor user can also import and export maps. with this fecility one can easily share the map one has produced. 

Installation Packages : Final RPM/Deb packages which will make user install ibus-sharada-braille in an easy manner. Beta packages can be downloaded from sourceforge.

Testing with beta versions :  We had tested the language/abbreviation editor and preferences and found that there are lot of bugs to be fixed and some of features are missing. These includes duplicate entries in maps, numerical in default list, restore function in preferences, entry error in language editor,  add map receive map name using key-combination, bug with last language name, accessibility fixes.. etc

New version : Version 0.2 is released after fixing all of the serious bugs mentioned above.

Documentation :  The documentation for ibus-sharada-braille is  here

Remaining Works

1 - Orca script. a python script for orca screen reader which make orca announce abbreviation expansion, contraction, word deletion, language switching etc

Final Report

   My second GSoC project has come to a close with great success. It was a nice experience for me as I could produce something creative and innovative. I could accomplish almost all the features I had proposed though I had to change my XKB proposal to Ibus. I am thankful to my mentors Samuel thibault, Anil and Aniver for their support to experiment with Ibus and proceed with it . After the selection the whole process was a flow and I had to stop nowhere.

  With its language editor and accessibility support the project has become a universal one with much developmental scope. Ibus sharada braille is a flowering of braille system developed by Louis Braille. The program reduces the number of keys to produce text to a maximum limited number of six. I was really amazed to see the six dot approach of braille can handle text in such a comprehensive way.

As the program has to work with all the architecture i selected python to write this project.
for this project i had to work really hard as braille is a very comprehensive system of writing. As there are many types of keyboard's like qwerty and azerty etc i had created a preferences dialog with which one can select his own keys representing braille dots.

 The possibility for creating abbreviations which one wants, letter deletion key 'h'  word deletion key 'g' and 'h' together map creation a feature in language editor make text production very fast.

I had created videos which shows the working of ibus-sharada-braille which i will upload soon.
I am really thankful to Swathanthra Malayalam Computing(SMC) for accepting this project in consideration of the result the project would bring!.  I am grateful to my mentors for there quick and prompt response.

Basic Working Part - 1

Basic Working Part - 2

Preferences Dialog
Abbreviation Editor

IBus-Sharada-Braille  Language Editor