This is a very strange and annoying bug. For a while I thought it was an error in my own code, but now that I tested it, I am sure that it is in fact a BYOND bug.
For some reason, macros that call verbs inherited through objects in the contents list behave differently than those that call verbs defined directly for the user's type.
Macros that call verbs inherited through contents act as if they are set to +REP, even if they are not, while macros that call the users own defined verbs function normally.
Numbered Steps to Reproduce Problem:
1. Compile and run this code:
obj/key/verb/a_down()
set hidden = 1
usr << "You pressed a."
mob
verb
z_down()
set hidden = 1
usr << "You pressed z."
Login()
..()
contents += new /obj/key
winset(usr, "a_down", "parent=Macro;name=a;command=a-down")
winset(usr, "z_down", "parent=Macro;name=z;command=z-down")
2. Try holding down both "a" and "z", and see how "a" repeats, and "z" doesn't.
Expected Results:
Macros that are not made to repeat, never repeat in any case.
Actual Results:
Macros that call verbs inherited through the contents list repeat whether you want them to or not.
Did the problem NOT occur in any earlier versions? If so, what was the last version that worked? (Visit http://www.byond.com/download/build to download old versions for testing.)
The last version that worked was 447.1028. Something broke right at 448.1029.
Workarounds:
Just avoid using any /obj verbs...
Do you mean both keys together? That would explain a ton about what's going on, as it could just be the key-repeat code is getting confused with two letter keys held down (perhaps for just your keyboard, perhaps generally).
The macro code is completely indifferent to the verb, so without the two-key combination I'm puzzled as to how the verb's origin could possibly matter.