triangulatedexistence

A proposal for Indic keyboard interfaces

[The entire Bengali text was written by a human and translated by Google Translate, with corrections by the human only, not any mainstream LLMs. There are em dashes in this text; I haven't changed them.

The original text has the essence fully present; if you can read it, please do; it's provided just below the English version.

Lastly, all of this is an earnest attempt to explain the architecture of a keyboard interface I have already implemented, with the necessary software engineering diagrams already in my GitHub repo. The preprint, though outdated from the computation POV, is a place where I have explained the motivations well. I hope you guys will enjoy the explanation.]

I have named it "Taravinyas".

It acts as an interface between your keyboard and your writing.

A section from the way Salomon showed the Brahmi alphabet in a tabular form

[Look at the above table for reference.] You might specify, for instance, "palatal, aspirated, unvoiced," and the character "ছ" or "𑀙" (chha) will appear in your text area [first table, second row, second column]. You don’t actually need to memorize these technical terms; remembering just the initial letter of each consonant group (varga) is sufficient.

Every time I’ve tried to explain this in English, it ended up sounding overly complicated. So, today, I’ll break it down into simple, plain Bengali.

How it works

In computer science, the concept of a "black box" comes up frequently. You provide an input to the black box, and based on that input, it produces an output.

If we consider "Taravinyas" to be this "black box," the input consists of two components: the consonant group (varga), and the specific column (representing phonetic attributes like aspiration and voicing).

I think of the varga as something "coarse" (like stones), while the columns—which define attributes like aspiration and voicing—are "fine" (like sand).

The "coarse" part is straightforward—it’s a fixed, singular element. The "fine" part is more complex; determining it requires evaluating a series of "on-off" switches (for example, 1 for voiced, 0 for unvoiced, among other factors).

That constitutes the input.

Part 1: Taravinyas determines the specific "fine" position. How? By processing those "on-off" switches using Boolean algebra. This is the most complex part of my system—something I’ve been refining.

Part 2: Taravinyas then identifies the actual character. I implemented a lookup table in TypeScript to retrieve the character. The combination of the "coarse" and "fine" components produces the final character. For each written language, I will provide the schema; developers can then create a lookup table based on the specific programming language or medium.

For any given script, it is important to understand the schema used in "Part 2." Essentially, this schema represents the alphabet, though the positioning of individual characters may be adjusted for user convenience. For instance, "ড" (ḍa) and "ড়" (ṛa) might occupy the same cell, with an additional "switch" (modifier) to account for the distinct dot (nukta).

When we discuss the theoretical aspects, we will consistently refer to "Part 1."


I initially conceived this for hardware circuits, which is why Boolean algebra is involved.

By providing characters from any Brahmic script, you get a system—a "machine"—that is intuitive to use; if you know the alphabet of your own language, you already know how to use it.

The "Taravinyas" (arrangement pattern) is a framework, a mould, designed to create keyboards that are compact, easy to learn, and fast. Based on this framework, I have envisioned four types of keyboard layouts, two of which I have already implemented.

The four concepts are:

1) Radio buttons: Input is provided via radio buttons on a website. (Functional)

2) Steno layout: Allows for effortless typing using a subset of keyboard keys—with dedicated keys for specific phonetic categories (e.g., palatal sounds, unaspirated consonants, and aspirated consonants). (Functional)

3) Handwriting layout: Inputs are provided through gestures—for example, drawing a circle might represent an unaspirated consonant. I am currently consulting with a biomechanics student on this. (In the conceptual/planning stage)

4) Two-side layout (the limit of my current exploration): Coarse-grained keys are divided between two sides—initial characters of a consonant class on the left, and subsequent characters of that class on the right. It includes options for dragging and two-finger tapping. (In the conceptual/planning stage)

Other layouts are possible, but I would need assistance from UI/UX experts.


Currently, there is a website available for the Tamil language. Their layout—the way they structured it—was genuinely complex to put together. However, if I even put some time for the North Indian scripts, the task will be completed almost instantly.

After Tamil, I have moved on to Bengali consonants; the vowels and the miscellaneous characters have not been included yet.

I plan to look at the Sylheti script later, as it also follows a rather complex layout.

====

Bengali version (the original)

[পুরো বাংলা লেখাটা একটা রক্তমাংসের হাতের লেখা]

"তারাবিন্যাস" দিয়েছি এটার নাম।

এটি আপনার keyboard ও আপনার লেখার মধ্যে এক ধরনের যোগাযোগ মাধ্যম (interface)।

আপনি বলবেন "তালব্য বর্ণ, মহাপ্রাণ, অঘোষ", আপনার textarea তে লেখা হবে "ছ" বা "𑀙"। অবশ্য এসব নাম মনে রাখতে হবে না; বর্গের শুধু শুরুর বর্ণগুলো মনে রাখলেই যথেষ্ট।

আমি এটা নিয়ে যতবারই ইংরেজিতে বোঝানোর চেষ্টা করেছি, ততবারই জটিল কথা চলে এসেছে। তাই আমি নিজেই আজকে এটার ব্যাপারে পাতি বাংলায় খুলে বলছি।

কাজ করে কীভাবে

