Try using xbindkeys and xdotool together. xbindkeys uses guile as an extension language, with guile functions bound to keyboard shortcuts to invoke xdotool to simulate inputs. It works well enough that I get annoyed every time I have to deal with AHK's weird scripting language.