A few afterthoughts...
The DFHack keybind limits makes choosing a sets of keys for map/text zooming a ugly issue, as DF uses so may keys that finding a set of binds that doesn't conflict with DF's keys within the DFHack keybind limits forces you to make non-esthetic choices.
I'm currently using shift-O and shift-P as was suggested earlier in the thread. This has side effects, as pulling a lever changes your map zoom (making a dirt road probably does too, though I've not tried it).
Thses keys do not auto-repeat in the TwbT/DFHack/DF combination, so holding them doesn't allow quickly changing map zoom level - it takes a bunch of keystrokes to change it much. Not sure if DF has these keys configured to not autorepeat or of DFHack is responsible for the lack of repeat - haven't looked. In any case, that's why I asked mifki to make the amount of zoom change/keystroke adjustable. He added twbt tilesize +<delta> | -<delta> to handle this.
Since DF natively supports the mousewheel for zooming everywhere, I felt remapping things so regular mousewheel for map zoom and Ctrl-mousewheel for text zoom would quickly be intuitive for many users. It would also be fairly easy to code. Much easier than having to create a full featured user defined keybinding system on his own. I doubt mifki will want to bite off that task.
That being said, it would still be easy to use mousewheel and/or a fixed known set of keys. The "[/]//{/}" set isn't a bad choice for a non-user settable fixed set of keys that doesn't conflict with DF.
While I'm speaking of the Win API, 'hooking' is a quite common technique and I'll be very surprised if the equivalent of this isn't available in OSX and *nix as well.
In windows terms you have to get the HWND of the target window to establish the hook on. Usually you can ask for it by the name of the window. Worst case takes enumerating the windows on the system to find it at initialization by means other than name.
Once you have it, the link I posted earlier shows how it's done - with code examples. I also should have mentioned that you don't need to pass any commands through DFHack console at all with this technique, you'll already be in your code with the necessary info to just call your own routines to act on input.