I am originally from Bangladesh. I always loved to write in Bengali on my PC whenever possible. I really hated writing Bengali by using English character. However, I never trained my self on traditional Bengali Typing media (ie, Munir, Bijoy, Unijoy keyboard). As a matter of fact I hate them and I found them pretty difficult to follow as I am very used to with English keyboard. Earlier days, when unicode wasn't that famous I developped my own type face named "Sumon Bangla Font" which followed different keymaps (phonetical , for example, a for akar, A for oa, b for boa, almost close to proshikha but not exactly). However the true type fonts (non-Unicode) are no longer encouraged to use as Unicode became much more famous these days.
Now we all are familiar with unicode fonts. I think it is the best means of writing. Each language has it's own assigned code for it's all alphabets. I had used a lot of software that dose the job of writing bangla on the PC. Among all of them, I found AVRO KEYBOARD ( অভ্র কী-বোর্ড) is the best, specially the portable version.
Any one can download the portable Avro from this link, and just extract it to any portable media (SD cards, usb storage drive, etc) ant it will be ready to use. Avro may prompt you to install complex indic scripts (if it is not previously installed on your system), otherwise you don't have to install anything else. You can start it by double clicking on "Avro Keyboard.exe" and you are ready. Where ever you want to write in bangla, just point your mouse there and hit "F-12" keys on your keyboard and you will be writing bangla in a second. To switch back to english you again press "F-12" and you will be writing in english. It is good for all version of Windows. (Even on Vista, I was able to use it with intermittent program crash[no big deal]).
[ From here onward I will use some bengali letters, in case you don't see them for lack of unicode support on your pc , please view my post on "How to view unicode bangla on your PC" ]
The best part of Avro is it's very flexibla and gives user a lot of choices. One can even chose between traditional bangla keyboard that are previously existed (ie unijoy, bornona, National, etc). I always like the phonetic keyboard, as it automatically translate what ever I write in english letter to bengali. I can easily customise my own words. For example, if I want to write ভালো , without customize the auto correct dictionary I need to type "valO". But using the auto correct tool i made avro automatically write "ভালো" when I type "valo". I also had used avro auto correct tool to show many english word (that we usually use like bengali) to showed up correctly. For example if I type "driver", My avro (as I customized it) will output "ড্রাইভার". Customizing Avro auto correct option is very easy. All you need to do is right clicked on this icon:
A menu will appear like the following window:
From this menu click on Customize ovro keyboard. Then on the next window chose "Avro Phonetic..." After that click on "Auto correct entries". Then A window like this (Look at the screen shot bellow) will appear:
On this Auto correct window on the write hand side type what you want to type, for example "ktritoggota ", now on the right side type what you actually want avro to output on the screen " কৃতজ্ঞতা" (For which you actually need to type: " krritoggota" ) you may see the keyboard lay out to find out how the keys are mapped. After you are done you click on "save". From Next onward, when you type "kritoggota" ovro will show কৃতজ্ঞতা instead of ক্রিতজ্ঞতা .
Avro saves this correction in a file named "autodict.dct" in Avro Keyboard program folder. You may replaced this file with some one else's customized file. For example you can replace the autodict.dct file with my "autodict.dct" file which has already over 9000 customized word from here . After you replace the file you need to restart Avro software.
As of today, I personally think Avro is the best media to write Bengali on your Windows PC. However, Avro yet not available for linux, you may check on Avro's home page for more updated information.