Skip to content
sayak-sarkar edited this page Aug 25, 2012 · 18 revisions

Disha

BN_Disha Icon

Bengali Visual Keyboard

The popular keyboard layouts in use for Indic scripts such as Bengali follow a non-visual style of typing i.e. the characters are not typed in the sequence they are displayed. The non-visual style follows a uniform method of typing the characters as per their type (consonants, independent vowels, dependent vowels, special characters, conjunct characters) and are defined by specific rules. This method of writing is already prevalent.However, this often poses a learning challenge for new users who are more practised in the conventional visual writing method. This project aims to create a Visual typing method for complex scripts like Bengali.

Project Background:

Currently, the most commonly used and popular keyboard layouts available for Indic scripts such as Bengali use a kind of non-visual style of typing. Now, the big question lies in the fact that what exactly is a “Non-Visual Style of Typing”? The answer to that can be stated simply as the sequence in which the characters are typed into the system is not exactly the sequence in which they are displayed. This can be explained by a simple example of an input combination of the Bengali consonant Ka (ক) and the dependent vowel sign E (ে) as follows:-

Typing sequence: ক+ে

Display sequence: কে

This non-visual style is achieved by following a uniform method of typing the characters as per their type(i.e. consonants, independent / dependent vowels, special characters, conjunct characters) and are defined by specific sets of rules.

Problems with the existing systems:

Even though the existing non-visual style of writing is quite prevalent, this poses a major learning challenge for new users who are usually more used to the conventional visual way of writing. How so? Reiterating the above example the most common problem faced is that inexperienced users usually try the above consonant-vowel combination in the following way:-

ে+ক

thus ending up with the following display:-

েক

which is not how it should be.

This project is thus aimed at creating a Visual Typing Method for complex scripts like Bengali.

Project Implementation Logic:

The examples stated in the previous section outline just one of the implications for the project. However, there are quite a few cases which need to be implemented on top of the existing system to create such a Visual Layout. This project is primarily concerned with dependent vowels and split vowels which need to rendering of pre-base matras for base consonants. The main implementation focus of this project can thus be listed as below:-

Case 1:

BENGALI VOWEL SIGN E(ে)[Unicode: 0x09C7]: In this case the rendering engine should be able to process an input combination in which the dependent vowel is input first followed by the base consonant, i.e. if the base consonant is ক, the input system should be able to process the input combination: ে+ ক as কে in which the vowel the input system first takes ে as input, stores in it’s buffer and waits for the following input. If the following input is a consonant like ক as in the current example, it renders ে as the pre-base matra, and ক as the base consonant.

Case 2:

BENGALI VOWEL SIGN AI (ৈ)[Unicode: 0x09C8]: This case is similar in behaviour to the previous case, the only difference being in the input vowel, which is Aikar in this case. Thus the input sequence being ৈ+ক, and the display sequence being কৈ.

Case 3:

BENGALI VOWEL SIGN I(ি)[Unicode: 0x09BF]: This case is also similar to the previous couple of cases where the dependent vowel ি is to be input followed by the consonant as ি+ক and is displayed as কি where again ি becomes the pre base matra followed the base consonant ক.

Case 4:

BENGALI VOWEL SIGN O (ো)[Unicode: 0x09CB]: This case implements split vowels, wherein one part of the vowel sign could be input before the base consonant, while the other part maybe be input after the consonant. This can be explained by the following example:-

Input combination: ে+ক+া

Display combination: কো

This input sequence can be implemented by the input system in two parts. In the first part the input system stores the input vowel ে in the buffer. If the next character is a consonant such as ক it renders the combination as কে and again stores this to the buffer. Now, if the next input character is the vowel া, then it renders the combination as কো and commits it as the output, otherwise the input system, commits the output as কে and initializes the input state to render the next character.

Case 5:

BENGALI VOWEL SIGN AU(ৌ)[Unicode: 0x09CC]: This case again behaves similar to the previous case, the only difference being in the second part of the implementation, wherein if the next input vowel is Au, then the system renders the output as কৌ.

The above mentioned five cases are the main priority for the implementation of the Visual Keyboard Layout. The other dependent vowels in the Bengali language are mostly either post base, above base or below base matras which are already implemented by the present input layouts, hence they need not be reworked.

Keymap Layout For Disha:

BN_Disha Keymap layout

File Description:

  • icon/bn-disha.png: PNG file containing the icon for the input system.

  • layout/Disha_Bengali.png: PNG file containing the keyboard layout map for the input system.

  • Conjunct Input Manual.pdf: PDF file containing reference information for Conjunct Character inputs.

  • README.md: MD file containing basic information about the input system along with reference links pertaining to the project.

  • Release Notes.md: MD file containing version information related to the project. This file lists out all major updates to the input system on a release by release basis.

  • bn-disha.mim: MIM file containing the logical implementation for the Visual Based Input System. This file contains the actual working code for the system.

Project Links:

Installing, Testing & Modyfing The Input System

Installation Steps

Project Versions:

Version Wise Update History

Project Blog:

www.sayaksarkar.wordpress.com/disha

Project Proposal:

http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/sayak_sarkar/6001