there's many types of macros.
but very simple autohotkey or similar software macro for keyhold is UNDETECTABLE.
AutoHotKey or these kind of programs in simple "press key x" DO NOT interact with any diablo gamefiles or executables or any diablo dll-s that are in memory directly.
they interact directly with the keyboard driver.
so if scritp says press key "1", it sends info directly to the keyboard driver and diablo executable take this a info as the keyboard driver sent it info about pressed key, not the script. today almost all of keyboards do 100% same thing at the keypress, they send digidal info to keyboard driver that forwards it to the application.
consider script as a non-physical keyboard, like onscreen keyboard.
the same thing is with scripting 1 keypress for 3 actions. diablo3 sees this as someone pressed 3 keys at the same time, not single key (again, info comes from the keyboard driver, and not AHK sending info to the d3 executable).
this is absolutely undetectable.
actually, if you're really paranoid: to have single key press for multiple action: you can do it physically. take apart your keyboard, short your FN,EB,DS key's circuit board (most keyboards have film based circuit boards) with some sort of lead pencil or something that passes electricity and screw it back together. now, if you press one of these 3 keys, keyboard will physicall press all 3 buttons (and send digital info to the driver). now tell me it's bannable :) how the hell can they detect it :D
the ones that are one step "farther": are timed pressed. what i mean, is that at the certain time or interval, script presses the key. for example, very typical cmwiz macro script is that if you press key X, it presses 1-2-3, but not at the same time, but for example in sequential order and may send them with little intervals. think about it like, you press key X, and this actually does send "key 1", "interval" (like 0,2sec), "key 2", "interval 0,1" sec, "key 3", "0,1 interval". Again, as the script does not actually interact with diablo files any way (it interacts with keyboard driver and system time), it is 100% undetectable. the only thing is that wardens may guess, that these intervals are very similar for very long time and can raise suspicions. this can be overcome with random interval delay. so when you press key X, script actually does press "key 1", random delay, "key 2", random delay, "key 3". and you can take it further to randomise keypresses, so not 1-2-3, but in any order.
but in reality simple "hold all keys" and interval-sequential macros perform the same way and step further actually does not give any advantages. in fact, if you're too generous with interval times, you can actually lose dps or freezing ability, because, if you hold keys, it activates the skill as soon as cooldown is down (affected only by game and system latency), but with intervals you can actually be little late. so hold all keys actually has the biggest performance.
now: anything further requires already intercting directly with dialbo3 game and this is detectable already. do not go this far or use at your own risk.
for example, if you really want to time cooldowns to perfection and do not like to hear "not enough AP" or "skill not ready" stuff, then you can make script read info about cooldowns. AFAIK, there is no easy direct read from memory way, but instead you need screen X,Y coordinates and reading specific colors. and script knows, if at coordinates x,y, screen color is RGB xxx,xxx,xxx (cooldown colors), then it will not send any keypress info, but if color at these coordinates changes to EGB yyy,yyy,yyy (skill ready), then it sends the keypress.
i do not encourage to use any of the ways, but just for your info.