My Script

 

Here's the script I use. I didn't write it from scratch; it's a modified version (with several bug fixes) of the script at http://www.dual-boxing.com/wiki/index.php/AutoHotKey
If you're not good with reading code don't worry, just skip to the bottom of the post and I'll explain what it does:

	ClonesPush(strKeys)

	{

	   global WowWinId1

	   global WowWinId2

	   global WowWinId3

	   global WowWinId4

	   global WowWinId5

	   IfWinNotActive, ahk_id %WowWinId1%

	      ControlSend, , %strKeys%, ahk_id %WowWinId1%

	   IfWinNotActive, ahk_id %WowWinId2%

	      ControlSend, , %strKeys%, ahk_id %WowWinId2%

	   IfWinNotActive, ahk_id %WowWinId3%

	      ControlSend, , %strKeys%, ahk_id %WowWinId3%

	   IfWinNotActive, ahk_id %WowWinId4%

	      ControlSend, , %strKeys%, ahk_id %WowWinId4%

	   IfWinNotActive, ahk_id %WowWinId5%

	      ControlSend, , %strKeys%, ahk_id %WowWinId5%

	}

	

	;Grab unique window ID's

	WinGet, WowWinId, List, World of Warcraft

	

	; *******************************

	; *** Only if WoW is in focus ***

	; *******************************

	#IfWinActive, World of Warcraft

	

	;*** Special Functions ***

	

	; *** Makes clones follow main ***

	^-::ClonesPush("{- down}{- up}")

	

	; *** Jump ***

	~Space::ClonesPush("{Space down}")

	~Space Up::ClonesPush("{Space up}")

	~x::ClonesPush("{x down}")

	~x Up::ClonesPush("{x up}")

	

	; *** Suspends HotKeys while typing on main ***

	~Enter::Suspend, Toggle

	~r::Suspend, On

	~/::Suspend, On

	~Escape::Suspend, Off

	

	; *******************

	; *** Hotbars 1-0 ***

	; *******************

	~1::ClonesPush("{1 down}{1 up}")

	~2::ClonesPush("{2 down}{2 up}")

	~3::ClonesPush("{3 down}{3 up}")

	~4::ClonesPush("{s down}")

	~4 Up::ClonesPush("{s up}")

	~5::ClonesPush("{5 down}{5 up}")

	~6::ClonesPush("{6 down}{6 up}")

	~7::ClonesPush("{7 down}{7 up}")

	~8::ClonesPush("{8 down}{8 up}")

	~9::ClonesPush("{9 down}{9 up}")

	~-::ClonesPush("{- down}{- up}")

	~=::ClonesPush("{= down}{= up}")

	

	; ***************************

	; *** Hotbars SHIFT(+) 1-0 ***

	; ***************************

	~+1::ClonesPush("{Shift down}{1 down}{1 up}{Shift up}")

	~+2::ClonesPush("{Shift down}{2 down}{2 up}{Shift up}")

	~+3::ClonesPush("{Shift down}{3 down}{3 up}{Shift up}")

	~+4::ClonesPush("{Shift down}{4 down}{4 up}{Shift up}")

	~+5::ClonesPush("{Shift down}{5 down}{5 up}{Shift up}")

	~+6::ClonesPush("{Shift down}{6 down}{6 up}{Shift up}")

	~+7::ClonesPush("{Shift down}{7 down}{7 up}{Shift up}")

	~+8::ClonesPush("{Shift down}{8 down}{8 up}{Shift up}")

	~+9::ClonesPush("{Shift down}{9 down}{9 up}{Shift up}")

	~+0::ClonesPush("{Shift down}{0 down}{0 up}{Shift up}")

	

	; **************************

	; *** Hotbars CTRL(^) 1-0 ***

	; **************************

	~^1::ClonesPush("{Ctrl down}{1 down}{1 up}{Ctrl up}")

	~^2::ClonesPush("{Ctrl down}{2 down}{2 up}{Ctrl up}")

	~^3::ClonesPush("{Ctrl down}{3 down}{3 up}{Ctrl up}")

	~^4::ClonesPush("{Ctrl down}{4 down}{4 up}{Ctrl up}")

	~^5::ClonesPush("{Ctrl down}{5 down}{5 up}{Ctrl up}")

	~^6::ClonesPush("{Ctrl down}{6 down}{6 up}{Ctrl up}")

	~^7::ClonesPush("{Ctrl down}{7 down}{7 up}{Ctrl up}")

	~^8::ClonesPush("{Ctrl down}{8 down}{8 up}{Ctrl up}")

	~^9::ClonesPush("{Ctrl down}{9 down}{9 up}{Ctrl up}")

	~^0::ClonesPush("{Ctrl down}{0 down}{0 up}{Ctrl up}")

	

	

	~F1::ClonesPush("{F1 down}{F1 up}")

	~F2::ClonesPush("{F2 down}{F2 up}")

	~F3::ClonesPush("{F3 down}{F3 up}")

	~F4::ClonesPush("{F4 down}{F4 up}")

	~F5::ClonesPush("{F5 down}{F5 up}")

	~F6::ClonesPush("{F6 down}{F6 up}")

	~F7::ClonesPush("{F7 down}{F7 up}")

	~F8::ClonesPush("{F8 down}{F8 up}")

	~F9::ClonesPush("{F9 down}{F9 up}")

	~F10::ClonesPush("{F10 down}{F10 up}")

	~F11::ClonesPush("{F11 down}{F11 up}")

	~F12::ClonesPush("{F12 down}{F12 up}")

	 



OK, so if you skipped down here without reading, here's a brief summary of what it does:

  • Firstly it maps the number keys and the F-keys on my keyboard to every WoW window that I have open. (I could have been more specific, and write it so that specific numbers get sent to specific windows, but it's easier to map everything and leave gaps in my alt's action bars than it is to write exceptions into the script.)
  • Secondly, it maps the jump/ascend and descend buttons to every window. (As one thing /follow doesn't do is make a toon jump.)
  • Thirdly, it also maps Ctrl-1, Ctrl-2, and so on to every window. (Only reason for this is so I can call my Hunter's pet back without needing to alt-tab to his window.)
  • Forth and finally, it gives me a key that will press the "s" key (i.e. walk-backwards) on window, except for the window that's currently active. (Two reasons for this. One, it's a nice way to quickly stop my alts from following my tank if he's about to walk somewhere dangerous. Two, it's a good way to push my alts back from the tank if they get too close to the fight.)