While not really a writing program specifically, AutoHotKey is a program I use regularly while writing. It's a free, Windows only program published under a GNU license that was originally developed to create easy keyboard shortcuts, but can also be used to create macros and provide software automation. Living as close as I do too Quebec, though, my most frequent use case is to add the proper diacritics to words like "résumé," "garçon," and "café," as well as busting out the occasional Thorn (Þ) or Wynn (Ƿ) without having to Google them or (god forbid) drudge through Windows' built in Character Map.
The program can be downloaded HERE and it installs like most other programs. Unlike most other programs, however, it needs a script to actually do anything. This is just a list of instructions telling the program what to do and can be written in any text editor (even Notepad) and there are concise and easy to follow tutorials on how to create these scripts not only on their website, but included with the downloaded program as well. For those who don't feel like messing about with code, many scripts can be found online for free, or you can even borrow the one that I use HERE.
Once the program's been installed and you have your script put where you want it (I keep mine in the System32 folder for safekeeping) just right-click on the script file to bring up the contextual menu and hit "Run Script." if there's an error in the script AutoHotKeys will tell you, but if not you should now be able try it out.
If you're using the script I provided, then pressing the letter you want the accent on, plus the arrow key that the accent looks like it's going will provide that accent. For example: "a" plus "→" equals "á," "a" plus "↓" equals ä, and "a" plus "↑" equals "â." You can also make an "ã" in the same style by pressing the "`" key (because on my keyboard it's on the same key as the tilde) instead of an arrow key. As well as many others.
This script will have to be started every time the computer restarts for it to work. This can be done automatically using Windows' Task Scheduler. Start the Task Scheduler after finding it using the program search in the Start menu, and within Task Scheduler in a sidebar (or under Action in the Toolbar) there should be an option to "Create a Basic Task...." Click it and it will bring up a wizard to do this. First you'll need to provide a name and a description for your task. Then you'll need to provide a trigger. This is what specific event causes this task to execute. Since you'll probably want it running all the time, you might be tempted to tick the box next to "when the computer starts," but for some reason this wouldn't work for me. Instead I use "when I log on," and that seems to work without any problems, the only downside being that I can't use these special characters in my Windows log on name or password. Next, the action will have to be, "to start a program," and you'll then be required to direct the file browser to the script you're using. Click "next" and you'll then be shown all the options you've chosen, and if they're , click "finish". Now Windows should get AutoHotKeys up and running for you automatically every time you log on.
While it takes a bit of setting up, and maybe a bit of technical faffing about depending on your system, overall I've found AutoHotKey very useful and time saving in my own work. And writing my own script made me feel like even more of a hacker than that time I figured out how to use WinRar after it's trial period expired.