This program is a lightweight text editor intended for writing text in other languages. Most word processors have a "Insert Symbol" option for inserting a character, but this process is too slow. It's true that if you do all of your typing in another language, you can set your operating system's language, but this will be a system-wide change and is not very customizable. In this program, on the other hand, it is simple to choose what keys create which characters.
It's useful for me when typing in Spanish because I can simply hit Alt-A to get an a with an accent, Alt-Shift-1 to get ¡, and define any other combination I want.
I also wrote a tool that will display the current keybindings in a visual and interactive way. This screen appears when you select Visualize Bindings from the Characters menu. If you press a modifier key like Shift or Alt, you'll see the characters that are created with those modifier keys pressed.
The program begins in Normal Mode, but you can press Control+L to enter Grave Accent mode. In this mode, typing a vowel like o will produce o with a grave accent. Press Control+Space to return to Normal mode. View the available modes for the current keymap by choosing List Modes from the Characters menu.
Edit the current keymap by choosing "Edit key bindings" from the Characters menu. (Changes take effect when the mode is chosen again from the Characters menu). Create a new map by creating a .py.js file in the keymaps directory.
Source code is available on GitHub here, released under the GPLv2. Run main.py, currently requires Windows and Python 2.5 or later.