1) KeyClone is the easiest solution. I personally use Maximizer (to fit all the windows on my displays) & AutoHotKey (key broadcasting) though - I set up my solution before I knew about KeyClone, and I'm happy with it. KeyClone looks MUCH easier for a non-tech person to use, since editing AHK requires a little learning of the script language, and Maximizer can be a little troublesome to set up the first time too.

2) I use the /script AcceptQuest() macro for accepting quests and just click in each window to talk to quest-givers/NPCs. You *should* be able to target the NPC by /target Party1target, then use the /script GetGossipActiveQuests(); macro to get the text speech for a quest you're ready to complete. Then use the /script AcceptQuest(); macro to complete it. The only problem I see is if you're given a choice of quest rewards, or there are multiple quests to turn in and there's an option of which one. SelectGossipActiveQuest(index) could solve the multiple quest issue. You could use GetQuestReward(index) to select the quest reward, but that's something you probably *don't* want to be done automatically for all the characters anyway.