For the impatient: download Estonian3.keylayout.zip
The Mac OS X version of Estonian keyboard layout and localized version found here, both lack the caret ^ symbol (in its usual place). Also I had an external HP usb keyboard, which again was incompatible with the internal keyboard (the ~ and | symbol keys were swapped). This was a big issue for me, because I often use both of them in scripts.
So, I turned to Ukelele and configured my own layouts.
First, download fresh copy of Ukele here and fire it up. When it asks if you would like to create an empty layout, select “copy of other keyboard layout” and choose the Estonian.keylayout from the Ukelele dmg under System keyboards/CentralEuropean.
Next press the Option (Alt) key and touble click the key where the ^ should go (without Option-modifier, bears ä).
Now comes the tricky part. You have to somehow conjure the caret symbol. Though several ways can do it (copy from web, change to other layouts, etc) the politically correct way of doing this is probably with the Character Palette which you can access from the layout selection menu on the Mac menubar (which, if you already don’t have it, can be enabled from System Preferences > International > Input Menu > Show input meny in menu bar)
Now, with the Character Palette open, type in the search field the Unicode codepoint of ^, which is 005E and select Unicode. This highlights the caret symbol. Now move the keyboard focus back to the Ukelele’s “Change the output for this key combination” dialog and double click the caret symbol in the Palette. Voila!
Next you have to rename the layout, so that you can identify it in system menus. Select menu Keyboard > Set Keyboard Name… and change the name to e.g Estonian2.
Also you may wish to change keyboard type (Keyboard > Set Keyboad Type…) to match your keyboard layout (and verify that all other keys are in their places). I set mine to Third party ISO keyboard.
Finally save the file to ~/Library/Keyboard Layouts/Estonian2.keylayout
You have to copy the flag icon from Ukelele dmg to the same folder, matching the keylayout name: Estonian2.incs
If you were only missing the ^ symbol, you are now done. I initially had problems with the external HP keyboard, so I had to create another layout with two keys swapped. But after I changed the HP keyboard to a new one I can use the same layout as with internal keyboard.
If you got this far without doing the thing yourself, just download the files from above and put them in the Keyboard Layouts folder and you are good to go.