কম্পিউটার সায়েন্সে "black box" এর কথা বার বার চলে আসে। এখানে ব্ল্যাক বক্স কে কিছু দিলে সেটা হয় input, এবং ব্ল্যাক বক্স সেই জিনিসটা দেখে আমাদের কিছু একটা দেবে: সেটা output

যদি তারাবিন্যাসকে ধরে নিই সেই "black box", তাহলে input হবে দুটো জিনিস: কোন বর্গ, আর কোন column

আমার এখানে আমি বর্গকে ধরেছি পাথরের মতো "coarse", আর মহাপ্রাণ-অঘোষ column-গুলোকে ধরেছি বালির মতো "fine".

তো এবারে "coarse" নিয়ে আমাদের চাপ নেই; এক জিনিস থাকবে। "Fine" নিয়ে চাপ আছে, কারণ ওটা নিয়েই কাজ করা হয়েছে, কারণ ওটা বের করতে গেলে প্রচুর on-off switch দেখতে হয়। ঘোষ হলে যেমন 1, অঘোষ হলে 0... আরও অনেক ব্যাপার।

এটা গেল input.

Part 1: তারাবিন্যাস এবারে বের করে fine position এর নম্বরটা কী। কীভাবে? ওইসব on-off switch-গুলো নিয়ে, boolean algebra-র মাধ্যমে। এই জায়গাটা সবচেয়ে জটিল আমার system-এ। এটা নিয়েই আমি দেখছি।

Part 2: তারাবিন্যাস এবারে বের করে character টা কী, বর্ণটা কী। Typescript এ আমি একটা lookup table বানিয়ে character টা পেলাম। Coarse আর fine দুটো মিশে বর্ণটা তৈরি করে। এই জিনিসটার জন্য আমি ছকটা দিয়ে দেবো, developer-রা programming language বা মাধ্যম বুঝে lookup table বানাবে।

আপনার জন্য Part 2 এর ছকটা জানা important যেকোনো হরফের জন্য। ছকটা আসলে বর্ণমালা, কিন্তু যেটাতে লোকের সুবিধা হবে, সেই অনুযায়ী বর্ণের স্থান খানিকটা অদলবদল হবে। যেমন একটা ঘরেই "ড" এবং "ড়" থাকবে, কিন্তু ওই একটা বিন্দুর জন্য একটা switch extra থাকবে।

যখন theory part টা নিয়ে কথা বলব, তখন আমরা সবসময় Part 1 টাকেই ধরব।


এটা প্রথমে আমি সার্কিটের জন্য ভেবে বানিয়েছিলাম, তাই boolean algebra চলে আসছে।

যেকোনো ব্রাহ্মী লিপিসমূহের থেকে হরফ (Brahmic Script) দিলে আপনি পাবেন একটা এমন machine যেটার ব্যবহার জানতে হলে আপনার নিজের ভাষার বর্ণমালাই যথেষ্ট।

তারাবিন্যাস একধরনের ধাঁচ; compact, learnable এবং fast কিবোর্ড বানানোর স্বার্থে একটি ধাঁচ। এই ধাঁচ দিয়ে আমি চারভাবে কিবোর্ড ভাবতে পেরেছি, তার মধ্যে দুভাবে কিবোর্ড বানিয়েছি।

৪টি ভাবনা হল:

১) Radio buttons: Website এ radio buttons use করে আমরা input দিচ্ছি। (কাজ করছে)

২) Steno layout: কিছুকিছু কিবোর্ডের বাটন ব্যবহার করে আমরা অনায়াসেই লিখতে পারব। তালব্য, অল্পপ্রাণ, মহাপ্রাণ - সবকিছুর জন্য একটা একটা করে কিবোর্ড বাটন। (কাজ করছে)

৩) Handwriting layout: ওইসব ইনপুট গুলো এবারে হবে gestures... যেমন গোল আঁকলে অল্পপ্রাণ। এটার জন্য specifically একজন biomechanics এর ব্যক্তির সঙ্গে কথা বলছি। (খাতায়-কলমে)

৪) Two-side layout (আমার ভাবনার limit): একদিকে সবকটা coarse buttons থাকবে - বর্গের শুরুর বর্ণগুলো বামদিকে, বর্গের ভিতরের বর্ণগুলো ডানদিকে। Drag এবং two-finger tap করার option থাকবে। (খাতায়-কলমে)

আরও layout ভাবা যায়, তবে আমার UI/UX এর লোকেদের হেল্প লাগবে।


আপাতত তামিল এর জন্য একটা ওয়েবসাইট আছে। তাদের layout টা, ওদের ছকটা, সত্যিই বানানো জটিল ছিল। তবে উত্তর ভারতের হরফ নিয়ে কাজ করলে খানিকক্ষণেই শেষ হয়ে যাবে।

তামিল এর পরে বাংলা ব্যঞ্জনবর্ণ ধরেছি; স্বরবর্ণ ও পরাশ্রয়ী বর্ণ ধরা হয়নি।

পরে ভাবছি সিলেটি হরফটা দেখব, কারণ ওটাও বেশ জটিল ছকে রাখা।

Thoughts? Leave a comment